@felan-ai/daemon 0.6.0 → 0.7.1
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/daemon/host-workers.d.ts +34 -0
- package/dist/daemon/host-workers.d.ts.map +1 -0
- package/dist/daemon/host-workers.js +160 -0
- package/dist/daemon/host-workers.js.map +1 -0
- package/dist/daemon/maintenance.d.ts +21 -0
- package/dist/daemon/maintenance.d.ts.map +1 -0
- package/dist/daemon/maintenance.js +48 -0
- package/dist/daemon/maintenance.js.map +1 -0
- package/dist/daemon/profile-storage.d.ts +3 -1
- package/dist/daemon/profile-storage.d.ts.map +1 -1
- package/dist/daemon/profile-storage.js +10 -7
- package/dist/daemon/profile-storage.js.map +1 -1
- package/dist/daemon/projection.d.ts +1 -0
- package/dist/daemon/projection.d.ts.map +1 -1
- package/dist/daemon/projection.js +12 -5
- package/dist/daemon/projection.js.map +1 -1
- package/dist/daemon/provider-loader.d.ts +3 -0
- package/dist/daemon/provider-loader.d.ts.map +1 -1
- package/dist/daemon/provider-loader.js +14 -2
- package/dist/daemon/provider-loader.js.map +1 -1
- package/dist/daemon/registry.d.ts +6 -0
- package/dist/daemon/registry.d.ts.map +1 -1
- package/dist/daemon/registry.js +46 -21
- package/dist/daemon/registry.js.map +1 -1
- package/dist/daemon/server.d.ts +2 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +2 -2
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/service.d.ts.map +1 -1
- package/dist/daemon/service.js +8 -1
- package/dist/daemon/service.js.map +1 -1
- package/dist/daemon/session-lifecycle-contracts.d.ts +1 -0
- package/dist/daemon/session-lifecycle-contracts.d.ts.map +1 -1
- package/dist/daemon/session-lifecycle.js +1 -1
- package/dist/daemon/session-lifecycle.js.map +1 -1
- package/dist/daemon/session-services.d.ts +2 -1
- package/dist/daemon/session-services.d.ts.map +1 -1
- package/dist/daemon/session-services.js +58 -41
- package/dist/daemon/session-services.js.map +1 -1
- package/dist/daemon/worker.d.ts +9 -1
- package/dist/daemon/worker.d.ts.map +1 -1
- package/dist/daemon/worker.js +92 -13
- package/dist/daemon/worker.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { DaemonOwnership } from './ownership.js';
|
|
2
|
+
import type { RegistryProcesses } from './processes.js';
|
|
3
|
+
import type { SessionBinding, SessionLifecycle, SessionOpenRequest, SessionWorkerConfiguration } from './session-lifecycle-contracts.js';
|
|
4
|
+
interface HostWorkersOptions {
|
|
5
|
+
readonly owner: DaemonOwnership;
|
|
6
|
+
readonly processes: RegistryProcesses;
|
|
7
|
+
lifecycle(): SessionLifecycle;
|
|
8
|
+
assertNewWork(): void;
|
|
9
|
+
claim(id: string, path: string): void;
|
|
10
|
+
release(path: string): void;
|
|
11
|
+
openSession(request: SessionOpenRequest): Promise<SessionBinding>;
|
|
12
|
+
fail(error: unknown): void;
|
|
13
|
+
}
|
|
14
|
+
export declare class HostWorkers {
|
|
15
|
+
private readonly options;
|
|
16
|
+
private readonly entries;
|
|
17
|
+
private readonly identities;
|
|
18
|
+
private readonly opening;
|
|
19
|
+
private lifetime;
|
|
20
|
+
get signal(): AbortSignal;
|
|
21
|
+
constructor(options: HostWorkersOptions);
|
|
22
|
+
owns(id: string): boolean;
|
|
23
|
+
roots(): string[];
|
|
24
|
+
open(worker: SessionWorkerConfiguration): Promise<SessionBinding>;
|
|
25
|
+
private performOpen;
|
|
26
|
+
interrupt(): void;
|
|
27
|
+
run<T>(id: string, operation: () => Promise<T>): Promise<T>;
|
|
28
|
+
settle(): Promise<void>;
|
|
29
|
+
close(id: string): Promise<void>;
|
|
30
|
+
shutdown(): Promise<void>;
|
|
31
|
+
private disposeBinding;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=host-workers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-workers.d.ts","sourceRoot":"","sources":["../../src/daemon/host-workers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAYzI,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,SAAS,IAAI,gBAAgB,CAAC;IAC9B,aAAa,IAAI,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,WAAW;IAOV,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAyB;IACzC,IAAI,MAAM,IAAI,WAAW,CAAiC;gBAE7B,OAAO,EAAE,kBAAkB;IAExD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IACzB,KAAK,IAAI,MAAM,EAAE;IAEjB,IAAI,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,cAAc,CAAC;YAQnD,WAAW;IAiDzB,SAAS,IAAI,IAAI;IAWX,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAW3D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YASjB,cAAc;CAU7B"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { dirname, join } from 'node:path';
|
|
2
|
+
import { assertStagedWorker } from './worker.js';
|
|
3
|
+
import { canonicalProspectivePath, pathInside } from './target.js';
|
|
4
|
+
export class HostWorkers {
|
|
5
|
+
options;
|
|
6
|
+
entries = new Map();
|
|
7
|
+
identities = new Set();
|
|
8
|
+
opening = new Set();
|
|
9
|
+
lifetime = new AbortController();
|
|
10
|
+
get signal() { return this.lifetime.signal; }
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.options = options;
|
|
13
|
+
}
|
|
14
|
+
owns(id) { return this.identities.has(id); }
|
|
15
|
+
roots() { return [...this.entries.keys()]; }
|
|
16
|
+
open(worker) {
|
|
17
|
+
this.options.assertNewWork();
|
|
18
|
+
const operation = this.performOpen(worker, this.signal);
|
|
19
|
+
this.opening.add(operation);
|
|
20
|
+
void operation.then(() => this.opening.delete(operation), () => this.opening.delete(operation));
|
|
21
|
+
return operation;
|
|
22
|
+
}
|
|
23
|
+
async performOpen(worker, signal) {
|
|
24
|
+
const manager = worker.sessionManager;
|
|
25
|
+
const file = manager.getSessionFile();
|
|
26
|
+
if (!file)
|
|
27
|
+
throw Object.assign(new Error('Worker transcript must have a fresh identity.'), { code: 'invalid_request' });
|
|
28
|
+
const transcript = this.options.owner.assertOwnsPath(file);
|
|
29
|
+
if (!pathInside(canonicalProspectivePath(join(this.options.owner.target.agentDir, 'sessions')), transcript)) {
|
|
30
|
+
throw Object.assign(new Error('Worker transcript is outside the host session directory.'), { code: 'forbidden' });
|
|
31
|
+
}
|
|
32
|
+
const resources = await this.options.lifecycle().resolveResources({ cwd: manager.getCwd(), sessionDir: dirname(transcript) });
|
|
33
|
+
signal.throwIfAborted();
|
|
34
|
+
const { id, path } = assertStagedWorker(this.options.owner, resources, worker, id => this.identities.has(id));
|
|
35
|
+
if (manager.getCwd() !== resources.cwd)
|
|
36
|
+
throw new Error('Worker workspace does not match its transcript.');
|
|
37
|
+
for (const root of resources.writableRoots)
|
|
38
|
+
this.options.owner.assertOwnsPath(root);
|
|
39
|
+
this.options.claim(id, path);
|
|
40
|
+
this.identities.add(id);
|
|
41
|
+
let binding;
|
|
42
|
+
const policy = { mode: 'host-default', generation: 0 };
|
|
43
|
+
try {
|
|
44
|
+
binding = await this.options.openSession({ resources, target: { kind: 'resume', sessionFile: path }, rootSessionId: id,
|
|
45
|
+
policy, extensionPaths: [], allowedTools: worker.allowedTools, worker: { ...worker, host: true },
|
|
46
|
+
ownership: { assertOwned: (resolved, target) => {
|
|
47
|
+
signal.throwIfAborted();
|
|
48
|
+
for (const root of resolved.writableRoots)
|
|
49
|
+
this.options.owner.assertOwnsPath(root);
|
|
50
|
+
if (target.sourceSessionId !== id || this.options.owner.assertOwnsPath(target.sourceSessionFile) !== path
|
|
51
|
+
|| target.destinationDirectory !== resources.sessionDir)
|
|
52
|
+
throw new Error('Worker transcript identity changed.');
|
|
53
|
+
} },
|
|
54
|
+
services: { getExecutionPolicy: () => policy, currentRun: () => undefined,
|
|
55
|
+
extensions: { configuration: async () => [], bind: async () => { throw new Error('Host worker extension discovery is disabled.'); } } }, });
|
|
56
|
+
signal.throwIfAborted();
|
|
57
|
+
if (binding.sessionId !== id || binding.rootSessionId !== id || binding.parentSessionId !== undefined
|
|
58
|
+
|| manager.getSessionFile() !== path || manager.getCwd() !== resources.cwd)
|
|
59
|
+
throw new Error('Lifecycle returned inconsistent worker identity.');
|
|
60
|
+
await binding.activate?.();
|
|
61
|
+
signal.throwIfAborted();
|
|
62
|
+
this.entries.set(id, { binding, path });
|
|
63
|
+
return binding;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
try {
|
|
67
|
+
if (binding)
|
|
68
|
+
await this.disposeBinding(binding);
|
|
69
|
+
else {
|
|
70
|
+
await this.options.processes.settle(id);
|
|
71
|
+
this.options.processes.revoke(id);
|
|
72
|
+
}
|
|
73
|
+
this.options.release(path);
|
|
74
|
+
}
|
|
75
|
+
catch (cleanup) {
|
|
76
|
+
const failure = new AggregateError([error, cleanup], 'Host worker setup cleanup failed.');
|
|
77
|
+
this.options.fail(failure);
|
|
78
|
+
throw failure;
|
|
79
|
+
}
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
interrupt() {
|
|
84
|
+
this.lifetime.abort();
|
|
85
|
+
this.lifetime = new AbortController();
|
|
86
|
+
for (const entry of this.entries.values()) {
|
|
87
|
+
if (entry.cancelling || entry.closing)
|
|
88
|
+
continue;
|
|
89
|
+
const cancellation = Promise.resolve().then(() => entry.binding.runtime.session.abort());
|
|
90
|
+
entry.cancelling = cancellation;
|
|
91
|
+
void cancellation.then(() => { delete entry.cancelling; }, error => this.options.fail(error));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async run(id, operation) {
|
|
95
|
+
this.options.assertNewWork();
|
|
96
|
+
const entry = this.entries.get(id);
|
|
97
|
+
if (!entry || entry.closing)
|
|
98
|
+
throw new Error('Host worker is closed.');
|
|
99
|
+
if (entry.running || !entry.binding.runtime.session.isIdle)
|
|
100
|
+
throw Object.assign(new Error('Worker is already running.'), { code: 'busy' });
|
|
101
|
+
const work = operation();
|
|
102
|
+
entry.running = work.then(() => { }, () => { });
|
|
103
|
+
try {
|
|
104
|
+
return await work;
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
delete entry.running;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async settle() {
|
|
111
|
+
await Promise.allSettled([...this.opening]);
|
|
112
|
+
for (const entry of this.entries.values()) {
|
|
113
|
+
await entry.cancelling?.catch(() => { });
|
|
114
|
+
await entry.running;
|
|
115
|
+
if (!entry.binding.runtime.session.isIdle)
|
|
116
|
+
await entry.binding.runtime.session.waitForIdle();
|
|
117
|
+
await entry.closing;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
close(id) {
|
|
121
|
+
const entry = this.entries.get(id);
|
|
122
|
+
if (!entry)
|
|
123
|
+
return Promise.resolve();
|
|
124
|
+
if (entry.closing)
|
|
125
|
+
return entry.closing;
|
|
126
|
+
this.options.processes.seal(id);
|
|
127
|
+
const closing = this.options.processes.withCleanup(id, async () => {
|
|
128
|
+
await entry.cancelling?.catch(() => { });
|
|
129
|
+
await entry.binding.runtime.session.abort();
|
|
130
|
+
await entry.running;
|
|
131
|
+
await this.disposeBinding(entry.binding);
|
|
132
|
+
this.options.release(entry.path);
|
|
133
|
+
this.entries.delete(id);
|
|
134
|
+
});
|
|
135
|
+
entry.closing = closing;
|
|
136
|
+
void closing.catch(error => { delete entry.closing; this.options.fail(error); });
|
|
137
|
+
return closing;
|
|
138
|
+
}
|
|
139
|
+
async shutdown() {
|
|
140
|
+
this.interrupt();
|
|
141
|
+
await Promise.allSettled([...this.opening]);
|
|
142
|
+
const results = await Promise.allSettled([...this.entries.keys()].map(id => this.close(id)));
|
|
143
|
+
const failures = results.flatMap(result => result.status === 'rejected' ? [result.reason] : []);
|
|
144
|
+
if (failures.length === 1)
|
|
145
|
+
throw failures[0];
|
|
146
|
+
if (failures.length)
|
|
147
|
+
throw new AggregateError(failures, 'Host worker shutdown failed.');
|
|
148
|
+
}
|
|
149
|
+
async disposeBinding(binding) {
|
|
150
|
+
await this.options.processes.withCleanup(binding.sessionId, async () => {
|
|
151
|
+
await binding.runtime.session.abort();
|
|
152
|
+
await binding.runtime.session.waitForIdle();
|
|
153
|
+
await this.options.processes.settle(binding.rootSessionId);
|
|
154
|
+
await binding.runtime.dispose();
|
|
155
|
+
});
|
|
156
|
+
this.options.processes.revoke(binding.sessionId);
|
|
157
|
+
this.options.processes.revokeRuntime(binding.agentRuntime);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=host-workers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-workers.js","sourceRoot":"","sources":["../../src/daemon/host-workers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ModelRuntime } from '@felan-ai/agent-core';
|
|
2
|
+
import type { HostConfiguration } from './host-services.js';
|
|
3
|
+
import type { SessionRegistry } from './registry.js';
|
|
4
|
+
export declare function createHostMaintenance(): Readonly<{
|
|
5
|
+
service: Readonly<{
|
|
6
|
+
readonly agentDir: string;
|
|
7
|
+
readonly modelRuntime: ModelRuntime;
|
|
8
|
+
readonly signal: AbortSignal;
|
|
9
|
+
allowedModels: (signal: AbortSignal | undefined) => Promise<readonly import("@felan-ai/agent-core").ModelReference[] | undefined>;
|
|
10
|
+
sessions: (selector: import("@felan-ai/agent-core").HostSessionsSelector) => import("@felan-ai/agent-core").SessionsHistory;
|
|
11
|
+
openWorker: (request: import("@felan-ai/agent-core").HostWorkerOptions) => Promise<import("@felan-ai/agent-core").HostWorker>;
|
|
12
|
+
}>;
|
|
13
|
+
bind(options: {
|
|
14
|
+
registry: SessionRegistry;
|
|
15
|
+
agentDir: string;
|
|
16
|
+
modelRuntime: ModelRuntime;
|
|
17
|
+
configuration: HostConfiguration;
|
|
18
|
+
}): void;
|
|
19
|
+
close(): void;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=maintenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../src/daemon/maintenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,wBAAgB,qBAAqB;;;;;;;;;kBAoBnB;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,YAAY,CAAC;QAAC,aAAa,EAAE,iBAAiB,CAAA;KAAE;;GAoB9H"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { resolveModelScopeWithDiagnostics } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
import { createHostWorkerLauncher } from './worker.js';
|
|
3
|
+
import { createHostSessionsHistory } from './session-services.js';
|
|
4
|
+
export function createHostMaintenance() {
|
|
5
|
+
let bound;
|
|
6
|
+
const lifetime = new AbortController();
|
|
7
|
+
function current() {
|
|
8
|
+
lifetime.signal.throwIfAborted();
|
|
9
|
+
if (!bound)
|
|
10
|
+
throw new Error('Host maintenance is unavailable.');
|
|
11
|
+
bound.registry.assertHostWork();
|
|
12
|
+
return bound.service;
|
|
13
|
+
}
|
|
14
|
+
const service = Object.freeze({
|
|
15
|
+
get agentDir() { return current().agentDir; },
|
|
16
|
+
get modelRuntime() { return current().modelRuntime; },
|
|
17
|
+
get signal() { return lifetime.signal; },
|
|
18
|
+
allowedModels: async (signal) => current().allowedModels(signal),
|
|
19
|
+
sessions: selector => current().sessions(selector),
|
|
20
|
+
openWorker: request => current().openWorker({ ...request,
|
|
21
|
+
signal: request.signal ? AbortSignal.any([lifetime.signal, request.signal]) : lifetime.signal }),
|
|
22
|
+
});
|
|
23
|
+
return Object.freeze({
|
|
24
|
+
service,
|
|
25
|
+
bind(options) {
|
|
26
|
+
if (bound || lifetime.signal.aborted)
|
|
27
|
+
throw new Error('Host maintenance cannot be rebound.');
|
|
28
|
+
const { registry, agentDir, modelRuntime, configuration } = options;
|
|
29
|
+
const allowedModels = async (inputSignal) => {
|
|
30
|
+
current();
|
|
31
|
+
const signal = inputSignal ? AbortSignal.any([lifetime.signal, inputSignal]) : lifetime.signal;
|
|
32
|
+
signal.throwIfAborted();
|
|
33
|
+
const patterns = (await configuration.get('global')).values.scopedModels;
|
|
34
|
+
signal.throwIfAborted();
|
|
35
|
+
if (!patterns?.length)
|
|
36
|
+
return undefined;
|
|
37
|
+
const scope = await resolveModelScopeWithDiagnostics(patterns, modelRuntime, { signal });
|
|
38
|
+
signal.throwIfAborted();
|
|
39
|
+
return scope.scopedModels.map(({ model }) => ({ provider: model.provider, id: model.id }));
|
|
40
|
+
};
|
|
41
|
+
bound = { registry, service: { agentDir, modelRuntime, signal: lifetime.signal, allowedModels,
|
|
42
|
+
sessions: selector => createHostSessionsHistory(registry, selector, () => { current(); }),
|
|
43
|
+
openWorker: createHostWorkerLauncher(registry, modelRuntime, allowedModels) } };
|
|
44
|
+
},
|
|
45
|
+
close() { lifetime.abort(); },
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=maintenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenance.js","sourceRoot":"","sources":["../../src/daemon/maintenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,9 @@ export declare function assertTargetUnchanged(before: ResolvedProfileTarget, aft
|
|
|
10
10
|
export declare function assertSessionManagerMatches(manager: SessionManager, sessionId?: string): void;
|
|
11
11
|
export declare function openSessionManager(request: SessionOpenRequest, resolved: ResolvedProfileTarget): Promise<SessionManager>;
|
|
12
12
|
export declare function createWorkerBinding(request: SessionOpenRequest, manager: SessionManager, options: Pick<SessionLifecycleOptions, 'wrapRuntime' | 'composition'>): Promise<SessionBinding>;
|
|
13
|
-
export declare function restrictActiveTools(session: AgentSession, allowedTools: readonly string[]
|
|
13
|
+
export declare function restrictActiveTools(session: AgentSession, allowedTools: readonly string[], options?: {
|
|
14
|
+
readonly reopened?: boolean;
|
|
15
|
+
}): void;
|
|
14
16
|
export declare function assertAbsolutePath(path: string): void;
|
|
15
17
|
export declare function canonicalPath(path: string): Promise<string>;
|
|
16
18
|
//# sourceMappingURL=profile-storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-storage.d.ts","sourceRoot":"","sources":["../../src/daemon/profile-storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAmE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG1I,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAIlH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwB/F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAQvG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAI7F;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CA2B9H;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CA4B9L;
|
|
1
|
+
{"version":3,"file":"profile-storage.d.ts","sourceRoot":"","sources":["../../src/daemon/profile-storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAmE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG1I,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAIlH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwB/F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAQvG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAI7F;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CA2B9H;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CA4B9L;AAGD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAM/I;AAWD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQjE"}
|
|
@@ -88,12 +88,12 @@ export async function openSessionManager(request, resolved) {
|
|
|
88
88
|
}
|
|
89
89
|
export async function createWorkerBinding(request, manager, options) {
|
|
90
90
|
const worker = request.worker;
|
|
91
|
-
if (!request.parentSessionId ||
|
|
92
|
-
throw new Error('Worker requires a
|
|
91
|
+
if (!request.rootSessionId || (worker.host ? request.parentSessionId !== undefined || request.rootSessionId !== manager.getSessionId() : !request.parentSessionId))
|
|
92
|
+
throw new Error('Worker requires a valid parent or host scope.');
|
|
93
93
|
const runtimeRequest = createRuntimeStorageRequest(request.resources.cwd, request.resources.agentDir, request.rootSessionId);
|
|
94
94
|
const runtime = options.wrapRuntime?.(worker.runtime, runtimeRequest) ?? worker.runtime;
|
|
95
95
|
const wrapStreamFunction = options.composition.wrapWorkerStream?.({
|
|
96
|
-
id: manager.getSessionId(), root: request.rootSessionId, parent: request.parentSessionId,
|
|
96
|
+
id: manager.getSessionId(), root: request.rootSessionId, ...(request.parentSessionId ? { parent: request.parentSessionId } : {}),
|
|
97
97
|
});
|
|
98
98
|
const factory = createAgentCoreSessionRuntimeFactory(async () => ({ runtime, modelRuntime: worker.modelRuntime,
|
|
99
99
|
settingsManager: worker.settingsManager, model: worker.model,
|
|
@@ -108,7 +108,7 @@ export async function createWorkerBinding(request, manager, options) {
|
|
|
108
108
|
const tools = TrustedToolCatalog.fromSession(created.session, options.composition.toolPolicy);
|
|
109
109
|
return {
|
|
110
110
|
runtime: created, agentRuntime: runtime, sessionId: manager.getSessionId(), rootSessionId: request.rootSessionId,
|
|
111
|
-
parentSessionId: request.parentSessionId, resources: request.resources, diagnostics: created.diagnostics,
|
|
111
|
+
...(request.parentSessionId ? { parentSessionId: request.parentSessionId } : {}), resources: request.resources, diagnostics: created.diagnostics,
|
|
112
112
|
tools, toolProvenance: tools.provenance,
|
|
113
113
|
activate: async () => {
|
|
114
114
|
await created.session.bindExtensions({ mode: 'print' });
|
|
@@ -116,10 +116,13 @@ export async function createWorkerBinding(request, manager, options) {
|
|
|
116
116
|
},
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
// A reopened worker transcript no longer has the worker's custom tools, so it keeps only the stored tools that still exist.
|
|
120
|
+
export function restrictActiveTools(session, allowedTools, options = {}) {
|
|
121
|
+
const available = new Set(session.getAllTools().map(tool => tool.name));
|
|
122
|
+
const expected = options.reopened ? allowedTools.filter(name => available.has(name)) : allowedTools;
|
|
123
|
+
session.setActiveToolsByName([...expected]);
|
|
121
124
|
const actual = session.getActiveToolNames();
|
|
122
|
-
if (actual.length !==
|
|
125
|
+
if (actual.length !== expected.length || actual.some(name => !expected.includes(name)))
|
|
123
126
|
throw new Error('Worker tool restrictions could not be installed.');
|
|
124
127
|
}
|
|
125
128
|
// A transcript linked from elsewhere (for example a symlinked dotfile store) keeps its listed path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-storage.js","sourceRoot":"","sources":["../../src/daemon/profile-storage.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"profile-storage.js","sourceRoot":"","sources":["../../src/daemon/profile-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@ export declare class SessionProjection {
|
|
|
38
38
|
private readonly streams;
|
|
39
39
|
private streamsBytes;
|
|
40
40
|
private readonly completionOnly;
|
|
41
|
+
private readonly omitted;
|
|
41
42
|
private readonly dirtyCompletionOnly;
|
|
42
43
|
private readonly presentation;
|
|
43
44
|
private readonly completedStreams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/daemon/projection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChI,OAAO,EAEL,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAC9G,KAAK,eAAe,EAAE,KAAK,eAAe,EAE3C,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAKvE,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,eAAe,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC;AAChG,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAA;CAAE;AAC7H,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,IAAI,gBAAgB,CAAC;IAC3B,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,IAAI,OAAO,CAAC;IACtB,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C;AAED,KAAK,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAMlD,qBAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/daemon/projection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChI,OAAO,EAEL,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAC9G,KAAK,eAAe,EAAE,KAAK,eAAe,EAE3C,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAKvE,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,eAAe,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC;AAChG,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAA;CAAE;AAC7H,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,IAAI,gBAAgB,CAAC;IAC3B,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,IAAI,OAAO,CAAC;IACtB,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C;AAED,KAAK,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAMlD,qBAAa,iBAAiB;IA0ChB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAzCpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuE;IACtG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IACzF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8D;IAC3F,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyB;IAC7D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,aAAa,CAA0E;IAC/F,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,YAAY,CAAS;gBAEA,OAAO,EAAE,iBAAiB;IAyBvD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAE/B,IAAI,eAAe,IAAI,OAAO,CAAkD;IAChF,IAAI,oBAAoB,IAAI,OAAO,CAAkC;IACrE,IAAI,gBAAgB,IAAI,SAAS,SAAS,EAAE,CAAiC;IAE7E,qBAAqB,IAAI,IAAI;IAC7B,mBAAmB,IAAI,IAAI;IAE3B,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,MAAM;IAY7H,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC,aAAa,CAAC;IAU7F,mBAAmB,IAAI,SAAS,GAAG,SAAS;IAI5C,sBAAsB,IAAI,MAAM;IAI1B,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAOxG,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAY9H,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKlD,gHAAgH;IAChH,qGAAqG;IACrG,WAAW,IAAI,IAAI;IAInB,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKrG,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMjD,OAAO,IAAI,IAAI;IAOf,UAAU,IAAI,IAAI;IAWlB,OAAO,CAAC,UAAU;IAgDlB,OAAO,IAAI,eAAe,CAAC,SAAS,CAAC;IAErC,qGAAqG;IACrG,MAAM,IAAI,WAAW,EAAE;IAIvB,QAAQ,IAAI,eAAe;IAgB3B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAuD,EAAE,KAAK,GAAE,MAA2B,GAAG,eAAe,CAAC,SAAS,CAAC;IA0BzJ,aAAa,IAAI,SAAS,YAAY,EAAE;IAExC,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI;IAOzE,OAAO,IAAI,IAAI;IAUf,OAAO,CAAC,OAAO;IAqEf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,KAAK;IAmCb,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,OAAO;CAQhB;AAED,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,SAAS,GAAG,gBAAgB,GAAG,YAAY,GAAG,gBAAgB,CAAA;CAAE,CAAC,CAAC;AAKpH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,SAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAsC7F;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAuF;AACrI,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhE;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;;;EAOtD;AA6BD,wBAAgB,aAAa,CAAC,OAAO,EAAE,sBAAsB;;;EAE5D"}
|
|
@@ -21,6 +21,7 @@ export class SessionProjection {
|
|
|
21
21
|
streams = new Map();
|
|
22
22
|
streamsBytes = 0;
|
|
23
23
|
completionOnly = new Map();
|
|
24
|
+
omitted = new Map();
|
|
24
25
|
dirtyCompletionOnly = new Set();
|
|
25
26
|
presentation = new Map();
|
|
26
27
|
completedStreams = new Set();
|
|
@@ -223,6 +224,9 @@ export class SessionProjection {
|
|
|
223
224
|
for (const [id, stream] of this.completionOnly)
|
|
224
225
|
if (stream.message === message.id)
|
|
225
226
|
this.completionOnly.delete(id);
|
|
227
|
+
for (const [id, omittedMessage] of this.omitted)
|
|
228
|
+
if (omittedMessage === message.id)
|
|
229
|
+
this.omitted.delete(id);
|
|
226
230
|
this.options.publish({ v: 1, session: this.id, rev: commit.value.revision, change: { type: 'message.completed', message } });
|
|
227
231
|
if (this.activeDisplay?.message === message.id) {
|
|
228
232
|
this.activeDisplay = undefined;
|
|
@@ -339,6 +343,7 @@ export class SessionProjection {
|
|
|
339
343
|
this.streams.clear();
|
|
340
344
|
this.streamsBytes = 0;
|
|
341
345
|
this.completionOnly.clear();
|
|
346
|
+
this.omitted.clear();
|
|
342
347
|
this.dirtyCompletionOnly.clear();
|
|
343
348
|
}
|
|
344
349
|
receive(event) {
|
|
@@ -447,9 +452,14 @@ export class SessionProjection {
|
|
|
447
452
|
if (this.completedStreams.has(message))
|
|
448
453
|
return;
|
|
449
454
|
const id = `${message}:${index}`;
|
|
450
|
-
if (this.completionOnly.has(id))
|
|
455
|
+
if (this.completionOnly.has(id) || this.omitted.has(id))
|
|
451
456
|
return;
|
|
452
457
|
const old = this.streams.get(id);
|
|
458
|
+
if (!old && this.streams.size + this.completionOnly.size >= LIMITS.activeStreams) {
|
|
459
|
+
// Capped streams stay omitted so later deltas cannot publish an incomplete prefix.
|
|
460
|
+
this.omitted.set(id, message);
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
453
463
|
text = (old?.pendingHighSurrogate ?? '') + text;
|
|
454
464
|
const lastCodeUnit = text.charCodeAt(text.length - 1);
|
|
455
465
|
const pendingHighSurrogate = lastCodeUnit >= 0xd800 && lastCodeUnit <= 0xdbff ? text.slice(-1) : '';
|
|
@@ -467,12 +477,9 @@ export class SessionProjection {
|
|
|
467
477
|
nextOffset++;
|
|
468
478
|
}
|
|
469
479
|
const bytes = Buffer.byteLength(text);
|
|
470
|
-
if (malformed || (
|
|
471
|
-
|| (old?.bytes ?? 0) + bytes > LIMITS.activeStreamBytes
|
|
480
|
+
if (malformed || (old?.bytes ?? 0) + bytes > LIMITS.activeStreamBytes
|
|
472
481
|
|| this.streamsBytes + bytes > LIMITS.activeStreamsBytes) {
|
|
473
482
|
this.removeStream(id);
|
|
474
|
-
if (this.streams.size + this.completionOnly.size >= LIMITS.activeStreams)
|
|
475
|
-
throw new Error('Active stream capacity exceeded.');
|
|
476
483
|
const stream = { id, message, kind, reason: malformed ? 'lost' : 'limit' };
|
|
477
484
|
this.completionOnly.set(id, stream);
|
|
478
485
|
this.dirtyCompletionOnly.add(id);
|