@agent-relay/daemon 0.1.0

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 (109) hide show
  1. package/dist/agent-manager.d.ts +134 -0
  2. package/dist/agent-manager.d.ts.map +1 -0
  3. package/dist/agent-manager.js +578 -0
  4. package/dist/agent-manager.js.map +1 -0
  5. package/dist/agent-registry.d.ts +99 -0
  6. package/dist/agent-registry.d.ts.map +1 -0
  7. package/dist/agent-registry.js +213 -0
  8. package/dist/agent-registry.js.map +1 -0
  9. package/dist/agent-signing.d.ts +158 -0
  10. package/dist/agent-signing.d.ts.map +1 -0
  11. package/dist/agent-signing.js +523 -0
  12. package/dist/agent-signing.js.map +1 -0
  13. package/dist/api.d.ts +106 -0
  14. package/dist/api.d.ts.map +1 -0
  15. package/dist/api.js +876 -0
  16. package/dist/api.js.map +1 -0
  17. package/dist/auth.d.ts +94 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +197 -0
  20. package/dist/auth.js.map +1 -0
  21. package/dist/channel-membership-store.d.ts +55 -0
  22. package/dist/channel-membership-store.d.ts.map +1 -0
  23. package/dist/channel-membership-store.js +176 -0
  24. package/dist/channel-membership-store.js.map +1 -0
  25. package/dist/cli-auth.d.ts +89 -0
  26. package/dist/cli-auth.d.ts.map +1 -0
  27. package/dist/cli-auth.js +792 -0
  28. package/dist/cli-auth.js.map +1 -0
  29. package/dist/cloud-sync.d.ts +150 -0
  30. package/dist/cloud-sync.d.ts.map +1 -0
  31. package/dist/cloud-sync.js +446 -0
  32. package/dist/cloud-sync.js.map +1 -0
  33. package/dist/connection.d.ts +130 -0
  34. package/dist/connection.d.ts.map +1 -0
  35. package/dist/connection.js +438 -0
  36. package/dist/connection.js.map +1 -0
  37. package/dist/consensus-integration.d.ts +167 -0
  38. package/dist/consensus-integration.d.ts.map +1 -0
  39. package/dist/consensus-integration.js +371 -0
  40. package/dist/consensus-integration.js.map +1 -0
  41. package/dist/consensus.d.ts +271 -0
  42. package/dist/consensus.d.ts.map +1 -0
  43. package/dist/consensus.js +632 -0
  44. package/dist/consensus.js.map +1 -0
  45. package/dist/delivery-tracker.d.ts +34 -0
  46. package/dist/delivery-tracker.d.ts.map +1 -0
  47. package/dist/delivery-tracker.js +104 -0
  48. package/dist/delivery-tracker.js.map +1 -0
  49. package/dist/enhanced-features.d.ts +118 -0
  50. package/dist/enhanced-features.d.ts.map +1 -0
  51. package/dist/enhanced-features.js +176 -0
  52. package/dist/enhanced-features.js.map +1 -0
  53. package/dist/index.d.ts +31 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +37 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/migrations/index.d.ts +73 -0
  58. package/dist/migrations/index.d.ts.map +1 -0
  59. package/dist/migrations/index.js +241 -0
  60. package/dist/migrations/index.js.map +1 -0
  61. package/dist/orchestrator.d.ts +217 -0
  62. package/dist/orchestrator.d.ts.map +1 -0
  63. package/dist/orchestrator.js +1143 -0
  64. package/dist/orchestrator.js.map +1 -0
  65. package/dist/rate-limiter.d.ts +68 -0
  66. package/dist/rate-limiter.d.ts.map +1 -0
  67. package/dist/rate-limiter.js +130 -0
  68. package/dist/rate-limiter.js.map +1 -0
  69. package/dist/registry.d.ts +9 -0
  70. package/dist/registry.d.ts.map +1 -0
  71. package/dist/registry.js +9 -0
  72. package/dist/registry.js.map +1 -0
  73. package/dist/relay-ledger.d.ts +261 -0
  74. package/dist/relay-ledger.d.ts.map +1 -0
  75. package/dist/relay-ledger.js +532 -0
  76. package/dist/relay-ledger.js.map +1 -0
  77. package/dist/relay-watchdog.d.ts +125 -0
  78. package/dist/relay-watchdog.d.ts.map +1 -0
  79. package/dist/relay-watchdog.js +611 -0
  80. package/dist/relay-watchdog.js.map +1 -0
  81. package/dist/repo-manager.d.ts +116 -0
  82. package/dist/repo-manager.d.ts.map +1 -0
  83. package/dist/repo-manager.js +384 -0
  84. package/dist/repo-manager.js.map +1 -0
  85. package/dist/router.d.ts +370 -0
  86. package/dist/router.d.ts.map +1 -0
  87. package/dist/router.js +1437 -0
  88. package/dist/router.js.map +1 -0
  89. package/dist/server.d.ts +174 -0
  90. package/dist/server.d.ts.map +1 -0
  91. package/dist/server.js +1001 -0
  92. package/dist/server.js.map +1 -0
  93. package/dist/spawn-manager.d.ts +78 -0
  94. package/dist/spawn-manager.d.ts.map +1 -0
  95. package/dist/spawn-manager.js +165 -0
  96. package/dist/spawn-manager.js.map +1 -0
  97. package/dist/sync-queue.d.ts +116 -0
  98. package/dist/sync-queue.d.ts.map +1 -0
  99. package/dist/sync-queue.js +361 -0
  100. package/dist/sync-queue.js.map +1 -0
  101. package/dist/types.d.ts +133 -0
  102. package/dist/types.d.ts.map +1 -0
  103. package/dist/types.js +6 -0
  104. package/dist/types.js.map +1 -0
  105. package/dist/workspace-manager.d.ts +80 -0
  106. package/dist/workspace-manager.d.ts.map +1 -0
  107. package/dist/workspace-manager.js +314 -0
  108. package/dist/workspace-manager.js.map +1 -0
  109. package/package.json +52 -0
