instar 1.3.386 → 1.3.387
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/README.md +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +57 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/types.d.ts +10 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/A2ARedeliverySentinel.d.ts +82 -0
- package/dist/monitoring/A2ARedeliverySentinel.d.ts.map +1 -0
- package/dist/monitoring/A2ARedeliverySentinel.js +143 -0
- package/dist/monitoring/A2ARedeliverySentinel.js.map +1 -0
- package/dist/threadline/ListenerSessionManager.d.ts +15 -0
- package/dist/threadline/ListenerSessionManager.d.ts.map +1 -1
- package/dist/threadline/ListenerSessionManager.js +41 -0
- package/dist/threadline/ListenerSessionManager.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.387.md +25 -0
- package/upgrades/side-effects/a2a-redelivery-escalation.md +112 -0
package/README.md
CHANGED
|
@@ -136,7 +136,7 @@ An agent that forgets what you discussed yesterday, doesn't recognize someone it
|
|
|
136
136
|
| **Multi-Machine** | Ed25519/X25519 crypto identity, encrypted sync, automatic failover | [→](https://instar.sh/features/multi-machine/) |
|
|
137
137
|
| **Serendipity Protocol** | Sub-agents capture out-of-scope discoveries without breaking focus. HMAC-signed, secret-scanned | [→](https://instar.sh/features/serendipity/) |
|
|
138
138
|
| **Threadline Protocol** | Agent-to-agent conversations with canonical identity, three-layer trust model, authorization policy, Ed25519 invitations, Sybil protection, MoltBridge network discovery, rich agent profiles (auto-compiled from agent data with human review gate), discovery waterfall, message security, tamper-proof audit logging, framework-agnostic interop, persistent listener daemon (always-on relay connection, pipe-mode sessions, sub-30s cross-machine failover), eleven MCP tools (seven core + four registry-conditional). 80 modules, roughly 3,800 test cases across 74 dedicated test files plus 125 cross-cutting | [→](https://instar.sh/features/threadline/) |
|
|
139
|
-
| **A2A Delivery Health** | Durable agent-to-agent delivery tracking (`threadline/A2ADeliveryTracker`) so a message between agents never silently dies out — a reply on the thread is the acknowledgement, and `GET /threadline/peers/health` answers "is my channel to this peer alive?" as a lookup, not a guess. Recording-only; never gates a send | [→](https://instar.sh/features/a2a-delivery-health/) |
|
|
139
|
+
| **A2A Delivery Health** | Durable agent-to-agent delivery tracking (`threadline/A2ADeliveryTracker`) so a message between agents never silently dies out — a reply on the thread is the acknowledgement, and `GET /threadline/peers/health` answers "is my channel to this peer alive?" as a lookup, not a guess. The `monitoring/A2ARedeliverySentinel` adds active recovery: re-send unacknowledged messages with backoff, then one aggregated escalation per dark peer. Recording-only; never gates a send | [→](https://instar.sh/features/a2a-delivery-health/) |
|
|
140
140
|
| **Self-Healing** | LLM-powered stall detection, session recovery, promise tracking | [→](https://instar.sh/features/self-healing/) |
|
|
141
141
|
| **AutoUpdater** | Built-in update engine. Checks npm, auto-applies, self-restarts | [→](https://instar.sh/features/autoupdater/) |
|
|
142
142
|
| **Build Pipeline** | `/build` skill with worktree isolation, 6-phase pipeline, quality gates, stop-hook enforcement | |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA6JtD,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAs4BD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,GAC/F,IAAI,CAyUN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA6JtD,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAs4BD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,GAC/F,IAAI,CAyUN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuzTtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
|
package/dist/commands/server.js
CHANGED
|
@@ -8819,6 +8819,63 @@ export async function startServer(options) {
|
|
|
8819
8819
|
catch (err) {
|
|
8820
8820
|
console.warn('[CollaborationRedrive] init failed:', err.message);
|
|
8821
8821
|
}
|
|
8822
|
+
// ── A2ARedeliverySentinel ─────────────────────────────────────────
|
|
8823
|
+
// The active-recovery layer of "communications never just die out"
|
|
8824
|
+
// (A2A-DURABLE-DELIVERY-SPEC §4, #939, CMT-1143, PR2). Sweeps the delivery
|
|
8825
|
+
// tracker's overdue work-list: re-sends unacknowledged A2A messages with
|
|
8826
|
+
// backoff (body recovered from the canonical outbox), and after the attempt
|
|
8827
|
+
// cap raises ONE aggregated attention item per dark peer. Recording/sending
|
|
8828
|
+
// only — no blocking authority. Ships OFF (it re-sends + escalates).
|
|
8829
|
+
try {
|
|
8830
|
+
const a2aDelivCfg = config.monitoring?.a2aRedelivery ?? {};
|
|
8831
|
+
if (a2aDelivCfg.enabled && a2aDeliveryTracker) {
|
|
8832
|
+
const { A2ARedeliverySentinel, DEFAULT_A2A_REDELIVERY_CONFIG } = await import('../monitoring/A2ARedeliverySentinel.js');
|
|
8833
|
+
const a2aRedeliverySentinel = new A2ARedeliverySentinel({
|
|
8834
|
+
tracker: a2aDeliveryTracker,
|
|
8835
|
+
// Re-send: recover the body from the canonical outbox by messageId,
|
|
8836
|
+
// then re-emit via the relay. Body missing → return false (the
|
|
8837
|
+
// sentinel leaves it awaiting-ack and escalates at the cap, never
|
|
8838
|
+
// fabricating a send).
|
|
8839
|
+
redeliver: (threadlineRelayClient && listenerManager)
|
|
8840
|
+
? (entry) => {
|
|
8841
|
+
const stored = listenerManager.readCanonicalOutboxEntry(entry.messageId);
|
|
8842
|
+
if (!stored)
|
|
8843
|
+
return false;
|
|
8844
|
+
threadlineRelayClient.sendAuto(entry.peerFp, stored.text, entry.threadId ?? stored.threadId);
|
|
8845
|
+
return true;
|
|
8846
|
+
}
|
|
8847
|
+
: undefined,
|
|
8848
|
+
raiseAttention: telegram
|
|
8849
|
+
? async (item) => {
|
|
8850
|
+
const priorityMap = {
|
|
8851
|
+
high: 'HIGH', medium: 'NORMAL', low: 'LOW',
|
|
8852
|
+
};
|
|
8853
|
+
return telegram.createAttentionItem({
|
|
8854
|
+
id: `a2a-redelivery-${Date.now()}`,
|
|
8855
|
+
title: item.title,
|
|
8856
|
+
summary: item.body.slice(0, 160),
|
|
8857
|
+
description: item.body,
|
|
8858
|
+
category: 'a2a-redelivery',
|
|
8859
|
+
priority: priorityMap[item.priority ?? 'medium'] ?? 'NORMAL',
|
|
8860
|
+
sourceContext: item.source ?? 'a2a-redelivery',
|
|
8861
|
+
});
|
|
8862
|
+
}
|
|
8863
|
+
: undefined,
|
|
8864
|
+
}, { ...DEFAULT_A2A_REDELIVERY_CONFIG, ...a2aDelivCfg, enabled: true });
|
|
8865
|
+
a2aRedeliverySentinel.start();
|
|
8866
|
+
globalThis.__instarA2ARedeliverySentinel = a2aRedeliverySentinel;
|
|
8867
|
+
console.log(pc.green(' A2ARedeliverySentinel: armed (A2A redelivery + dark-peer escalation)'));
|
|
8868
|
+
}
|
|
8869
|
+
else {
|
|
8870
|
+
console.log(pc.dim(' A2ARedeliverySentinel: disabled (monitoring.a2aRedelivery.enabled=false; the ship-OFF default)'));
|
|
8871
|
+
}
|
|
8872
|
+
}
|
|
8873
|
+
catch (err) {
|
|
8874
|
+
// @silent-fallback-ok: cascade-isolation — a sentinel init failure must never
|
|
8875
|
+
// crash server boot (mirrors the CollaborationRedrive init block above). Logged;
|
|
8876
|
+
// the feature simply stays inert.
|
|
8877
|
+
console.warn('[A2ARedelivery] init failed:', err.message);
|
|
8878
|
+
}
|
|
8822
8879
|
// Register feature-discovery probe for self-knowledge tree (Phase 4: Agent Integration)
|
|
8823
8880
|
if (selfKnowledgeTree && featureRegistry) {
|
|
8824
8881
|
selfKnowledgeTree.probes.register('feature-discovery', async () => {
|