@pellux/goodvibes-sdk 0.18.41 → 0.18.43
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/_internal/daemon/runtime-route-types.d.ts +7 -0
- package/dist/_internal/daemon/runtime-route-types.d.ts.map +1 -1
- package/dist/_internal/daemon/runtime-session-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/runtime-session-routes.js +43 -0
- package/dist/_internal/platform/companion/companion-chat-manager.d.ts +94 -0
- package/dist/_internal/platform/companion/companion-chat-manager.d.ts.map +1 -0
- package/dist/_internal/platform/companion/companion-chat-manager.js +291 -0
- package/dist/_internal/platform/companion/companion-chat-route-types.d.ts +31 -0
- package/dist/_internal/platform/companion/companion-chat-route-types.d.ts.map +1 -0
- package/dist/_internal/platform/companion/companion-chat-route-types.js +6 -0
- package/dist/_internal/platform/companion/companion-chat-routes.d.ts +23 -0
- package/dist/_internal/platform/companion/companion-chat-routes.d.ts.map +1 -0
- package/dist/_internal/platform/companion/companion-chat-routes.js +133 -0
- package/dist/_internal/platform/companion/companion-chat-types.d.ts +108 -0
- package/dist/_internal/platform/companion/companion-chat-types.d.ts.map +1 -0
- package/dist/_internal/platform/companion/companion-chat-types.js +11 -0
- package/dist/_internal/platform/companion/index.d.ts +6 -0
- package/dist/_internal/platform/companion/index.d.ts.map +1 -0
- package/dist/_internal/platform/companion/index.js +2 -0
- package/dist/_internal/platform/control-plane/conversation-message.d.ts +29 -0
- package/dist/_internal/platform/control-plane/conversation-message.d.ts.map +1 -0
- package/dist/_internal/platform/control-plane/conversation-message.js +9 -0
- package/dist/_internal/platform/control-plane/index.d.ts +1 -0
- package/dist/_internal/platform/control-plane/index.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/session-broker.d.ts +45 -0
- package/dist/_internal/platform/control-plane/session-broker.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/session-broker.js +197 -5
- package/dist/_internal/platform/control-plane/session-types.d.ts +16 -0
- package/dist/_internal/platform/control-plane/session-types.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/facade-composition.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/facade-composition.js +7 -0
- package/dist/_internal/platform/daemon/facade.d.ts +2 -0
- package/dist/_internal/platform/daemon/facade.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/facade.js +17 -0
- package/dist/_internal/platform/daemon/http/router.d.ts +7 -0
- package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router.js +34 -0
- package/dist/_internal/platform/daemon/http/runtime-route-types.d.ts +7 -0
- package/dist/_internal/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/tasks/adapters/agent-adapter.d.ts +25 -0
- package/dist/_internal/platform/runtime/tasks/adapters/agent-adapter.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/tasks/adapters/agent-adapter.js +85 -0
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
|
@@ -16,6 +16,17 @@ export class SharedSessionBroker {
|
|
|
16
16
|
eventPublisher = null;
|
|
17
17
|
continuationRunner = null;
|
|
18
18
|
loaded = false;
|
|
19
|
+
_gcInterval = null;
|
|
20
|
+
_busUnsubs = [];
|
|
21
|
+
_busAttached = false;
|
|
22
|
+
/** Default idle threshold for zero-message sessions (ms). */
|
|
23
|
+
_idleEmptyMs;
|
|
24
|
+
/** Default idle threshold for sessions with content (ms). */
|
|
25
|
+
_idleLongMs;
|
|
26
|
+
/**
|
|
27
|
+
* @param config.idleEmptyMs - Idle timeout for empty (0-message) sessions (default: 10 minutes).
|
|
28
|
+
* @param config.idleLongMs - Idle timeout for sessions with content (default: 24 hours).
|
|
29
|
+
*/
|
|
19
30
|
constructor(config) {
|
|
20
31
|
if (!config.store && !config.storePath) {
|
|
21
32
|
throw new Error('SharedSessionBroker requires an explicit store or storePath.');
|
|
@@ -25,10 +36,94 @@ export class SharedSessionBroker {
|
|
|
25
36
|
this.routeBindings = config.routeBindings;
|
|
26
37
|
this.agentStatusProvider = config.agentStatusProvider;
|
|
27
38
|
this.messageSender = config.messageSender;
|
|
39
|
+
this._idleEmptyMs = config.idleEmptyMs ?? 10 * 60 * 1000; // 10 min
|
|
40
|
+
this._idleLongMs = config.idleLongMs ?? 24 * 60 * 60 * 1000; // 24 h
|
|
28
41
|
}
|
|
29
42
|
setEventPublisher(publisher) {
|
|
30
43
|
this.eventPublisher = publisher;
|
|
31
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* M3: Gracefully stop the broker — clears GC interval, tears down bus subscriptions,
|
|
47
|
+
* and persists state. Call from DaemonServer.stop().
|
|
48
|
+
*/
|
|
49
|
+
async stop() {
|
|
50
|
+
if (this._gcInterval) {
|
|
51
|
+
clearInterval(this._gcInterval);
|
|
52
|
+
this._gcInterval = null;
|
|
53
|
+
}
|
|
54
|
+
for (const u of this._busUnsubs) {
|
|
55
|
+
try {
|
|
56
|
+
u();
|
|
57
|
+
}
|
|
58
|
+
catch { }
|
|
59
|
+
}
|
|
60
|
+
this._busUnsubs = [];
|
|
61
|
+
this._busAttached = false;
|
|
62
|
+
await this.persist();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Wire the broker to a RuntimeEventBus so agent terminal events automatically
|
|
66
|
+
* reconcile session inputs and task state.
|
|
67
|
+
*
|
|
68
|
+
* Call once after both the broker and the bus are constructed. Returns an
|
|
69
|
+
* unsubscribe function that tears down the subscriptions.
|
|
70
|
+
*
|
|
71
|
+
* @param bus - The active RuntimeEventBus.
|
|
72
|
+
* @param sessionResolver - Maps agentId → sessionId for the active session.
|
|
73
|
+
* Return `null` when the agent is not associated with a shared session.
|
|
74
|
+
*/
|
|
75
|
+
attachRuntimeBus(bus, sessionResolver) {
|
|
76
|
+
// m3: idempotent — second call is a no-op with a warning
|
|
77
|
+
if (this._busAttached) {
|
|
78
|
+
console.warn('[SharedSessionBroker] attachRuntimeBus called more than once — ignoring duplicate call');
|
|
79
|
+
return () => { };
|
|
80
|
+
}
|
|
81
|
+
this._busAttached = true;
|
|
82
|
+
const onCompleted = bus.on('AGENT_COMPLETED', (envelope) => {
|
|
83
|
+
// m2: runtime type guard
|
|
84
|
+
if (typeof envelope.payload?.agentId !== 'string')
|
|
85
|
+
return;
|
|
86
|
+
const sessionId = sessionResolver(envelope.payload.agentId);
|
|
87
|
+
if (!sessionId)
|
|
88
|
+
return;
|
|
89
|
+
// m1: catch to prevent unhandled rejections
|
|
90
|
+
this.completeAgent(sessionId, envelope.payload.agentId, envelope.payload.output ?? '', { status: 'completed', durationMs: envelope.payload.durationMs }).catch((err) => {
|
|
91
|
+
console.error('[SharedSessionBroker] completeAgent error on AGENT_COMPLETED', err);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
const onFailed = bus.on('AGENT_FAILED', (envelope) => {
|
|
95
|
+
// m2: runtime type guard
|
|
96
|
+
if (typeof envelope.payload?.agentId !== 'string')
|
|
97
|
+
return;
|
|
98
|
+
const sessionId = sessionResolver(envelope.payload.agentId);
|
|
99
|
+
if (!sessionId)
|
|
100
|
+
return;
|
|
101
|
+
// m1: catch to prevent unhandled rejections
|
|
102
|
+
this.completeAgent(sessionId, envelope.payload.agentId, envelope.payload.error, { status: 'failed', durationMs: envelope.payload.durationMs }).catch((err) => {
|
|
103
|
+
console.error('[SharedSessionBroker] completeAgent error on AGENT_FAILED', err);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
const onCancelled = bus.on('AGENT_CANCELLED', (envelope) => {
|
|
107
|
+
// m2: runtime type guard
|
|
108
|
+
if (typeof envelope.payload?.agentId !== 'string')
|
|
109
|
+
return;
|
|
110
|
+
const sessionId = sessionResolver(envelope.payload.agentId);
|
|
111
|
+
if (!sessionId)
|
|
112
|
+
return;
|
|
113
|
+
// m1: catch to prevent unhandled rejections
|
|
114
|
+
this.completeAgent(sessionId, envelope.payload.agentId, envelope.payload.reason ?? 'cancelled', { status: 'cancelled' }).catch((err) => {
|
|
115
|
+
console.error('[SharedSessionBroker] completeAgent error on AGENT_CANCELLED', err);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
this._busUnsubs.push(onCompleted, onFailed, onCancelled);
|
|
119
|
+
return () => {
|
|
120
|
+
onCompleted();
|
|
121
|
+
onFailed();
|
|
122
|
+
onCancelled();
|
|
123
|
+
this._busAttached = false;
|
|
124
|
+
this._busUnsubs = this._busUnsubs.filter((fn) => fn !== onCompleted && fn !== onFailed && fn !== onCancelled);
|
|
125
|
+
};
|
|
126
|
+
}
|
|
32
127
|
setContinuationRunner(runner) {
|
|
33
128
|
this.continuationRunner = runner;
|
|
34
129
|
}
|
|
@@ -50,6 +145,32 @@ export class SharedSessionBroker {
|
|
|
50
145
|
this.inputs.set(sessionId, bucket);
|
|
51
146
|
}
|
|
52
147
|
this.loaded = true;
|
|
148
|
+
// M2: startup reconciliation — cancel inputs stuck in spawned/delivered from a prior run
|
|
149
|
+
const restartReason = 'daemon restart — agent state unknown';
|
|
150
|
+
for (const [sessionId, bucket] of this.inputs.entries()) {
|
|
151
|
+
let changed = false;
|
|
152
|
+
for (let i = 0; i < bucket.length; i++) {
|
|
153
|
+
const entry = bucket[i];
|
|
154
|
+
if (entry.state === 'spawned' || entry.state === 'delivered') {
|
|
155
|
+
bucket[i] = { ...entry, state: 'cancelled', updatedAt: Date.now(), error: restartReason };
|
|
156
|
+
changed = true;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (changed)
|
|
160
|
+
this.refreshPendingInputCount(sessionId);
|
|
161
|
+
}
|
|
162
|
+
for (const [sessionId, session] of this.sessions.entries()) {
|
|
163
|
+
if (session.activeAgentId) {
|
|
164
|
+
this.sessions.set(sessionId, { ...session, activeAgentId: undefined, updatedAt: Date.now() });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
await this.persist();
|
|
168
|
+
if (!this._gcInterval) {
|
|
169
|
+
// M3: .unref() so the GC interval does not keep the process alive past shutdown
|
|
170
|
+
const iv = setInterval(() => { this._gcSweep(); }, 60_000);
|
|
171
|
+
iv.unref?.();
|
|
172
|
+
this._gcInterval = iv;
|
|
173
|
+
}
|
|
53
174
|
}
|
|
54
175
|
listSessions(limit = 100) {
|
|
55
176
|
return sortSessions(this.sessions.values()).slice(0, Math.max(1, limit));
|
|
@@ -106,12 +227,14 @@ export class SharedSessionBroker {
|
|
|
106
227
|
const routeIds = input.routeBinding?.id ? [input.routeBinding.id] : [];
|
|
107
228
|
const session = {
|
|
108
229
|
id: sessionId,
|
|
230
|
+
kind: input.kind ?? 'tui',
|
|
109
231
|
title: input.title?.trim() || input.routeBinding?.title || `Session ${sessionId}`,
|
|
110
232
|
status: 'active',
|
|
111
233
|
createdAt: now,
|
|
112
234
|
updatedAt: now,
|
|
113
235
|
lastMessageAt: undefined,
|
|
114
236
|
closedAt: undefined,
|
|
237
|
+
lastActivityAt: now,
|
|
115
238
|
messageCount: 0,
|
|
116
239
|
pendingInputCount: 0,
|
|
117
240
|
routeIds,
|
|
@@ -137,12 +260,15 @@ export class SharedSessionBroker {
|
|
|
137
260
|
const session = this.sessions.get(sessionId);
|
|
138
261
|
if (!session)
|
|
139
262
|
return null;
|
|
263
|
+
this._touch(sessionId); // M4: uniform touch before mutation
|
|
264
|
+
const touched = this.sessions.get(sessionId); // re-fetch after touch
|
|
265
|
+
const now = Date.now();
|
|
140
266
|
const updated = {
|
|
141
|
-
...
|
|
267
|
+
...touched,
|
|
142
268
|
status: 'closed',
|
|
143
269
|
activeAgentId: undefined,
|
|
144
|
-
updatedAt:
|
|
145
|
-
closedAt:
|
|
270
|
+
updatedAt: now,
|
|
271
|
+
closedAt: now,
|
|
146
272
|
};
|
|
147
273
|
this.sessions.set(sessionId, updated);
|
|
148
274
|
await this.persist();
|
|
@@ -175,6 +301,7 @@ export class SharedSessionBroker {
|
|
|
175
301
|
activeAgentId: agentId,
|
|
176
302
|
lastAgentId: agentId,
|
|
177
303
|
updatedAt: Date.now(),
|
|
304
|
+
lastActivityAt: Date.now(),
|
|
178
305
|
};
|
|
179
306
|
this.sessions.set(sessionId, updated);
|
|
180
307
|
const claimed = this.claimNextQueuedInput(sessionId, agentId);
|
|
@@ -216,13 +343,16 @@ export class SharedSessionBroker {
|
|
|
216
343
|
agentId,
|
|
217
344
|
metadata,
|
|
218
345
|
});
|
|
346
|
+
const now = Date.now();
|
|
219
347
|
const updated = {
|
|
220
348
|
...(this.sessions.get(sessionId) ?? session),
|
|
221
349
|
activeAgentId: (this.sessions.get(sessionId)?.activeAgentId === agentId) ? undefined : this.sessions.get(sessionId)?.activeAgentId,
|
|
222
350
|
lastAgentId: agentId,
|
|
223
|
-
updatedAt:
|
|
351
|
+
updatedAt: now,
|
|
352
|
+
lastActivityAt: now, // M4: completeAgent explicitly updates lastActivityAt
|
|
224
353
|
...(metadata.status === 'failed' ? { lastError: body } : {}),
|
|
225
354
|
};
|
|
355
|
+
this._touch(sessionId); // M4: touch after mutation
|
|
226
356
|
this.sessions.set(sessionId, updated);
|
|
227
357
|
const finalizedInputs = this.finalizeAgentInputs(sessionId, agentId, metadata.status === 'failed' ? 'failed' : metadata.status === 'cancelled' ? 'cancelled' : 'completed', metadata.status === 'failed' ? body : undefined);
|
|
228
358
|
await this.persist();
|
|
@@ -306,6 +436,7 @@ export class SharedSessionBroker {
|
|
|
306
436
|
messageCount: bucket.length,
|
|
307
437
|
lastMessageAt: message.createdAt,
|
|
308
438
|
updatedAt: message.createdAt,
|
|
439
|
+
lastActivityAt: message.createdAt,
|
|
309
440
|
};
|
|
310
441
|
this.sessions.set(sessionId, updated);
|
|
311
442
|
}
|
|
@@ -317,6 +448,7 @@ export class SharedSessionBroker {
|
|
|
317
448
|
return message;
|
|
318
449
|
}
|
|
319
450
|
async attachParticipantAndRoute(session, input, binding) {
|
|
451
|
+
this._touch(session.id); // M4
|
|
320
452
|
const existing = this.sessions.get(session.id) ?? session;
|
|
321
453
|
const nextRouteIds = binding?.id
|
|
322
454
|
? [...new Set([...existing.routeIds, binding.id])]
|
|
@@ -548,6 +680,7 @@ export class SharedSessionBroker {
|
|
|
548
680
|
};
|
|
549
681
|
}
|
|
550
682
|
recordInput(sessionId, intent, input, routeId, causationId) {
|
|
683
|
+
this._touch(sessionId); // M4
|
|
551
684
|
const id = `sin-${randomUUID().slice(0, 8)}`;
|
|
552
685
|
const entry = {
|
|
553
686
|
id,
|
|
@@ -586,6 +719,7 @@ export class SharedSessionBroker {
|
|
|
586
719
|
bucket[index] = updated;
|
|
587
720
|
this.inputs.set(sessionId, bucket);
|
|
588
721
|
this.refreshPendingInputCount(sessionId);
|
|
722
|
+
this._touch(sessionId); // M4
|
|
589
723
|
return updated;
|
|
590
724
|
}
|
|
591
725
|
claimNextQueuedInput(sessionId, agentId) {
|
|
@@ -593,17 +727,20 @@ export class SharedSessionBroker {
|
|
|
593
727
|
const next = bucket.find((entry) => entry.state === 'queued');
|
|
594
728
|
if (!next)
|
|
595
729
|
return null;
|
|
596
|
-
|
|
730
|
+
const result = this.updateInput(sessionId, next.id, (entry) => ({
|
|
597
731
|
...entry,
|
|
598
732
|
state: 'spawned',
|
|
599
733
|
activeAgentId: agentId,
|
|
600
734
|
updatedAt: Date.now(),
|
|
601
735
|
}));
|
|
736
|
+
this._touch(sessionId); // M4
|
|
737
|
+
return result;
|
|
602
738
|
}
|
|
603
739
|
finalizeAgentInputs(sessionId, agentId, nextState, error) {
|
|
604
740
|
const bucket = this.inputs.get(sessionId);
|
|
605
741
|
if (!bucket)
|
|
606
742
|
return [];
|
|
743
|
+
this._touch(sessionId); // M4: ensure direct callers also bump session timestamps
|
|
607
744
|
let changed = false;
|
|
608
745
|
const updatedInputs = [];
|
|
609
746
|
for (let index = 0; index < bucket.length; index += 1) {
|
|
@@ -654,6 +791,14 @@ export class SharedSessionBroker {
|
|
|
654
791
|
await this.persist();
|
|
655
792
|
return claimed ? { input: claimed, agentId: spawned.agentId } : null;
|
|
656
793
|
}
|
|
794
|
+
// M4: touch helper — bumps lastActivityAt + updatedAt on a session
|
|
795
|
+
_touch(sessionId) {
|
|
796
|
+
const s = this.sessions.get(sessionId);
|
|
797
|
+
if (!s)
|
|
798
|
+
return;
|
|
799
|
+
const now = Date.now();
|
|
800
|
+
this.sessions.set(sessionId, { ...s, lastActivityAt: now, updatedAt: now });
|
|
801
|
+
}
|
|
657
802
|
refreshPendingInputCount(sessionId) {
|
|
658
803
|
const session = this.sessions.get(sessionId);
|
|
659
804
|
if (!session)
|
|
@@ -665,4 +810,51 @@ export class SharedSessionBroker {
|
|
|
665
810
|
updatedAt: Date.now(),
|
|
666
811
|
});
|
|
667
812
|
}
|
|
813
|
+
/**
|
|
814
|
+
* Periodic idle-session GC sweep.
|
|
815
|
+
*
|
|
816
|
+
* Policy:
|
|
817
|
+
* - Sessions with messageCount === 0 AND no active agent AND idle longer than
|
|
818
|
+
* `_idleEmptyMs` (default 10min) are closed with reason `idle-empty`.
|
|
819
|
+
* - Sessions with messageCount > 0 AND no active agent AND idle longer than
|
|
820
|
+
* `_idleLongMs` (default 24h) are closed with reason `idle-long`.
|
|
821
|
+
*
|
|
822
|
+
* "Idle" is measured from `lastActivityAt` (updated on createInput/bindAgent/
|
|
823
|
+
* appendMessage). Sessions with an active agent are never GC'd.
|
|
824
|
+
*/
|
|
825
|
+
_gcSweep() {
|
|
826
|
+
const now = Date.now();
|
|
827
|
+
let anyChanged = false; // m4: track changed inline, not a second O(n) scan
|
|
828
|
+
for (const [sessionId, session] of this.sessions.entries()) {
|
|
829
|
+
if (session.status !== 'active')
|
|
830
|
+
continue;
|
|
831
|
+
if (session.activeAgentId)
|
|
832
|
+
continue; // live agent — leave it
|
|
833
|
+
if (session.pendingInputCount > 0)
|
|
834
|
+
continue; // M4: never close sessions with pending inputs
|
|
835
|
+
const idle = now - session.lastActivityAt;
|
|
836
|
+
let reason = null;
|
|
837
|
+
if (session.messageCount === 0 && idle >= this._idleEmptyMs) {
|
|
838
|
+
reason = 'idle-empty';
|
|
839
|
+
}
|
|
840
|
+
else if (session.messageCount > 0 && idle >= this._idleLongMs) {
|
|
841
|
+
reason = 'idle-long';
|
|
842
|
+
}
|
|
843
|
+
if (!reason)
|
|
844
|
+
continue;
|
|
845
|
+
const closed = {
|
|
846
|
+
...session,
|
|
847
|
+
status: 'closed',
|
|
848
|
+
activeAgentId: undefined,
|
|
849
|
+
updatedAt: now,
|
|
850
|
+
closedAt: now,
|
|
851
|
+
};
|
|
852
|
+
this.sessions.set(sessionId, closed);
|
|
853
|
+
this.publishUpdate('session-closed', { ...closed, reason });
|
|
854
|
+
anyChanged = true; // m4: set during loop, not a second scan
|
|
855
|
+
}
|
|
856
|
+
if (anyChanged) {
|
|
857
|
+
void this.persist();
|
|
858
|
+
}
|
|
859
|
+
}
|
|
668
860
|
}
|
|
@@ -26,14 +26,30 @@ export interface SharedSessionMessage {
|
|
|
26
26
|
readonly displayName?: string;
|
|
27
27
|
readonly metadata: Record<string, unknown>;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Discriminates the session origin.
|
|
31
|
+
* - 'tui': created by the operator TUI (default for existing sessions)
|
|
32
|
+
* - 'companion-task': created via task-submit flow (agent spawn)
|
|
33
|
+
* - 'companion-chat': created via companion chat-mode API (no agent spawn; uses per-session orchestrator)
|
|
34
|
+
*/
|
|
35
|
+
export type SharedSessionKind = 'tui' | 'companion-task' | 'companion-chat';
|
|
29
36
|
export interface SharedSessionRecord {
|
|
30
37
|
readonly id: string;
|
|
38
|
+
readonly kind: SharedSessionKind;
|
|
31
39
|
readonly title: string;
|
|
32
40
|
readonly status: SharedSessionStatus;
|
|
33
41
|
readonly createdAt: number;
|
|
34
42
|
readonly updatedAt: number;
|
|
35
43
|
readonly lastMessageAt?: number;
|
|
36
44
|
readonly closedAt?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Epoch ms of the most recent activity on this session.
|
|
47
|
+
* Updated on every session-level mutation (createSession, bindAgent,
|
|
48
|
+
* appendMessage, recordInput, updateInput, claimNextQueuedInput,
|
|
49
|
+
* attachParticipantAndRoute, closeSession, completeAgent).
|
|
50
|
+
* Used by the idle-session GC sweep to decide when to close ghost sessions.
|
|
51
|
+
*/
|
|
52
|
+
readonly lastActivityAt: number;
|
|
37
53
|
readonly messageCount: number;
|
|
38
54
|
readonly pendingInputCount: number;
|
|
39
55
|
readonly routeIds: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/session-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/session-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade-composition.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/daemon/facade-composition.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"facade-composition.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/daemon/facade-composition.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,13 @@ export function resolveDaemonFacadeRuntime(config, fallbackConfigManager) {
|
|
|
52
52
|
},
|
|
53
53
|
});
|
|
54
54
|
runtimeServices.knowledgeService.attachRuntimeBus(runtimeBus);
|
|
55
|
+
runtimeServices.sessionBroker.attachRuntimeBus(runtimeBus, (agentId) => {
|
|
56
|
+
for (const s of runtimeServices.sessionBroker.listSessions(1000)) {
|
|
57
|
+
if (s.activeAgentId === agentId)
|
|
58
|
+
return s.id;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
});
|
|
55
62
|
runtimeServices.routeBindings.attachRuntime({
|
|
56
63
|
runtimeBus,
|
|
57
64
|
runtimeStore,
|
|
@@ -57,6 +57,8 @@ export declare class DaemonServer {
|
|
|
57
57
|
private readonly transportEventsHelper;
|
|
58
58
|
private readonly httpRouter;
|
|
59
59
|
private replyPoller;
|
|
60
|
+
private agentTaskAdapter;
|
|
61
|
+
private agentTaskAdapterUnsub;
|
|
60
62
|
private tlsState;
|
|
61
63
|
private approvalBrokerUnsubscribe;
|
|
62
64
|
constructor(config?: DaemonConfig, _configManager?: ConfigManager);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/daemon/facade.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/daemon/facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-displ
|
|
|
4
4
|
import { AgentManager } from '../tools/agent/index.js';
|
|
5
5
|
import {} from '../runtime/remote/index.js';
|
|
6
6
|
import { isSurfaceDeliveryEnabled } from './surface-policy.js';
|
|
7
|
+
import { AgentTaskAdapter } from '../runtime/tasks/adapters/agent-adapter.js';
|
|
7
8
|
import { configureDaemonSessionContinuation, createDaemonFacadeCollaborators, resolveDaemonFacadeRuntime, } from './facade-composition.js';
|
|
8
9
|
import { GlobalNetworkTransportInstaller, resolveInboundTlsContext, } from '../runtime/network/index.js';
|
|
9
10
|
import { createRuntimeServices } from '../runtime/services.js';
|
|
@@ -69,6 +70,8 @@ export class DaemonServer {
|
|
|
69
70
|
transportEventsHelper;
|
|
70
71
|
httpRouter;
|
|
71
72
|
replyPoller = null;
|
|
73
|
+
agentTaskAdapter = null;
|
|
74
|
+
agentTaskAdapterUnsub = null;
|
|
72
75
|
tlsState = null;
|
|
73
76
|
approvalBrokerUnsubscribe = null;
|
|
74
77
|
constructor(config = {}, _configManager) {
|
|
@@ -137,6 +140,12 @@ export class DaemonServer {
|
|
|
137
140
|
this.httpRouter = collaborators.httpRouter;
|
|
138
141
|
this.providerRuntime = collaborators.providerRuntime;
|
|
139
142
|
this.builtinChannels = collaborators.builtinChannels;
|
|
143
|
+
// M1: Wire AgentTaskAdapter to the RuntimeEventBus so task records reach
|
|
144
|
+
// terminal states when their backing agent finishes.
|
|
145
|
+
this.agentTaskAdapter = new AgentTaskAdapter(this.runtimeStore);
|
|
146
|
+
this.agentTaskAdapterUnsub = this.agentTaskAdapter.attachRuntimeBus(this.runtimeBus);
|
|
147
|
+
// M2: Mark any tasks that were 'running' at startup as aborted (daemon restart)
|
|
148
|
+
this.agentTaskAdapter.reconcileOnRestart();
|
|
140
149
|
configureDaemonSessionContinuation({
|
|
141
150
|
sessionBroker: this.sessionBroker,
|
|
142
151
|
trySpawnAgent: (input, logLabel, sessionId) => this.trySpawnAgent(input, logLabel, sessionId),
|
|
@@ -326,6 +335,10 @@ export class DaemonServer {
|
|
|
326
335
|
// when the server socket closes. We stop what we can in reverse start order.
|
|
327
336
|
this.providerRuntime.stopAll();
|
|
328
337
|
this.automationManager.stop();
|
|
338
|
+
// M1+M3: tear down adapter bus subscription and sessionBroker GC interval
|
|
339
|
+
this.agentTaskAdapterUnsub?.();
|
|
340
|
+
this.agentTaskAdapterUnsub = null;
|
|
341
|
+
await this.sessionBroker.stop();
|
|
329
342
|
this.server.stop(true);
|
|
330
343
|
this.server = null;
|
|
331
344
|
this.tlsState = null;
|
|
@@ -443,6 +456,10 @@ export class DaemonServer {
|
|
|
443
456
|
: input;
|
|
444
457
|
const record = this.agentManager.spawn(spawnInput);
|
|
445
458
|
this.syncSpawnedAgentTask(record, sessionId);
|
|
459
|
+
// M1: Register agent with AgentTaskAdapter so bus events can transition its task
|
|
460
|
+
if (this.agentTaskAdapter) {
|
|
461
|
+
this.agentTaskAdapter.wrapAgent(record.id, record.task, { sessionId: sessionId ?? 'daemon' });
|
|
462
|
+
}
|
|
446
463
|
return record;
|
|
447
464
|
}
|
|
448
465
|
catch (err) {
|
|
@@ -22,6 +22,7 @@ import type { MemoryEmbeddingProviderRegistry, MemoryRegistry } from '../../stat
|
|
|
22
22
|
import type { GenericWebhookAdapterContext, SurfaceAdapterContext } from '../../adapters/index.js';
|
|
23
23
|
import type { PlatformServiceManager } from '../service-manager.js';
|
|
24
24
|
import type { JsonRecord } from '../helpers.js';
|
|
25
|
+
import type { CompanionChatManager } from '../../companion/companion-chat-manager.js';
|
|
25
26
|
interface DaemonHttpRouterContext {
|
|
26
27
|
readonly configManager: ConfigManager;
|
|
27
28
|
readonly serviceRegistry: ServiceRegistry;
|
|
@@ -96,6 +97,12 @@ interface DaemonHttpRouterContext {
|
|
|
96
97
|
readonly surfaceDeliveryEnabled: (surface: 'slack' | 'discord' | 'ntfy' | 'webhook' | 'telegram' | 'google-chat' | 'signal' | 'whatsapp' | 'imessage' | 'msteams' | 'bluebubbles' | 'mattermost' | 'matrix') => boolean;
|
|
97
98
|
readonly syncSpawnedAgentTask: (record: import('../../tools/agent/index.js').AgentRecord, sessionId?: string) => void;
|
|
98
99
|
readonly syncFinishedAgentTask: (record: import('../../tools/agent/index.js').AgentRecord) => void;
|
|
100
|
+
/**
|
|
101
|
+
* Optional companion chat manager. When present, companion chat routes
|
|
102
|
+
* (/api/companion/chat/...) are enabled. Injected by the daemon facade
|
|
103
|
+
* when the companion feature is active.
|
|
104
|
+
*/
|
|
105
|
+
readonly companionChatManager?: CompanionChatManager | null;
|
|
99
106
|
readonly trySpawnAgent: (input: Parameters<AgentManager['spawn']>[0], logLabel?: string, sessionId?: string) => import('../../tools/agent/index.js').AgentRecord | Response;
|
|
100
107
|
}
|
|
101
108
|
export declare class DaemonHttpRouter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/daemon/http/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAEzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAsE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACvI,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC7G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAMpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACjI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,KAAK,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAyB5F,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/daemon/http/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ import { buildChannelRouteContext, buildKnowledgeRouteContext, buildMediaRouteCo
|
|
|
21
21
|
import { jsonErrorResponse } from '@pellux/goodvibes-sdk/platform/daemon/http/error-response';
|
|
22
22
|
import { AppError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
23
23
|
import { VERSION } from '../../version.js';
|
|
24
|
+
import { dispatchCompanionChatRoutes } from '../../companion/companion-chat-routes.js';
|
|
24
25
|
export class DaemonHttpRouter {
|
|
25
26
|
context;
|
|
26
27
|
telemetryApi;
|
|
@@ -108,6 +109,33 @@ export class DaemonHttpRouter {
|
|
|
108
109
|
}), { status: 404 });
|
|
109
110
|
}
|
|
110
111
|
async dispatchApiRoutes(req) {
|
|
112
|
+
// Companion chat routes — scoped to /api/companion/chat/..., session-isolated.
|
|
113
|
+
// Handled before the main API router so they never touch the global control-plane feed.
|
|
114
|
+
if (this.context.companionChatManager && req.url.includes('/api/companion/chat/')) {
|
|
115
|
+
const gateway = this.context.controlPlaneGateway;
|
|
116
|
+
const chatManager = this.context.companionChatManager;
|
|
117
|
+
const companionResponse = await dispatchCompanionChatRoutes(req, {
|
|
118
|
+
chatManager,
|
|
119
|
+
parseJsonBody: (request) => this.parseJsonBody(request),
|
|
120
|
+
parseOptionalJsonBody: (request) => this.parseOptionalJsonBody(request),
|
|
121
|
+
openSessionEventStream: (request, sessionId) => {
|
|
122
|
+
// Create a session-scoped SSE stream. Use the clientId as the isolation key.
|
|
123
|
+
const clientId = `companion-chat:${sessionId}`;
|
|
124
|
+
chatManager.registerSubscriber(sessionId, clientId);
|
|
125
|
+
return gateway.createEventStream(request, {
|
|
126
|
+
clientId,
|
|
127
|
+
// Companion chat sessions are isolated per-session via the clientId above;
|
|
128
|
+
// we reuse 'web' as the clientKind since the gateway's kind union does not
|
|
129
|
+
// yet include 'companion'. Client-side filtering uses clientId, not clientKind.
|
|
130
|
+
clientKind: 'web',
|
|
131
|
+
sessionId,
|
|
132
|
+
label: `companion-chat/${sessionId}`,
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
if (companionResponse)
|
|
137
|
+
return companionResponse;
|
|
138
|
+
}
|
|
111
139
|
return dispatchDaemonApiRoutes(req, {
|
|
112
140
|
...createDaemonControlRouteHandlers({
|
|
113
141
|
authToken: this.context.authToken(),
|
|
@@ -238,6 +266,12 @@ export class DaemonHttpRouter {
|
|
|
238
266
|
configManager: this.context.configManager,
|
|
239
267
|
runtimeStore: this.context.runtimeStore,
|
|
240
268
|
runtimeDispatch: this.context.runtimeDispatch,
|
|
269
|
+
publishConversationFollowup: (sessionId, envelope) => {
|
|
270
|
+
// Scope the event to TUI-kind clients only: non-TUI clients (web, companion
|
|
271
|
+
// app, etc.) must not receive raw operator conversation follow-ups. Using
|
|
272
|
+
// clientKind:'tui' ensures only the TUI surface receives this event.
|
|
273
|
+
this.context.controlPlaneGateway.publishEvent('conversation.followup.companion', { sessionId, ...envelope }, { clientKind: 'tui' });
|
|
274
|
+
},
|
|
241
275
|
}),
|
|
242
276
|
...createDaemonRemoteRouteHandlers({
|
|
243
277
|
authToken: this.context.authToken(),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DaemonApiRouteHandlers } from '../../control-plane/routes/context.js';
|
|
2
2
|
import type { DaemonRuntimeRouteContext as SdkDaemonRuntimeRouteContext, JsonBody } from '../../../daemon.js';
|
|
3
3
|
import type { ExecutionIntent } from '../../runtime/execution-intents.js';
|
|
4
|
+
import type { ConversationMessageEnvelope } from '../../control-plane/conversation-message.js';
|
|
4
5
|
export type AutomationSurfaceKind = string;
|
|
5
6
|
export interface SharedSessionRoutingIntent {
|
|
6
7
|
readonly modelId?: string;
|
|
@@ -234,6 +235,12 @@ export interface DaemonRuntimeRouteContext extends Omit<SdkDaemonRuntimeRouteCon
|
|
|
234
235
|
readonly runtimeDispatch: {
|
|
235
236
|
transitionRuntimeTask(taskId: string, status: string, patch: Record<string, unknown>, source: string): void;
|
|
236
237
|
} | null;
|
|
238
|
+
/**
|
|
239
|
+
* Publish a conversation follow-up event scoped to a specific session.
|
|
240
|
+
* Used by Problem-2 message routing: kind='message' submits skip agent spawn
|
|
241
|
+
* and instead broadcast a ConversationMessageEnvelope to TUI surface subscribers.
|
|
242
|
+
*/
|
|
243
|
+
readonly publishConversationFollowup: (sessionId: string, envelope: Omit<ConversationMessageEnvelope, 'sessionId'>) => void;
|
|
237
244
|
}
|
|
238
245
|
export type { JsonBody };
|
|
239
246
|
export type DaemonRuntimeRouteHandlerMap = Pick<DaemonApiRouteHandlers, 'createSharedSession' | 'getAutomationJobs' | 'postAutomationJob' | 'getAutomationRuns' | 'getAutomationRun' | 'getAutomationHeartbeat' | 'postAutomationHeartbeat' | 'automationRunAction' | 'patchAutomationJob' | 'deleteAutomationJob' | 'setAutomationJobEnabled' | 'runAutomationJobNow' | 'postTask' | 'getSharedSession' | 'closeSharedSession' | 'reopenSharedSession' | 'getSharedSessionMessages' | 'getSharedSessionInputs' | 'postSharedSessionMessage' | 'postSharedSessionSteer' | 'postSharedSessionFollowUp' | 'cancelSharedSessionInput' | 'getRuntimeTask' | 'runtimeTaskAction' | 'getTaskStatus' | 'getSchedules' | 'postSchedule' | 'deleteSchedule' | 'setScheduleEnabled' | 'runScheduleNow'>;
|