@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.
Files changed (44) hide show
  1. package/dist/daemon/host-workers.d.ts +34 -0
  2. package/dist/daemon/host-workers.d.ts.map +1 -0
  3. package/dist/daemon/host-workers.js +160 -0
  4. package/dist/daemon/host-workers.js.map +1 -0
  5. package/dist/daemon/maintenance.d.ts +21 -0
  6. package/dist/daemon/maintenance.d.ts.map +1 -0
  7. package/dist/daemon/maintenance.js +48 -0
  8. package/dist/daemon/maintenance.js.map +1 -0
  9. package/dist/daemon/profile-storage.d.ts +3 -1
  10. package/dist/daemon/profile-storage.d.ts.map +1 -1
  11. package/dist/daemon/profile-storage.js +10 -7
  12. package/dist/daemon/profile-storage.js.map +1 -1
  13. package/dist/daemon/projection.d.ts +1 -0
  14. package/dist/daemon/projection.d.ts.map +1 -1
  15. package/dist/daemon/projection.js +12 -5
  16. package/dist/daemon/projection.js.map +1 -1
  17. package/dist/daemon/provider-loader.d.ts +3 -0
  18. package/dist/daemon/provider-loader.d.ts.map +1 -1
  19. package/dist/daemon/provider-loader.js +14 -2
  20. package/dist/daemon/provider-loader.js.map +1 -1
  21. package/dist/daemon/registry.d.ts +6 -0
  22. package/dist/daemon/registry.d.ts.map +1 -1
  23. package/dist/daemon/registry.js +46 -21
  24. package/dist/daemon/registry.js.map +1 -1
  25. package/dist/daemon/server.d.ts +2 -1
  26. package/dist/daemon/server.d.ts.map +1 -1
  27. package/dist/daemon/server.js +2 -2
  28. package/dist/daemon/server.js.map +1 -1
  29. package/dist/daemon/service.d.ts.map +1 -1
  30. package/dist/daemon/service.js +8 -1
  31. package/dist/daemon/service.js.map +1 -1
  32. package/dist/daemon/session-lifecycle-contracts.d.ts +1 -0
  33. package/dist/daemon/session-lifecycle-contracts.d.ts.map +1 -1
  34. package/dist/daemon/session-lifecycle.js +1 -1
  35. package/dist/daemon/session-lifecycle.js.map +1 -1
  36. package/dist/daemon/session-services.d.ts +2 -1
  37. package/dist/daemon/session-services.d.ts.map +1 -1
  38. package/dist/daemon/session-services.js +58 -41
  39. package/dist/daemon/session-services.js.map +1 -1
  40. package/dist/daemon/worker.d.ts +9 -1
  41. package/dist/daemon/worker.d.ts.map +1 -1
  42. package/dist/daemon/worker.js +92 -13
  43. package/dist/daemon/worker.js.map +1 -1
  44. 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":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAI1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAqBnE,MAAM,OAAO,WAAW;IAOO;IANZ,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC7C,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,MAAM,KAAkB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1D,YAA6B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;IAE5D,IAAI,CAAC,EAAU,IAAa,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,KAAK,KAAe,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEtD,IAAI,CAAC,MAAkC;QACrC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5B,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAChG,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAkC,EAAE,MAAmB;QAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACxH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;YAC5G,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0DAA0D,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACpH,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9H,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9G,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC3G,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,aAAa;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,OAAmC,CAAC;QACxC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EAAW,CAAC;QAChE,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;gBACpH,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;gBAChG,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;wBAC7C,MAAM,CAAC,cAAc,EAAE,CAAC;wBACxB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,aAAa;4BAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;wBACnF,IAAI,MAAM,CAAC,eAAe,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAkB,CAAC,KAAK,IAAI;+BACrG,MAAM,CAAC,oBAAoB,KAAK,SAAS,CAAC,UAAU;4BAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBACpH,CAAC,EAAE;gBACH,QAAQ,EAAE,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS;oBACvE,UAAU,EAAE,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAC1I,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,IAAI,OAAO,CAAC,aAAa,KAAK,EAAE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;mBAChG,OAAO,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClJ,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,OAAO;oBAAE,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;qBAC3C,CAAC;oBAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,mCAAmC,CAAC,CAAC;gBAC1F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM,OAAO,CAAC;YAC5C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS;QACP,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO;gBAAE,SAAS;YAChD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACzF,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC;YAChC,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,EAAU,EAAE,SAA2B;QAClD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACvE,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3I,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC;YAAC,OAAO,MAAM,IAAI,CAAC;QAAC,CAAC;gBAClB,CAAC;YAAC,OAAO,KAAK,CAAC,OAAO,CAAC;QAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,MAAM,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACxC,MAAM,KAAK,CAAC,OAAO,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;gBAAE,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7F,MAAM,KAAK,CAAC,OAAO,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,EAAU;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACxC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,KAAK,CAAC,OAAO,CAAC;YACpB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,QAAQ,CAAC,MAAM;YAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;IAC1F,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAuB;QAClD,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3D,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -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[]): void;
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;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAIhG;AAWD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQjE"}
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 || !request.rootSessionId)
92
- throw new Error('Worker requires a registered parent scope.');
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
- export function restrictActiveTools(session, allowedTools) {
120
- session.setActiveToolsByName([...allowedTools]);
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 !== allowedTools.length || actual.some(name => !allowedTools.includes(name)))
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":"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"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/daemon/projection.ts"],"names":[],"mappings":"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"}
@@ -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 || (!old && this.streams.size + this.completionOnly.size >= LIMITS.activeStreams)
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);