@@ -0,0 +1,34 @@
1
+ import type { DeliverEnvelope, AckPayload, Envelope } from '@agent-relay/protocol/types';
2
+ import type { StorageAdapter } from '@agent-relay/storage/adapter';
3
+ export interface DeliveryReliabilityOptions {
4
+ /** How long to wait for an ACK before retrying (ms) */
5
+ ackTimeoutMs: number;
6
+ /** Maximum attempts (initial send counts as attempt 1) */
7
+ maxAttempts: number;
8
+ /** How long to keep retrying before dropping (ms) */
9
+ deliveryTtlMs: number;
10
+ }
11
+ export declare const DEFAULT_DELIVERY_OPTIONS: DeliveryReliabilityOptions;
12
+ export interface DeliveryTrackerConnection {
13
+ id: string;
14
+ send(envelope: DeliverEnvelope): boolean;
15
+ }
16
+ export declare class DeliveryTracker {
17
+ private pendingDeliveries;
18
+ private deliveryOptions;
19
+ private storage?;
20
+ private getConnection;
21
+ constructor(options: {
22
+ storage?: StorageAdapter;
23
+ delivery?: Partial<DeliveryReliabilityOptions>;
24
+ getConnection: (id: string) => DeliveryTrackerConnection | undefined;
25
+ });
26
+ get pendingCount(): number;
27
+ track(target: DeliveryTrackerConnection, deliver: DeliverEnvelope): void;
28
+ handleAck(connectionId: string, ackId: string): void;
29
+ clearPendingForConnection(connectionId: string): void;
30
+ private scheduleRetry;
31
+ private markFailed;
32
+ }
33
+ export type AckEnvelope = Envelope<AckPayload>;
34
+ //# sourceMappingURL=delivery-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-tracker.d.ts","sourceRoot":"","sources":["../src/delivery-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,MAAM,WAAW,0BAA0B;IACzC,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,wBAAwB,EAAE,0BAItC,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC;CAC1C;AAUD,qBAAa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAA2C;IACpE,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,aAAa,CAAwD;gBAEjE,OAAO,EAAE;QACnB,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAC/C,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,yBAAyB,GAAG,SAAS,CAAC;KACtE;IAMD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,KAAK,CAAC,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAYxE,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBpD,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IASrD,OAAO,CAAC,aAAa;IAyCrB,OAAO,CAAC,UAAU;CAQnB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { routerLog } from '@agent-relay/utils/logger';
2
+ export const DEFAULT_DELIVERY_OPTIONS = {
3
+ ackTimeoutMs: 5000,
4
+ maxAttempts: 5,
5
+ deliveryTtlMs: 60_000,
6
+ };
7
+ export class DeliveryTracker {
8
+ pendingDeliveries = new Map();
9
+ deliveryOptions;
10
+ storage;
11
+ getConnection;
12
+ constructor(options) {
13
+ this.storage = options.storage;
14
+ this.deliveryOptions = { ...DEFAULT_DELIVERY_OPTIONS, ...options.delivery };
15
+ this.getConnection = options.getConnection;
16
+ }
17
+ get pendingCount() {
18
+ return this.pendingDeliveries.size;
19
+ }
20
+ track(target, deliver) {
21
+ const pending = {
22
+ envelope: deliver,
23
+ connectionId: target.id,
24
+ attempts: 1,
25
+ firstSentAt: Date.now(),
26
+ };
27
+ pending.timer = this.scheduleRetry(deliver.id);
28
+ this.pendingDeliveries.set(deliver.id, pending);
29
+ }
30
+ handleAck(connectionId, ackId) {
31
+ const pending = this.pendingDeliveries.get(ackId);
32
+ if (!pending)
33
+ return;
34
+ // Only accept ACKs from the same connection that received the deliver
35
+ if (pending.connectionId !== connectionId)
36
+ return;
37
+ if (pending.timer) {
38
+ clearTimeout(pending.timer);
39
+ }
40
+ this.pendingDeliveries.delete(ackId);
41
+ const statusUpdate = this.storage?.updateMessageStatus?.(ackId, 'acked');
42
+ if (statusUpdate instanceof Promise) {
43
+ statusUpdate.catch(err => {
44
+ routerLog.error('Failed to record ACK status', { error: String(err) });
45
+ });
46
+ }
47
+ routerLog.debug(`ACK received for ${ackId}`);
48
+ }
49
+ clearPendingForConnection(connectionId) {
50
+ for (const [id, pending] of this.pendingDeliveries.entries()) {
51
+ if (pending.connectionId === connectionId) {
52
+ if (pending.timer)
53
+ clearTimeout(pending.timer);
54
+ this.pendingDeliveries.delete(id);
55
+ }
56
+ }
57
+ }
58
+ scheduleRetry(deliverId) {
59
+ return setTimeout(() => {
60
+ const pending = this.pendingDeliveries.get(deliverId);
61
+ if (!pending)
62
+ return;
63
+ const now = Date.now();
64
+ const elapsed = now - pending.firstSentAt;
65
+ if (elapsed > this.deliveryOptions.deliveryTtlMs) {
66
+ routerLog.warn(`Dropping ${deliverId} after TTL`, { ttlMs: this.deliveryOptions.deliveryTtlMs });
67
+ this.pendingDeliveries.delete(deliverId);
68
+ this.markFailed(deliverId);
69
+ return;
70
+ }
71
+ if (pending.attempts >= this.deliveryOptions.maxAttempts) {
72
+ routerLog.warn(`Dropping ${deliverId} after max attempts`, { maxAttempts: this.deliveryOptions.maxAttempts });
73
+ this.pendingDeliveries.delete(deliverId);
74
+ this.markFailed(deliverId);
75
+ return;
76
+ }
77
+ const target = this.getConnection(pending.connectionId);
78
+ if (!target) {
79
+ routerLog.warn(`Dropping ${deliverId} - connection unavailable`);
80
+ this.pendingDeliveries.delete(deliverId);
81
+ this.markFailed(deliverId);
82
+ return;
83
+ }
84
+ pending.attempts++;
85
+ const sent = target.send(pending.envelope);
86
+ if (!sent) {
87
+ routerLog.warn(`Retry failed for ${deliverId}`, { attempt: pending.attempts });
88
+ }
89
+ else {
90
+ routerLog.debug(`Retried ${deliverId}`, { attempt: pending.attempts });
91
+ }
92
+ pending.timer = this.scheduleRetry(deliverId);
93
+ }, this.deliveryOptions.ackTimeoutMs);
94
+ }
95
+ markFailed(deliverId) {
96
+ const statusUpdate = this.storage?.updateMessageStatus?.(deliverId, 'failed');
97
+ if (statusUpdate instanceof Promise) {
98
+ statusUpdate.catch(err => {
99
+ routerLog.error(`Failed to update status for ${deliverId}`, { error: String(err) });
100
+ });
101
+ }
102
+ }
103
+ }
104
+ //# sourceMappingURL=delivery-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-tracker.js","sourceRoot":"","sources":["../src/delivery-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Enhanced Features Integration Module
3
+ *
4
+ * Wires together the new performance and reliability features:
5
+ * - Precompiled regex patterns
6
+ * - Agent authentication with signing
7
+ * - Dead Letter Queue
8
+ * - Context compaction
9
+ * - Consensus mechanism
10
+ *
11
+ * This module provides a unified interface for integrating
12
+ * these features into the existing daemon and router.
13
+ */
14
+ import type { Database as BetterSqlite3Database } from 'better-sqlite3';
15
+ import type { Pool as PgPool } from 'pg';
16
+ import { getCompiledPatterns, isInstructionalTextFast, isPlaceholderTargetFast, stripAnsiFast, StaticPatterns } from '@agent-relay/utils/precompiled-patterns';
17
+ import { AgentSigningManager, loadSigningConfig, attachSignature, extractSignature, type AgentSigningConfig, type SignedMessage } from './agent-signing.js';
18
+ import { SQLiteDLQAdapter, PostgresDLQAdapter, InMemoryDLQAdapter, createDLQAdapter, DEFAULT_DLQ_CONFIG, type DLQStorageAdapter, type DLQConfig, type DeadLetter, type DLQStats } from '@agent-relay/storage/dlq-adapter';
19
+ import { ContextCompactor, createContextCompactor, estimateTokens, estimateContextTokens, formatTokenCount, type Message, type CompactionConfig, type CompactionResult } from '@agent-relay/memory';
20
+ import { ConsensusEngine, createConsensusEngine, formatProposalMessage, parseVoteCommand, formatResultMessage, type Proposal, type ConsensusResult, type ConsensusConfig, type VoteValue } from './consensus.js';
21
+ export interface EnhancedFeaturesConfig {
22
+ /** Pattern matching configuration */
23
+ patterns?: {
24
+ relayPrefix?: string;
25
+ thinkingPrefix?: string;
26
+ };
27
+ /** Signing configuration (or path to config file) */
28
+ signing?: Partial<AgentSigningConfig> | string;
29
+ /** DLQ configuration */
30
+ dlq?: Partial<DLQConfig> & {
31
+ /** Storage type */
32
+ type?: 'sqlite' | 'postgres' | 'memory';
33
+ /** SQLite database (if type is sqlite) */
34
+ sqlite?: BetterSqlite3Database;
35
+ /** PostgreSQL pool (if type is postgres) */
36
+ postgres?: PgPool;
37
+ };
38
+ /** Context compaction configuration */
39
+ compaction?: Partial<CompactionConfig>;
40
+ /** Consensus configuration */
41
+ consensus?: Partial<ConsensusConfig>;
42
+ }
43
+ export interface EnhancedFeatures {
44
+ /** Precompiled pattern matching */
45
+ patterns: {
46
+ compiled: ReturnType<typeof getCompiledPatterns>;
47
+ isInstructionalText: typeof isInstructionalTextFast;
48
+ isPlaceholderTarget: typeof isPlaceholderTargetFast;
49
+ stripAnsi: typeof stripAnsiFast;
50
+ static: typeof StaticPatterns;
51
+ };
52
+ /** Agent signing manager */
53
+ signing: AgentSigningManager;
54
+ /** Dead Letter Queue */
55
+ dlq: DLQStorageAdapter;
56
+ /** Context compactor */
57
+ compaction: ContextCompactor;
58
+ /** Consensus engine */
59
+ consensus: ConsensusEngine;
60
+ /** Cleanup function */
61
+ cleanup: () => Promise<void>;
62
+ }
63
+ /**
64
+ * Initialize all enhanced features.
65
+ */
66
+ export declare function initEnhancedFeatures(config?: EnhancedFeaturesConfig): Promise<EnhancedFeatures>;
67
+ /**
68
+ * Handle failed message delivery by adding to DLQ.
69
+ */
70
+ export declare function handleDeliveryFailure(dlq: DLQStorageAdapter, envelope: {
71
+ id: string;
72
+ from: string;
73
+ to: string;
74
+ topic?: string;
75
+ payload: {
76
+ kind: string;
77
+ body: string;
78
+ data?: Record<string, unknown>;
79
+ thread?: string;
80
+ };
81
+ ts: number;
82
+ }, reason: 'max_retries_exceeded' | 'ttl_expired' | 'connection_lost' | 'target_not_found', attemptCount: number, errorMessage?: string): Promise<DeadLetter>;
83
+ /**
84
+ * Sign an outgoing envelope if signing is enabled.
85
+ */
86
+ export declare function signEnvelope<T extends Record<string, unknown>>(signing: AgentSigningManager, envelope: T, agentName: string): T;
87
+ /**
88
+ * Verify an incoming envelope signature.
89
+ */
90
+ export declare function verifyEnvelope(signing: AgentSigningManager, envelope: Record<string, unknown>): {
91
+ valid: boolean;
92
+ error?: string;
93
+ };
94
+ /**
95
+ * Process a potential vote command from a relay message.
96
+ */
97
+ export declare function processVoteMessage(consensus: ConsensusEngine, from: string, body: string): {
98
+ processed: boolean;
99
+ result?: ReturnType<ConsensusEngine['vote']>;
100
+ };
101
+ /**
102
+ * Create a proposal and format it for broadcast.
103
+ */
104
+ export declare function createAndBroadcastProposal(consensus: ConsensusEngine, options: Parameters<ConsensusEngine['createProposal']>[0]): {
105
+ proposal: Proposal;
106
+ message: string;
107
+ };
108
+ /**
109
+ * Check if context needs compaction and compact if necessary.
110
+ */
111
+ export declare function manageContext(compactor: ContextCompactor, messages: Message[]): {
112
+ messages: Message[];
113
+ compacted: boolean;
114
+ result?: CompactionResult;
115
+ budget: ReturnType<ContextCompactor['getTokenBudget']>;
116
+ };
117
+ export { AgentSigningManager, loadSigningConfig, attachSignature, extractSignature, type AgentSigningConfig, type SignedMessage, SQLiteDLQAdapter, PostgresDLQAdapter, InMemoryDLQAdapter, createDLQAdapter, DEFAULT_DLQ_CONFIG, type DLQStorageAdapter, type DLQConfig, type DeadLetter, type DLQStats, ContextCompactor, createContextCompactor, estimateTokens, estimateContextTokens, formatTokenCount, type Message, type CompactionConfig, type CompactionResult, ConsensusEngine, createConsensusEngine, formatProposalMessage, parseVoteCommand, formatResultMessage, type Proposal, type ConsensusResult, type ConsensusConfig, type VoteValue, };
118
+ //# sourceMappingURL=enhanced-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-features.d.ts","sourceRoot":"","sources":["../src/enhanced-features.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Enhanced Features Integration Module
3
+ *
4
+ * Wires together the new performance and reliability features:
5
+ * - Precompiled regex patterns
6
+ * - Agent authentication with signing
7
+ * - Dead Letter Queue
8
+ * - Context compaction
9
+ * - Consensus mechanism
10
+ *
11
+ * This module provides a unified interface for integrating
12
+ * these features into the existing daemon and router.
13
+ */
14
+ // Import new modules
15
+ import { getCompiledPatterns, isInstructionalTextFast, isPlaceholderTargetFast, stripAnsiFast, StaticPatterns, } from '@agent-relay/utils/precompiled-patterns';
16
+ import { AgentSigningManager, loadSigningConfig, attachSignature, extractSignature, } from './agent-signing.js';
17
+ import { SQLiteDLQAdapter, PostgresDLQAdapter, InMemoryDLQAdapter, createDLQAdapter, DEFAULT_DLQ_CONFIG, } from '@agent-relay/storage/dlq-adapter';
18
+ import { ContextCompactor, createContextCompactor, estimateTokens, estimateContextTokens, formatTokenCount, } from '@agent-relay/memory';
19
+ import { ConsensusEngine, createConsensusEngine, formatProposalMessage, parseVoteCommand, formatResultMessage, } from './consensus.js';
20
+ // =============================================================================
21
+ // Factory Function
22
+ // =============================================================================
23
+ /**
24
+ * Initialize all enhanced features.
25
+ */
26
+ export async function initEnhancedFeatures(config = {}) {
27
+ // Initialize pattern matching
28
+ const patterns = {
29
+ compiled: getCompiledPatterns(config.patterns?.relayPrefix ?? '->relay:', config.patterns?.thinkingPrefix ?? '->thinking:'),
30
+ isInstructionalText: isInstructionalTextFast,
31
+ isPlaceholderTarget: isPlaceholderTargetFast,
32
+ stripAnsi: stripAnsiFast,
33
+ static: StaticPatterns,
34
+ };
35
+ // Initialize signing
36
+ const signingConfig = typeof config.signing === 'string'
37
+ ? loadSigningConfig(config.signing)
38
+ : { ...loadSigningConfig(), ...config.signing };
39
+ const signing = new AgentSigningManager(signingConfig);
40
+ // Initialize DLQ
41
+ let dlq;
42
+ const dlqConfig = config.dlq ?? {};
43
+ if (dlqConfig.type === 'postgres' && dlqConfig.postgres) {
44
+ dlq = new PostgresDLQAdapter(dlqConfig.postgres);
45
+ }
46
+ else if (dlqConfig.type === 'sqlite' && dlqConfig.sqlite) {
47
+ dlq = new SQLiteDLQAdapter(dlqConfig.sqlite);
48
+ }
49
+ else if (dlqConfig.type === 'memory' || (!dlqConfig.sqlite && !dlqConfig.postgres)) {
50
+ dlq = new InMemoryDLQAdapter();
51
+ }
52
+ else {
53
+ dlq = new InMemoryDLQAdapter();
54
+ }
55
+ await dlq.init();
56
+ // Initialize context compaction
57
+ const compaction = createContextCompactor(config.compaction);
58
+ // Initialize consensus
59
+ const consensus = createConsensusEngine(config.consensus);
60
+ // Cleanup function
61
+ const cleanup = async () => {
62
+ await dlq.close();
63
+ consensus.cleanup();
64
+ };
65
+ return {
66
+ patterns,
67
+ signing,
68
+ dlq,
69
+ compaction,
70
+ consensus,
71
+ cleanup,
72
+ };
73
+ }
74
+ // =============================================================================
75
+ // Router Integration Helpers
76
+ // =============================================================================
77
+ /**
78
+ * Handle failed message delivery by adding to DLQ.
79
+ */
80
+ export async function handleDeliveryFailure(dlq, envelope, reason, attemptCount, errorMessage) {
81
+ return dlq.add(envelope.id, {
82
+ from: envelope.from,
83
+ to: envelope.to,
84
+ topic: envelope.topic,
85
+ kind: envelope.payload.kind,
86
+ body: envelope.payload.body,
87
+ data: envelope.payload.data,
88
+ thread: envelope.payload.thread,
89
+ ts: envelope.ts,
90
+ }, reason, attemptCount, errorMessage);
91
+ }
92
+ /**
93
+ * Sign an outgoing envelope if signing is enabled.
94
+ */
95
+ export function signEnvelope(signing, envelope, agentName) {
96
+ if (!signing.enabled) {
97
+ return envelope;
98
+ }
99
+ const content = JSON.stringify(envelope);
100
+ const signed = signing.sign(agentName, content);
101
+ if (!signed) {
102
+ return envelope;
103
+ }
104
+ return attachSignature(envelope, signed);
105
+ }
106
+ /**
107
+ * Verify an incoming envelope signature.
108
+ */
109
+ export function verifyEnvelope(signing, envelope) {
110
+ if (!signing.enabled) {
111
+ return { valid: true };
112
+ }
113
+ const signed = extractSignature(envelope);
114
+ if (!signed) {
115
+ const from = typeof envelope.from === 'string' ? envelope.from : 'unknown';
116
+ if (signing.requiresVerification(from)) {
117
+ return { valid: false, error: 'Missing signature' };
118
+ }
119
+ return { valid: true };
120
+ }
121
+ return signing.verify(signed);
122
+ }
123
+ // =============================================================================
124
+ // Consensus Integration Helpers
125
+ // =============================================================================
126
+ /**
127
+ * Process a potential vote command from a relay message.
128
+ */
129
+ export function processVoteMessage(consensus, from, body) {
130
+ const vote = parseVoteCommand(body);
131
+ if (!vote) {
132
+ return { processed: false };
133
+ }
134
+ const result = consensus.vote(vote.proposalId, from, vote.value, vote.reason);
135
+ return { processed: true, result };
136
+ }
137
+ /**
138
+ * Create a proposal and format it for broadcast.
139
+ */
140
+ export function createAndBroadcastProposal(consensus, options) {
141
+ const proposal = consensus.createProposal(options);
142
+ const message = formatProposalMessage(proposal);
143
+ return { proposal, message };
144
+ }
145
+ // =============================================================================
146
+ // Context Management Helpers
147
+ // =============================================================================
148
+ /**
149
+ * Check if context needs compaction and compact if necessary.
150
+ */
151
+ export function manageContext(compactor, messages) {
152
+ const budget = compactor.getTokenBudget(messages);
153
+ if (!compactor.needsCompaction(messages)) {
154
+ return { messages, compacted: false, budget };
155
+ }
156
+ const result = compactor.compact(messages);
157
+ return {
158
+ messages: result.messages,
159
+ compacted: true,
160
+ result,
161
+ budget: compactor.getTokenBudget(result.messages),
162
+ };
163
+ }
164
+ // =============================================================================
165
+ // Re-exports for convenience
166
+ // =============================================================================
167
+ export {
168
+ // Signing
169
+ AgentSigningManager, loadSigningConfig, attachSignature, extractSignature,
170
+ // DLQ
171
+ SQLiteDLQAdapter, PostgresDLQAdapter, InMemoryDLQAdapter, createDLQAdapter, DEFAULT_DLQ_CONFIG,
172
+ // Compaction
173
+ ContextCompactor, createContextCompactor, estimateTokens, estimateContextTokens, formatTokenCount,
174
+ // Consensus
175
+ ConsensusEngine, createConsensusEngine, formatProposalMessage, parseVoteCommand, formatResultMessage, };
176
+ //# sourceMappingURL=enhanced-features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-features.js","sourceRoot":"","sources":["../src/enhanced-features.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @relay/daemon
3
+ *
4
+ * Relay daemon server - agent coordination and message routing.
5
+ *
6
+ * This package provides the core daemon infrastructure for:
7
+ * - Per-project agent communication via RelayServer
8
+ * - Message routing between agents
9
+ * - Connection management and heartbeat
10
+ * - Agent registry for discovery
11
+ * - Multi-workspace orchestration (dashboard-first mode)
12
+ * - Enhanced features (consensus, signing, reliability)
13
+ */
14
+ export * from './server.js';
15
+ export * from './router.js';
16
+ export * from './connection.js';
17
+ export * from './agent-registry.js';
18
+ export * from './registry.js';
19
+ export * from './types.js';
20
+ export * from './orchestrator.js';
21
+ export * from './workspace-manager.js';
22
+ export * from './agent-manager.js';
23
+ export * from './enhanced-features.js';
24
+ export * from './agent-signing.js';
25
+ export * from './consensus.js';
26
+ export * from './consensus-integration.js';
27
+ export { startCLIAuth, getAuthSession, cancelAuthSession, submitAuthCode, completeAuthSession, getSupportedProviders, type CLIAuthConfig, type PromptHandler, type StartCLIAuthOptions, } from './cli-auth.js';
28
+ export * from './relay-ledger.js';
29
+ export * from './relay-watchdog.js';
30
+ export { SpawnManager, type SpawnManagerConfig } from './spawn-manager.js';
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AAGvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @relay/daemon
3
+ *
4
+ * Relay daemon server - agent coordination and message routing.
5
+ *
6
+ * This package provides the core daemon infrastructure for:
7
+ * - Per-project agent communication via RelayServer
8
+ * - Message routing between agents
9
+ * - Connection management and heartbeat
10
+ * - Agent registry for discovery
11
+ * - Multi-workspace orchestration (dashboard-first mode)
12
+ * - Enhanced features (consensus, signing, reliability)
13
+ */
14
+ // Core daemon infrastructure (per-project)
15
+ export * from './server.js';
16
+ export * from './router.js';
17
+ export * from './connection.js';
18
+ export * from './agent-registry.js';
19
+ export * from './registry.js';
20
+ // Multi-workspace orchestrator (dashboard-first)
21
+ export * from './types.js';
22
+ export * from './orchestrator.js';
23
+ export * from './workspace-manager.js';
24
+ export * from './agent-manager.js';
25
+ // Enhanced features (performance, reliability, coordination)
26
+ export * from './enhanced-features.js';
27
+ export * from './agent-signing.js';
28
+ export * from './consensus.js';
29
+ export * from './consensus-integration.js';
30
+ // CLI authentication (OAuth flows for workspace CLIs)
31
+ export { startCLIAuth, getAuthSession, cancelAuthSession, submitAuthCode, completeAuthSession, getSupportedProviders, } from './cli-auth.js';
32
+ // Relay file watchdog (file-based message detection and processing)
33
+ export * from './relay-ledger.js';
34
+ export * from './relay-watchdog.js';
35
+ // Spawn manager (protocol-based agent spawning)
36
+ export { SpawnManager } from './spawn-manager.js';
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,2CAA2C;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAE9B,iDAAiD;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAEnC,6DAA6D;AAC7D,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAE3C,sDAAsD;AACtD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,GAItB,MAAM,eAAe,CAAC;AAEvB,oEAAoE;AACpE,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AAEpC,gDAAgD;AAChD,OAAO,EAAE,YAAY,EAA2B,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * SQLite Migration Runner for Relay Ledger
3
+ *
4
+ * Provides a lightweight migration system for the relay-ledger.db SQLite database.
5
+ * Tracks applied migrations in a __migrations table and runs them in order.
6
+ *
7
+ * Features:
8
+ * - Sequential migration execution by name
9
+ * - Idempotent (safe to run multiple times)
10
+ * - Tracks applied migrations with timestamps
11
+ * - Embedded SQL for portability (no file dependencies)
12
+ */
13
+ import type Database from 'better-sqlite3';
14
+ export interface MigrationRecord {
15
+ id: number;
16
+ name: string;
17
+ appliedAt: number;
18
+ checksum: string;
19
+ }
20
+ export interface MigrationFile {
21
+ name: string;
22
+ sql: string;
23
+ checksum: string;
24
+ }
25
+ export interface MigrationResult {
26
+ applied: string[];
27
+ skipped: string[];
28
+ errors: Array<{
29
+ name: string;
30
+ error: string;
31
+ }>;
32
+ }
33
+ /**
34
+ * Create the migrations tracking table if it doesn't exist
35
+ */
36
+ export declare function ensureMigrationsTable(db: Database.Database): void;
37
+ /**
38
+ * Get all applied migrations
39
+ */
40
+ export declare function getAppliedMigrations(db: Database.Database): MigrationRecord[];
41
+ /**
42
+ * Check if a specific migration has been applied
43
+ */
44
+ export declare function isMigrationApplied(db: Database.Database, name: string): boolean;
45
+ /**
46
+ * Record a migration as applied
47
+ */
48
+ export declare function recordMigration(db: Database.Database, name: string, checksum: string): void;
49
+ /**
50
+ * Calculate a simple checksum for migration content
51
+ */
52
+ export declare function calculateChecksum(sql: string): string;
53
+ /**
54
+ * Load migrations from embedded definitions
55
+ */
56
+ export declare function loadMigrationFiles(): MigrationFile[];
57
+ /**
58
+ * Run all pending migrations
59
+ */
60
+ export declare function runMigrations(db: Database.Database): MigrationResult;
61
+ /**
62
+ * Get pending migrations that haven't been applied yet
63
+ */
64
+ export declare function getPendingMigrations(db: Database.Database): MigrationFile[];
65
+ /**
66
+ * Verify migration checksums match what was originally applied
67
+ */
68
+ export declare function verifyMigrations(db: Database.Database): Array<{
69
+ name: string;
70
+ expected: string;
71
+ actual: string;
72
+ }>;
73
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAsGD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CASjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,eAAe,EAAE,CAW7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI3F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,EAAE,CAMpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAwCpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,aAAa,EAAE,CAI3E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBjH"}