@vibesdotdev/kernel-rpc 1.0.0-rc.4 → 1.0.0-rc.7

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 (130) hide show
  1. package/dist/cli/daemon/runtime.daemon.serve.impl.consumer.d.ts +2 -2
  2. package/dist/cli/daemon/runtime.daemon.serve.impl.consumer.d.ts.map +1 -1
  3. package/dist/cli/daemon/runtime.daemon.serve.impl.consumer.js +6 -0
  4. package/dist/cli/daemon/runtime.daemon.serve.impl.consumer.js.map +1 -1
  5. package/dist/core/helper.d.ts +1 -1
  6. package/dist/core/helper.d.ts.map +1 -1
  7. package/dist/core/helper.js +14 -0
  8. package/dist/core/helper.js.map +1 -1
  9. package/dist/daemon/client/contracts1/connection.d.ts +6 -2
  10. package/dist/daemon/client/contracts1/connection.d.ts.map +1 -1
  11. package/dist/daemon/client/contracts1/connection.js +43 -11
  12. package/dist/daemon/client/contracts1/connection.js.map +1 -1
  13. package/dist/daemon/client/contracts1/responses.d.ts.map +1 -1
  14. package/dist/daemon/client/contracts1/responses.js +3 -1
  15. package/dist/daemon/client/contracts1/responses.js.map +1 -1
  16. package/dist/daemon/client/contracts2/unix-client.d.ts.map +1 -1
  17. package/dist/daemon/client/contracts2/unix-client.js +2 -2
  18. package/dist/daemon/client/contracts2/unix-client.js.map +1 -1
  19. package/dist/daemon/commands/data/write.d.ts.map +1 -1
  20. package/dist/daemon/commands/data/write.js +118 -3
  21. package/dist/daemon/commands/data/write.js.map +1 -1
  22. package/dist/daemon/commands/invoke/tool.d.ts +1 -1
  23. package/dist/daemon/commands/invoke/tool.d.ts.map +1 -1
  24. package/dist/daemon/commands/invoke/tool.js +21 -4
  25. package/dist/daemon/commands/invoke/tool.js.map +1 -1
  26. package/dist/daemon/commands/invoke.d.ts.map +1 -1
  27. package/dist/daemon/commands/invoke.js +3 -1
  28. package/dist/daemon/commands/invoke.js.map +1 -1
  29. package/dist/daemon/hosting/execution/daemon-execution-host.consumer.d.ts.map +1 -1
  30. package/dist/daemon/hosting/execution/daemon-execution-host.consumer.js +6 -1
  31. package/dist/daemon/hosting/execution/daemon-execution-host.consumer.js.map +1 -1
  32. package/dist/daemon/hosting/execution/session-workspace-locator.d.ts +96 -0
  33. package/dist/daemon/hosting/execution/session-workspace-locator.d.ts.map +1 -0
  34. package/dist/daemon/hosting/execution/session-workspace-locator.js +162 -0
  35. package/dist/daemon/hosting/execution/session-workspace-locator.js.map +1 -0
  36. package/dist/daemon/hosting/execution/workspace-execution-hosts.d.ts +60 -0
  37. package/dist/daemon/hosting/execution/workspace-execution-hosts.d.ts.map +1 -0
  38. package/dist/daemon/hosting/execution/workspace-execution-hosts.js +134 -0
  39. package/dist/daemon/hosting/execution/workspace-execution-hosts.js.map +1 -0
  40. package/dist/daemon/hosting/execution/workspace-routing-connection.d.ts +60 -0
  41. package/dist/daemon/hosting/execution/workspace-routing-connection.d.ts.map +1 -0
  42. package/dist/daemon/hosting/execution/workspace-routing-connection.js +153 -0
  43. package/dist/daemon/hosting/execution/workspace-routing-connection.js.map +1 -0
  44. package/dist/daemon/runtime/io/execution.js +2 -2
  45. package/dist/daemon/runtime/io/execution.js.map +1 -1
  46. package/dist/daemon/runtime/lifecycle/shutdown.d.ts.map +1 -1
  47. package/dist/daemon/runtime/lifecycle/shutdown.js +1 -0
  48. package/dist/daemon/runtime/lifecycle/shutdown.js.map +1 -1
  49. package/dist/daemon/runtime/lifecycle/startup.d.ts.map +1 -1
  50. package/dist/daemon/runtime/lifecycle/startup.js +18 -1
  51. package/dist/daemon/runtime/lifecycle/startup.js.map +1 -1
  52. package/dist/daemon/runtime/state.d.ts +3 -0
  53. package/dist/daemon/runtime/state.d.ts.map +1 -1
  54. package/dist/daemon/runtime/state.js +2 -0
  55. package/dist/daemon/runtime/state.js.map +1 -1
  56. package/dist/daemon/services/api/rpc-root.d.ts +1 -0
  57. package/dist/daemon/services/api/rpc-root.d.ts.map +1 -1
  58. package/dist/daemon/services/api/rpc-root.js +1 -0
  59. package/dist/daemon/services/api/rpc-root.js.map +1 -1
  60. package/dist/schemas/contracts/cli/daemon-execution.worker.entry.d.ts +16 -65
  61. package/dist/schemas/contracts/cli/daemon-execution.worker.entry.d.ts.map +1 -1
  62. package/dist/schemas/contracts/core/helper.d.ts +23 -0
  63. package/dist/schemas/contracts/core/helper.d.ts.map +1 -1
  64. package/dist/schemas/contracts/core/helper.js.map +1 -1
  65. package/dist/schemas/contracts/daemon/commands/write.d.ts +1 -0
  66. package/dist/schemas/contracts/daemon/commands/write.d.ts.map +1 -1
  67. package/dist/schemas/contracts/daemon/commands/write.js +2 -1
  68. package/dist/schemas/contracts/daemon/commands/write.js.map +1 -1
  69. package/dist/schemas/contracts/daemon/hosting/contracts1/daemon-execution-host.consumer.d.ts +6 -0
  70. package/dist/schemas/contracts/daemon/hosting/contracts1/daemon-execution-host.consumer.d.ts.map +1 -1
  71. package/dist/schemas/contracts/daemon/hosting/contracts1/daemon-execution-host.consumer.js.map +1 -1
  72. package/dist/schemas/contracts/daemon/hosting/contracts1/daemon.consumer.d.ts +3 -3
  73. package/dist/schemas/contracts/daemon/hosting/contracts1/daemon.consumer.d.ts.map +1 -1
  74. package/dist/schemas/contracts/daemon/hosting/contracts1/daemon.consumer.js.map +1 -1
  75. package/dist/schemas/contracts/daemon/hosting/contracts1/execution-host.schemas.d.ts +36 -245
  76. package/dist/schemas/contracts/daemon/hosting/contracts1/execution-host.schemas.d.ts.map +1 -1
  77. package/dist/schemas/contracts/daemon/hosting/contracts1/execution-host.schemas.js +2 -2
  78. package/dist/schemas/contracts/daemon/hosting/contracts1/execution-host.schemas.js.map +1 -1
  79. package/dist/schemas/contracts/transports/messageport/messageport-listener.d.ts +2 -0
  80. package/dist/schemas/contracts/transports/messageport/messageport-listener.d.ts.map +1 -1
  81. package/dist/schemas/contracts/transports/relay/wire.d.ts +24 -0
  82. package/dist/schemas/contracts/transports/relay/wire.d.ts.map +1 -1
  83. package/dist/schemas/contracts/transports/relay/wire.js +17 -1
  84. package/dist/schemas/contracts/transports/relay/wire.js.map +1 -1
  85. package/dist/schemas/daemon/daemon-client.d.ts +10 -1
  86. package/dist/schemas/daemon/daemon-client.d.ts.map +1 -1
  87. package/dist/schemas/daemon/daemon-client.js +2 -0
  88. package/dist/schemas/daemon/daemon-client.js.map +1 -1
  89. package/dist/schemas/invoke.d.ts +2 -0
  90. package/dist/schemas/invoke.d.ts.map +1 -1
  91. package/dist/transports/http/http-implementation.js +1 -1
  92. package/dist/transports/http/http-implementation.js.map +1 -1
  93. package/dist/transports/relay/broker/index.d.ts +10 -0
  94. package/dist/transports/relay/broker/index.d.ts.map +1 -0
  95. package/dist/transports/relay/broker/index.js +10 -0
  96. package/dist/transports/relay/broker/index.js.map +1 -0
  97. package/dist/transports/relay/broker/relay-broker.d.ts +352 -0
  98. package/dist/transports/relay/broker/relay-broker.d.ts.map +1 -0
  99. package/dist/transports/relay/broker/relay-broker.js +1417 -0
  100. package/dist/transports/relay/broker/relay-broker.js.map +1 -0
  101. package/dist/transports/relay/endpoint.d.ts +36 -0
  102. package/dist/transports/relay/endpoint.d.ts.map +1 -0
  103. package/dist/transports/relay/endpoint.js +54 -0
  104. package/dist/transports/relay/endpoint.js.map +1 -0
  105. package/dist/transports/relay/index.d.ts +2 -1
  106. package/dist/transports/relay/index.d.ts.map +1 -1
  107. package/dist/transports/relay/index.js +3 -1
  108. package/dist/transports/relay/index.js.map +1 -1
  109. package/dist/transports/relay/listener/relay-caller.d.ts +16 -0
  110. package/dist/transports/relay/listener/relay-caller.d.ts.map +1 -0
  111. package/dist/transports/relay/listener/relay-caller.js +34 -0
  112. package/dist/transports/relay/listener/relay-caller.js.map +1 -0
  113. package/dist/transports/relay/listener/relay-consumers.d.ts +2 -1
  114. package/dist/transports/relay/listener/relay-consumers.d.ts.map +1 -1
  115. package/dist/transports/relay/listener/relay-consumers.js +15 -10
  116. package/dist/transports/relay/listener/relay-consumers.js.map +1 -1
  117. package/dist/transports/relay/listener/relay-listen-session.d.ts.map +1 -1
  118. package/dist/transports/relay/listener/relay-listen-session.js +21 -1
  119. package/dist/transports/relay/listener/relay-listen-session.js.map +1 -1
  120. package/dist/transports/relay/testing/broker-routing.d.ts +9 -0
  121. package/dist/transports/relay/testing/broker-routing.d.ts.map +1 -1
  122. package/dist/transports/relay/testing/broker-routing.js +13 -1
  123. package/dist/transports/relay/testing/broker-routing.js.map +1 -1
  124. package/dist/transports/relay/testing/fake-broker.js +1 -1
  125. package/dist/transports/relay/testing/fake-broker.js.map +1 -1
  126. package/dist/transports/relay/wire.d.ts +18 -1
  127. package/dist/transports/relay/wire.d.ts.map +1 -1
  128. package/dist/transports/relay/wire.js +22 -1
  129. package/dist/transports/relay/wire.js.map +1 -1
  130. package/package.json +59 -22
@@ -1,3 +1,4 @@
1
+ import { isCapabilityError } from '@vibesdotdev/kernel';
1
2
  import { invokeTool as invokeToolFromTools } from '@vibesdotdev/tools/execution/invoke';
2
3
  import { ThrownErrorSchema } from "../../../schemas/invoke-support.js";
3
4
  import { createNoopLogger, generateCallId } from "./logger.js";
@@ -16,7 +17,9 @@ export async function invokeTool(runtime, id, params, timeoutMs, caller, workspa
16
17
  if (!runtime.hasKind(kindId)) {
17
18
  return {
18
19
  success: false,
19
- error: `Kind '${kindId}' is not registered. Tools plugin may not be loaded.`
20
+ error: `Kind '${kindId}' is not registered. Tools plugin may not be loaded.`,
21
+ code: 'UNAVAILABLE',
22
+ reason: 'tools-kind-unregistered'
20
23
  };
21
24
  }
22
25
  const accessor = runtime.assets(kindId);
@@ -26,13 +29,17 @@ export async function invokeTool(runtime, id, params, timeoutMs, caller, workspa
26
29
  if (!descriptor) {
27
30
  return {
28
31
  success: false,
29
- error: `Tool not found: ${id}`
32
+ error: `Tool not found: ${id}`,
33
+ code: 'NOT_FOUND',
34
+ reason: 'tool-not-found'
30
35
  };
31
36
  }
32
37
  if (!accessor.has(id)) {
33
38
  return {
34
39
  success: false,
35
- error: `No implementation available for tool '${id}' in current scope`
40
+ error: `No implementation available for tool '${id}' in current scope`,
41
+ code: 'UNAVAILABLE',
42
+ reason: 'tool-implementation-unavailable'
36
43
  };
37
44
  }
38
45
  }
@@ -44,7 +51,7 @@ export async function invokeTool(runtime, id, params, timeoutMs, caller, workspa
44
51
  if (bound)
45
52
  effectiveWorkspace = workspace ? { ...workspace, ...bound } : bound;
46
53
  }
47
- const ctx = {
54
+ let ctx = {
48
55
  callId: generateCallId(),
49
56
  logger: createNoopLogger(),
50
57
  caller,
@@ -52,6 +59,10 @@ export async function invokeTool(runtime, id, params, timeoutMs, caller, workspa
52
59
  // How this caller arrived, as data for caller admission (its instance's transport).
53
60
  metadata: { 'invoke.transport': 'unix' }
54
61
  };
62
+ if (runtime.hasContext('tools/bind-caller-context')) {
63
+ const bindCtx = await runtime.context('tools/bind-caller-context');
64
+ ctx = await bindCtx(ctx);
65
+ }
55
66
  const startTime = Date.now();
56
67
  try {
57
68
  const result = await invokeToolFromTools({ runtime, toolId: id, input: params, ctx, timeoutMs });
@@ -73,6 +84,12 @@ export async function invokeTool(runtime, id, params, timeoutMs, caller, workspa
73
84
  };
74
85
  if (described.success && described.data.stack !== undefined)
75
86
  failure.stack = described.data.stack;
87
+ // A typed refusal keeps its code and reason across the wire, so the caller can rethrow it typed.
88
+ if (err instanceof Error && isCapabilityError(err)) {
89
+ failure.code = err.code;
90
+ if (err.reason !== undefined)
91
+ failure.reason = err.reason;
92
+ }
76
93
  if (/timed out/i.test(message)) {
77
94
  failure.timedOut = true;
78
95
  failure.result = {
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../src/daemon/commands/invoke/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../src/daemon/commands/invoke/tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../src/daemon/commands/invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAIrF,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAIpI,KAAK,aAAa,GAAG,aAAa,CAAC;AAiBnC;;;;GAIG;AACH,wBAAsB,YAAY,CACjC,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,kBAAkB,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAmE/B;AAED,uGAAuG;AACvG,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,GAAG,SAAS,GAAG,aAAa,CAWrH;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../src/daemon/commands/invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAIrF,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAIpI,KAAK,aAAa,GAAG,aAAa,CAAC;AAiBnC;;;;GAIG;AACH,wBAAsB,YAAY,CACjC,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,kBAAkB,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAqE/B;AAED,uGAAuG;AACvG,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,GAAG,SAAS,GAAG,aAAa,CAWrH;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAe,YAAY,CAAC"}
@@ -63,9 +63,11 @@ export async function handleInvoke(message, deps) {
63
63
  const requestedTimeoutMs = positiveMilliseconds(timeout) ?? paramTimeout ?? DEFAULT_TIMEOUT_MS;
64
64
  const timeoutMs = invokeType === 'tool' ? requestedTimeoutMs + TOOL_TIMEOUT_GRACE_MS : requestedTimeoutMs;
65
65
  const startedAt = Date.now();
66
- const result = invokeType === 'tool'
66
+ const answered = invokeType === 'tool'
67
67
  ? await invokeTool(runtime, id, invokeMessage.params ?? {}, timeoutMs, invokeMessage.caller, invokeMessage.workspace)
68
68
  : await invokeCommand(runtime, id, invokeMessage.args ?? {}, invokeMessage.opts ?? {}, timeoutMs, invokeMessage.workspace);
69
+ // Every answer carries its duration, a refusal before execution included: the client requires it.
70
+ const result = answered.duration === undefined ? { ...answered, duration: Date.now() - startedAt } : answered;
69
71
  if (emitActivity !== false) {
70
72
  const parsedDuration = z.number().safeParse(result.duration);
71
73
  const activityError = z.string().safeParse(result.error);
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/daemon/commands/invoke.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/daemon/commands/invoke.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-execution-host.consumer.d.ts","sourceRoot":"","sources":["../../../../src/daemon/hosting/execution/daemon-execution-host.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+E,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIrI,OAAO,KAAK,EAA6B,mBAAmB,EAAE,MAAM,wFAAwF,CAAC;AAI7J,OAAO,EAA2M,KAAK,sBAAsB,EAA6B,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC7U,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE3H,OAAO,EAAE,eAAe,EAAE,MAAM,wFAAwF,CAAC;AAEzH,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,wFAAwF,CAAC;AAE7J,eACA,MAAM,oCAAoC,8BAA8B,CAAC;AAEzE;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,sBAA2B,EACpC,SAAS,CAAC,EAAE,wBAAwB,GAClC,OAAO,CAAC,mBAAmB,CAAC,CA0K9B"}
1
+ {"version":3,"file":"daemon-execution-host.consumer.d.ts","sourceRoot":"","sources":["../../../../src/daemon/hosting/execution/daemon-execution-host.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+E,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIrI,OAAO,KAAK,EAA6B,mBAAmB,EAAE,MAAM,wFAAwF,CAAC;AAI7J,OAAO,EAA2M,KAAK,sBAAsB,EAA6B,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC7U,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE3H,OAAO,EAAE,eAAe,EAAE,MAAM,wFAAwF,CAAC;AAEzH,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,wFAAwF,CAAC;AAE7J,eACA,MAAM,oCAAoC,8BAA8B,CAAC;AAEzE;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,sBAA2B,EACpC,SAAS,CAAC,EAAE,wBAAwB,GAClC,OAAO,CAAC,mBAAmB,CAAC,CA+K9B"}
@@ -41,6 +41,8 @@ export async function startDaemonExecutionHost(runtime, options = {}, workspace)
41
41
  }
42
42
  const ready = Promise.withResolvers();
43
43
  const exited = Promise.withResolvers();
44
+ // Settles on the first failure, native error or exit: the worker serves no new call after it.
45
+ const ended = Promise.withResolvers();
44
46
  const attachments = new Map();
45
47
  const connections = new Set();
46
48
  let drain;
@@ -49,6 +51,7 @@ export async function startDaemonExecutionHost(runtime, options = {}, workspace)
49
51
  let advertisement;
50
52
  const fail = (error) => {
51
53
  failure = error;
54
+ ended.resolve();
52
55
  ready.reject(error);
53
56
  drain?.reject(error);
54
57
  for (const attachment of attachments.values())
@@ -90,6 +93,7 @@ export async function startDaemonExecutionHost(runtime, options = {}, workspace)
90
93
  failure ??= new CapabilityError('Daemon execution worker failed.', 'UNAVAILABLE', {
91
94
  reason: 'daemon-execution-worker-failed', cause: CaughtFailureSchema.parse(error)
92
95
  });
96
+ ended.resolve();
93
97
  ready.reject(failure);
94
98
  drain?.reject(failure);
95
99
  for (const attachment of attachments.values())
@@ -97,6 +101,7 @@ export async function startDaemonExecutionHost(runtime, options = {}, workspace)
97
101
  });
98
102
  worker.on('exit', (code) => {
99
103
  exited.resolve(code);
104
+ ended.resolve();
100
105
  if (!didDrain)
101
106
  fail(new CapabilityError('Daemon execution exited before joined disposal.', 'UNAVAILABLE', {
102
107
  reason: 'daemon-execution-worker-exited', details: { code }
@@ -196,7 +201,7 @@ export async function startDaemonExecutionHost(runtime, options = {}, workspace)
196
201
  })();
197
202
  // One disposal owner per host: the native thread id is unique within this process.
198
203
  await runtime.registerPlugin(createRuntimePlugin({ id: `runtime-plugin.execution-worker.${worker.threadId}`, onDispose: dispose }));
199
- return { control, projection, get advertisement() { return advertisement ?? state.advertisement; }, health: state.health, attach, dispose };
204
+ return { control, projection, get advertisement() { return advertisement ?? state.advertisement; }, health: state.health, attach, ended: ended.promise, dispose };
200
205
  })().then(value => ({ value }), error => ({ failure: CaughtFailureSchema.parse(error) }));
201
206
  if ('failure' in started) {
202
207
  const outcomes = await Promise.allSettled([Promise.resolve().then(() => worker.terminate())]);
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-execution-host.consumer.js","sourceRoot":"","sources":["../../../../src/daemon/hosting/execution/daemon-execution-host.consumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-execution-host.consumer.js","sourceRoot":"","sources":["../../../../src/daemon/hosting/execution/daemon-execution-host.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAqB,MAAM,qBAAqB,CAAC;AACrI,OAAO,EAAE,+BAA+B,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAE,2CAA2C,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC5H,OAAO,EAAE,wBAAwB,EAA4B,MAAM,oDAAoD,CAAC;AAExH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,0BAA0B,EAAmJ,MAAM,6BAA6B,CAAC;AAC7U,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAA8B,MAAM,qBAAqB,CAAC;AAE3H,OAAO,EAAE,eAAe,EAAE,MAAM,wFAAwF,CAAC;AAIzH,MAAM,CAAC,iGAAiG,CACxG,MAAM,oCAAoC,GAAG,2BAA2B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC7C,OAAqB,EACrB,UAAkC,EAAE,EACpC,SAAoC;IAEpC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACtG,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;IAC1F,MAAM,YAAY,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;IACvD,MAAM,eAAe,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;IAC1D,IAAI,MAA2B,CAAC;IAChC,IAAI,CAAC;QACJ,MAAM,KAAK,GAAgE;YAC1E,SAAS;YACT,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,KAAK,EAAE;YAC5F,YAAY,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;SACzD,CAAC;QACF,IAAI,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACtD,MAAM,GAAG,UAAU,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvD,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7D,MAAM,IAAI,eAAe,CAAC,0CAA0C,EAAE,aAAa,EAAE;YACpF,MAAM,EAAE,sCAAsC,EAAE,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC;SACvF,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAwB,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAU,CAAC;IAC/C,8FAA8F;IAC9F,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6E,CAAC;IACzG,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;IACzD,IAAI,KAAiE,CAAC;IACtE,IAAI,OAAoC,CAAC;IACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,aAAgE,CAAC;IACrE,MAAM,IAAI,GAAG,CAAC,KAAsB,EAAQ,EAAE;QAC7C,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAgB,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,0BAA0B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,eAAe,CAAC,6CAA6C,EAAE,aAAa,EAAE;gBACtF,MAAM,EAAE,gCAAgC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;aAC5D,CAAC,CAAC,CAAC;YACJ,OAAO;QACR,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;YAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;aACrG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe;YAAE,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;aACnF,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,qHAAqH;YACrH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAClD,IAAI,CAAC,IAAI,eAAe,CAAC,0BAA0B,EAAE,aAAa,EAAE;gBACnE,MAAM,EAAE,MAAM,IAAI,gCAAgC;gBAClD,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE;gBAC7D,KAAK,EAAE,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;aACtD,CAAC,CAAC,CAAC;QACL,CAAC;aACI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU;YAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzF,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAI,OAAO,CAAQ,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,KAAK,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC/B,oFAAoF;QACpF,OAAO,KAAK,IAAI,eAAe,CAAC,iCAAiC,EAAE,aAAa,EAAE;YACjF,MAAM,EAAE,gCAAgC,EAAE,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC;SACjF,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,eAAe,CAAC,iDAAiD,EAAE,aAAa,EAAE;gBACzG,MAAM,EAAE,gCAAgC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE;aAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/D,SAAS,EAAE,2CAA2C,EAAE,MAAM,EAAE,uBAAuB;SACvF,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5I,MAAM,oBAAoB,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACrJ,MAAM,QAAQ,GAAG,CAAC,UAAoC,EAAE,OAA0B,EAAE,MAAwC,EAAe,EAAE,CAAC,YAAY,CAAC;YAC1J,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;YACzD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACvD,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;SAChF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,oBAAoB,EAAE,+BAA+B,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,KAAK,EAAE,cAAqC,EAAsC,EAAE;YAClG,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK;gBAAE,MAAM,OAAO,IAAI,IAAI,eAAe,CAAC,+BAA+B,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;YAChK,MAAM,SAAS,GAAG,2BAA2B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACpE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAA2B,CAAC;YAClE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;YACtD,MAAM,cAAc,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;YACzD,IAAI,CAAC;gBACJ,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,2BAA2B,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;oBAC5F,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;oBAClE,SAAS,EAAE,2CAA2C,EAAE,MAAM,EAAE,yBAAyB;iBACzF,CAAC,CAAC;gBACH,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC3I,MAAM,oBAAoB,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBACpJ,IAAI,OAAkC,CAAC;gBACvC,MAAM,UAAU,GAA8B;oBAC7C,OAAO,EAAE,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,CAAC,MAAM,CAAC;oBACxE,UAAU,EAAE,QAAQ,CAAC,oBAAoB,EAAE,+BAA+B,EAAE,SAAS,CAAC,MAAM,CAAC;oBAC7F,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB;oBAC9E,OAAO;wBACN,OAAO,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE;4BAC9B,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;4BAC/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;gCACzC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gCAC5G,iBAAiB,CAAC,KAAK,EAAE,EAAE,oBAAoB,CAAC,KAAK,EAAE;6BACvD,CAAC,CAAC;4BACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;4BAC1G,IAAI,QAAQ,CAAC,MAAM;gCAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,6CAA6C,CAAC,CAAC;wBACxG,CAAC,CAAC,EAAE,CAAC;oBACN,CAAC;iBACD,CAAC;gBACF,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC5B,OAAO,UAAU,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjH,MAAM,IAAI,eAAe,CAAC,qCAAqC,EAAE,aAAa,EAAE;oBAC/E,MAAM,EAAE,gCAAgC,EAAE,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC;iBACjF,CAAC,CAAC;YACJ,CAAC;oBAAS,CAAC;gBAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;QACtC,CAAC,CAAC;QACF,IAAI,QAAmC,CAAC;QACxC,MAAM,OAAO,GAAG,GAAkB,EAAE,CAAC,QAAQ,KAAK,CAAC,KAAK,IAAI,EAAE;YAC7D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACpG,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;gBACtC,IAAI,OAAO;oBAAE,MAAM,OAAO,CAAC;gBAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;gBACnD,KAAK,GAAG,YAAY,CAAC;gBACrB,MAAM,CAAC,WAAW,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzE,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE;oBACxD,SAAS,EAAE,2CAA2C,EAAE,MAAM,EAAE,wBAAwB;iBACxF,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;oBAClD,SAAS,EAAE,2CAA2C,EAAE,MAAM,EAAE,uBAAuB;iBACvF,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;gBACzC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAChD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBACvD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;aAC1D,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5H,IAAI,YAAY;gBAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,QAAQ,CAAC,MAAM;gBAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,4CAA4C,CAAC,CAAC;QACvG,CAAC,CAAC,EAAE,CAAC;QACL,mFAAmF;QACnF,MAAM,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,mCAAmC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACpI,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,aAAa,KAAK,OAAO,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;IACnK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1F,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;aACnF,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,+BAA+B,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACnK,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE;YACjD,MAAM,EAAE,8BAA8B,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO;YAC9D,OAAO,EAAE,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE;SAC7I,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC;AACtB,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Which workspace a session-only call runs in (ADR-0020 slice 3, Phase 2–3 design §4
3
+ * "Routing"): the session index, repaired on a miss by asking the workspaces themselves.
4
+ *
5
+ * - The index is session's `session/index` context on the daemon's own runtime, read by
6
+ * id; kernel-rpc never imports session. This runtime is the index's only writer.
7
+ * - A hit answers the indexed root.
8
+ * - A miss is reconciled once: every admitted root is asked, through its own execution
9
+ * host (`WorkspaceExecutionHosts.targetFor`), whether its thread holds the session. One
10
+ * holder is put into the index and the lookup is retried once. No holder leaves the call
11
+ * where it would have run without the index. Two holders refuse `CONFLICT`
12
+ * `session-duplicate`. A workspace whose answer failed is never read as "not here": with
13
+ * no holder found, that failure is the call's. This runtime never opens another
14
+ * workspace's `sessions.db`.
15
+ * - A reconcile that every workspace answered "not here" is remembered for `missTtlMs`
16
+ * (default {@link SESSION_MISS_TTL_MS}, at most {@link SESSION_MISS_LIMIT} ids, oldest
17
+ * forgotten first): within it, a call naming that session asks no workspace and runs where
18
+ * it would have run without the index. A failed answer is never remembered.
19
+ * - A call that names a root and a session is checked against the index: an indexed
20
+ * session in another workspace refuses `CONFLICT` `session-workspace-mismatch`. The
21
+ * check does not reconcile.
22
+ *
23
+ * Admitted roots come from PM's `pm/admitted-workspaces` list (`admittedRootsOf`). A
24
+ * workspace is asked with the read-only `session.holds` runtime command (owned by session,
25
+ * registered on every execution worker), sent as the `command` root method over the
26
+ * routed connection's own attachment to that workspace, so it runs on the transport's
27
+ * verified peer (`sessionHoldsProbe`). Without an admitted list, a miss is not reconciled.
28
+ */
29
+ import { type VibesRuntime } from '@vibesdotdev/kernel';
30
+ import type { RpcConnection } from '@vibesdotdev/kernel-rpc';
31
+ import * as z from 'zod/v4';
32
+ import type { WorkspaceExecutionHosts, WorkspaceExecutionTarget } from './workspace-execution-hosts.ts';
33
+ /** Session's index context. kernel-rpc reads it by id; it never imports session. */
34
+ export declare const SESSION_INDEX_CONTEXT_ID = "session/index";
35
+ /** Session's read-only runtime command: whether a runtime's own store holds a session id. */
36
+ export declare const SESSION_HOLDS_COMMAND = "session.holds";
37
+ /** Asks the workspace thread `target` serves whether it holds `sessionId`. */
38
+ export type SessionHoldsProbe = (target: WorkspaceExecutionTarget, sessionId: string) => Promise<boolean>;
39
+ /** How long a session every workspace answered "not here" for is not asked about again. */
40
+ export declare const SESSION_MISS_TTL_MS = 30000;
41
+ /** The most session ids remembered as held nowhere; the oldest is forgotten first. */
42
+ export declare const SESSION_MISS_LIMIT = 1024;
43
+ /** PM's list of every admitted workspace. kernel-rpc reads it by id; it never imports PM. */
44
+ export declare const PM_ADMITTED_WORKSPACES_CONTEXT_ID = "pm/admitted-workspaces";
45
+ /** The fields this owner reads from an index entry. */
46
+ declare const IndexedSessionSchema: z.ZodObject<{
47
+ sessionId: z.ZodString;
48
+ workspaceRoot: z.ZodString;
49
+ }, z.core.$loose>;
50
+ /** An index entry as this owner reads it. */
51
+ export type IndexedSession = z.infer<typeof IndexedSessionSchema>;
52
+ /** The index as this owner uses it. */
53
+ export interface SessionWorkspaceIndex {
54
+ get(sessionId: string): Promise<IndexedSession | null>;
55
+ put(entry: {
56
+ sessionId: string;
57
+ workspaceRoot: string;
58
+ }): Promise<IndexedSession>;
59
+ }
60
+ export interface SessionWorkspaceLocatorOptions {
61
+ readonly index: SessionWorkspaceIndex;
62
+ readonly hosts: WorkspaceExecutionHosts;
63
+ /** Every admitted workspace root on this machine. Absent: a miss is not reconciled. */
64
+ readonly admittedRoots?: () => Promise<readonly string[]>;
65
+ /** Replaces the probe each `locate` is handed. */
66
+ readonly holds?: SessionHoldsProbe;
67
+ /** How long a session held nowhere is not asked about again. Default {@link SESSION_MISS_TTL_MS}. */
68
+ readonly missTtlMs?: number;
69
+ /** The clock misses expire by. Default `Date.now`. */
70
+ readonly now?: () => number;
71
+ }
72
+ export interface SessionWorkspaceLocator {
73
+ /**
74
+ * The admitted root holding `sessionId`, or undefined when neither the index nor any
75
+ * workspace knows it. `probe` asks one workspace on a miss, over the caller's own connection.
76
+ */
77
+ locate(sessionId: string, probe?: SessionHoldsProbe): Promise<string | undefined>;
78
+ /** Refuse `session-workspace-mismatch` when `sessionId` is indexed under a root other than `root`'s. */
79
+ verifyClaim(sessionId: string, root: string): Promise<void>;
80
+ }
81
+ /** Session's index on `runtime`, or undefined when no session index is composed there. */
82
+ export declare function sessionIndexOf(runtime: VibesRuntime): Promise<SessionWorkspaceIndex | undefined>;
83
+ /**
84
+ * Every admitted root, read from PM's list on each call, or undefined when no admission
85
+ * list is composed on `runtime`.
86
+ */
87
+ export declare function admittedRootsOf(runtime: VibesRuntime): (() => Promise<readonly string[]>) | undefined;
88
+ /**
89
+ * The default probe: `session.holds` as the `command` root method on the control
90
+ * connection `connectionFor` answers for a workspace target. A refusal or a malformed
91
+ * answer is that workspace's failure, never "not held".
92
+ */
93
+ export declare function sessionHoldsProbe(connectionFor: (target: WorkspaceExecutionTarget) => Promise<RpcConnection>): SessionHoldsProbe;
94
+ export declare function createSessionWorkspaceLocator(options: SessionWorkspaceLocatorOptions): SessionWorkspaceLocator;
95
+ export {};
96
+ //# sourceMappingURL=session-workspace-locator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-workspace-locator.d.ts","sourceRoot":"","sources":["../../../../src/daemon/hosting/execution/session-workspace-locator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAExG,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AAExD,6FAA6F;AAC7F,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAKrD,8EAA8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE1G,2FAA2F;AAC3F,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,6FAA6F;AAC7F,eAAO,MAAM,iCAAiC,2BAA2B,CAAC;AAK1E,uDAAuD;AACvD,QAAA,MAAM,oBAAoB;;;iBAAoF,CAAC;AAE/G,6CAA6C;AAC7C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,uCAAuC;AACvC,MAAM,WAAW,qBAAqB;IACrC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACvD,GAAG,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,uFAAuF;IACvF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1D,kDAAkD;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,qGAAqG;IACrG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACvC;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClF,wGAAwG;IACxG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,0FAA0F;AAC1F,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAGtG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAGrG;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,iBAAiB,CAYhI;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,8BAA8B,GAAG,uBAAuB,CA0E9G"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Which workspace a session-only call runs in (ADR-0020 slice 3, Phase 2–3 design §4
3
+ * "Routing"): the session index, repaired on a miss by asking the workspaces themselves.
4
+ *
5
+ * - The index is session's `session/index` context on the daemon's own runtime, read by
6
+ * id; kernel-rpc never imports session. This runtime is the index's only writer.
7
+ * - A hit answers the indexed root.
8
+ * - A miss is reconciled once: every admitted root is asked, through its own execution
9
+ * host (`WorkspaceExecutionHosts.targetFor`), whether its thread holds the session. One
10
+ * holder is put into the index and the lookup is retried once. No holder leaves the call
11
+ * where it would have run without the index. Two holders refuse `CONFLICT`
12
+ * `session-duplicate`. A workspace whose answer failed is never read as "not here": with
13
+ * no holder found, that failure is the call's. This runtime never opens another
14
+ * workspace's `sessions.db`.
15
+ * - A reconcile that every workspace answered "not here" is remembered for `missTtlMs`
16
+ * (default {@link SESSION_MISS_TTL_MS}, at most {@link SESSION_MISS_LIMIT} ids, oldest
17
+ * forgotten first): within it, a call naming that session asks no workspace and runs where
18
+ * it would have run without the index. A failed answer is never remembered.
19
+ * - A call that names a root and a session is checked against the index: an indexed
20
+ * session in another workspace refuses `CONFLICT` `session-workspace-mismatch`. The
21
+ * check does not reconcile.
22
+ *
23
+ * Admitted roots come from PM's `pm/admitted-workspaces` list (`admittedRootsOf`). A
24
+ * workspace is asked with the read-only `session.holds` runtime command (owned by session,
25
+ * registered on every execution worker), sent as the `command` root method over the
26
+ * routed connection's own attachment to that workspace, so it runs on the transport's
27
+ * verified peer (`sessionHoldsProbe`). Without an admitted list, a miss is not reconciled.
28
+ */
29
+ import { CapabilityError, CaughtFailureSchema } from '@vibesdotdev/kernel';
30
+ import * as z from 'zod/v4';
31
+ import { throwWireError } from "../../../core/protocol/wire/verbs.js";
32
+ /** Session's index context. kernel-rpc reads it by id; it never imports session. */
33
+ export const SESSION_INDEX_CONTEXT_ID = 'session/index';
34
+ /** Session's read-only runtime command: whether a runtime's own store holds a session id. */
35
+ export const SESSION_HOLDS_COMMAND = 'session.holds';
36
+ /** What `session.holds` answers. */
37
+ const SessionHoldsResultSchema = z.looseObject({ success: z.literal(true), held: z.boolean() });
38
+ /** How long a session every workspace answered "not here" for is not asked about again. */
39
+ export const SESSION_MISS_TTL_MS = 30_000;
40
+ /** The most session ids remembered as held nowhere; the oldest is forgotten first. */
41
+ export const SESSION_MISS_LIMIT = 1024;
42
+ /** PM's list of every admitted workspace. kernel-rpc reads it by id; it never imports PM. */
43
+ export const PM_ADMITTED_WORKSPACES_CONTEXT_ID = 'pm/admitted-workspaces';
44
+ /** The one field this owner reads from each of PM's admitted records. */
45
+ const AdmittedRecordsSchema = z.array(z.looseObject({ root: z.string().min(1) }));
46
+ /** The fields this owner reads from an index entry. */
47
+ const IndexedSessionSchema = z.looseObject({ sessionId: z.string().min(1), workspaceRoot: z.string().min(1) });
48
+ /** Session's index on `runtime`, or undefined when no session index is composed there. */
49
+ export async function sessionIndexOf(runtime) {
50
+ if (!runtime.hasContext(SESSION_INDEX_CONTEXT_ID))
51
+ return undefined;
52
+ return runtime.context(SESSION_INDEX_CONTEXT_ID);
53
+ }
54
+ /**
55
+ * Every admitted root, read from PM's list on each call, or undefined when no admission
56
+ * list is composed on `runtime`.
57
+ */
58
+ export function admittedRootsOf(runtime) {
59
+ if (!runtime.hasContext(PM_ADMITTED_WORKSPACES_CONTEXT_ID))
60
+ return undefined;
61
+ return async () => AdmittedRecordsSchema.parse(await runtime.context(PM_ADMITTED_WORKSPACES_CONTEXT_ID)).map(record => record.root);
62
+ }
63
+ /**
64
+ * The default probe: `session.holds` as the `command` root method on the control
65
+ * connection `connectionFor` answers for a workspace target. A refusal or a malformed
66
+ * answer is that workspace's failure, never "not held".
67
+ */
68
+ export function sessionHoldsProbe(connectionFor) {
69
+ let next = 0;
70
+ return async (target, sessionId) => {
71
+ const connection = await connectionFor(target);
72
+ const response = await connection.send({
73
+ verb: 'invoke', id: `session-holds-${next++}`, targetRef: connection.rootRef, method: 'command',
74
+ args: [{ t: 'json', v: { command: SESSION_HOLDS_COMMAND, sessionId } }]
75
+ });
76
+ if (response.error)
77
+ throwWireError(response.error);
78
+ const answer = response.result?.t === 'json' ? response.result.v : undefined;
79
+ return SessionHoldsResultSchema.parse(answer).held;
80
+ };
81
+ }
82
+ export function createSessionWorkspaceLocator(options) {
83
+ const { index, hosts, admittedRoots } = options;
84
+ const missTtlMs = options.missTtlMs ?? SESSION_MISS_TTL_MS;
85
+ const now = options.now ?? Date.now;
86
+ /** Session ids every workspace answered "not here" for, with when that answer expires; insertion-ordered. */
87
+ const misses = new Map();
88
+ const rememberedMiss = (sessionId) => {
89
+ const expires = misses.get(sessionId);
90
+ if (expires === undefined)
91
+ return false;
92
+ if (expires > now())
93
+ return true;
94
+ misses.delete(sessionId);
95
+ return false;
96
+ };
97
+ const rememberMiss = (sessionId) => {
98
+ misses.delete(sessionId);
99
+ misses.set(sessionId, now() + missTtlMs);
100
+ while (misses.size > SESSION_MISS_LIMIT) {
101
+ const oldest = misses.keys().next().value;
102
+ if (oldest === undefined)
103
+ break;
104
+ misses.delete(oldest);
105
+ }
106
+ };
107
+ const indexedRoot = async (sessionId) => {
108
+ const entry = await index.get(sessionId);
109
+ return entry === null || entry === undefined ? undefined : IndexedSessionSchema.parse(entry).workspaceRoot;
110
+ };
111
+ /** Ask every admitted workspace; put the one holder. Answers whether one was put. */
112
+ const reconcile = async (sessionId, probe) => {
113
+ const holds = options.holds ?? probe;
114
+ if (!admittedRoots || !holds)
115
+ return false;
116
+ const answers = await Promise.allSettled((await admittedRoots()).map(async (named) => {
117
+ const root = await hosts.admittedRoot(named);
118
+ return { root, held: await holds(await hosts.targetFor(root), sessionId) };
119
+ }));
120
+ const holders = [...new Set(answers.flatMap(answer => (answer.status === 'fulfilled' && answer.value.held ? [answer.value.root] : [])))];
121
+ if (holders.length > 1) {
122
+ throw new CapabilityError('More than one workspace holds this session.', 'CONFLICT', {
123
+ reason: 'session-duplicate', retryable: false, details: { sessionId, roots: holders }
124
+ });
125
+ }
126
+ const [holder] = holders;
127
+ if (holder === undefined) {
128
+ const failed = answers.flatMap(answer => (answer.status === 'rejected' ? [CaughtFailureSchema.parse(answer.reason)] : []));
129
+ if (failed.length === 1)
130
+ throw failed[0];
131
+ if (failed.length > 1)
132
+ throw new AggregateError(failed, 'Workspaces could not say whether they hold this session.');
133
+ rememberMiss(sessionId);
134
+ return false;
135
+ }
136
+ await index.put({ sessionId, workspaceRoot: holder });
137
+ return true;
138
+ };
139
+ return {
140
+ async locate(sessionId, probe) {
141
+ const hit = await indexedRoot(sessionId);
142
+ if (hit !== undefined)
143
+ return hit;
144
+ if (rememberedMiss(sessionId))
145
+ return undefined;
146
+ return (await reconcile(sessionId, probe)) ? indexedRoot(sessionId) : undefined;
147
+ },
148
+ async verifyClaim(sessionId, root) {
149
+ const indexed = await indexedRoot(sessionId);
150
+ if (indexed === undefined)
151
+ return;
152
+ const claimed = await hosts.admittedRoot(root);
153
+ if (claimed === indexed)
154
+ return;
155
+ throw new CapabilityError('This call names a workspace that does not hold its session.', 'CONFLICT', {
156
+ reason: 'session-workspace-mismatch', retryable: false, details: { sessionId, claimedRoot: claimed, indexedRoot: indexed },
157
+ recoveryHint: 'Name the session\'s own workspace, or omit the root and let the session choose it.'
158
+ });
159
+ }
160
+ };
161
+ }
162
+ //# sourceMappingURL=session-workspace-locator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-workspace-locator.js","sourceRoot":"","sources":["../../../../src/daemon/hosting/execution/session-workspace-locator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * One daemon execution host per admitted workspace (ADR-0020 decision 3, Phase 2–3
3
+ * design §2 "Workspace runtime threads").
4
+ *
5
+ * The daemon's own execution host serves its boot workspace and every call that
6
+ * names no workspace, as before. A call that names a root reaches the host of the
7
+ * innermost admitted workspace containing it: that workspace's own worker, booted on
8
+ * its own resolution root R(root) with its own composition, so its tools, storage and
9
+ * writes are that workspace's.
10
+ *
11
+ * - Admission: `pm/admitted-workspace`, resolved with the call's root as the invocation
12
+ * workspace, answers the innermost admitted record. The boot workspace keeps today's
13
+ * behavior: its root, and an unadmitted path inside it, stay on the daemon's own host. An unadmitted root is refused
14
+ * `PERMISSION_DENIED workspace-not-admitted` by that owner. A runtime that composes no
15
+ * admission owner refuses `UNAVAILABLE workspace-admission-unavailable`; nothing
16
+ * spawns a worker for a root nobody admitted.
17
+ * - Lifecycle: spawned on first use, with a single flight per admitted root. A host whose
18
+ * worker failed or exited is dropped, so the next call starts a fresh one. A failed
19
+ * start is not kept.
20
+ * - Workspace hosts take no HTTP and no hot reload: those listeners belong to the
21
+ * daemon's own host, and a second one would collide (isolation audit, fixed-port
22
+ * listeners).
23
+ * - Idle retirement and config-change respawn are not here yet; a host lives until the
24
+ * daemon disposes it.
25
+ */
26
+ import { type VibesRuntime } from '@vibesdotdev/kernel';
27
+ import type { DaemonExecutionHost } from "../../../schemas/contracts/daemon/hosting/contracts1/daemon-execution-host.consumer.ts";
28
+ /** PM's admission context. kernel-rpc reads it by id; it never imports PM. */
29
+ export declare const PM_ADMITTED_WORKSPACE_CONTEXT_ID = "pm/admitted-workspace";
30
+ /** The host a call runs on, and the admitted root it was chosen for (absent: the daemon's own host). */
31
+ export interface WorkspaceExecutionTarget {
32
+ readonly host: DaemonExecutionHost;
33
+ readonly root?: string;
34
+ }
35
+ export interface WorkspaceExecutionHosts {
36
+ /** The host for a call naming `root`; the daemon's own host for no root or its boot workspace. */
37
+ targetFor(root: string | undefined): Promise<WorkspaceExecutionTarget>;
38
+ /**
39
+ * The admitted root a call naming `root` runs under, normalized: the boot root for the
40
+ * boot workspace and an unadmitted path inside it. Starts no host; refuses as `targetFor` does.
41
+ */
42
+ admittedRoot(root: string): Promise<string>;
43
+ /** Dispose every workspace host this owner started (never the daemon's own host). */
44
+ dispose(): Promise<void>;
45
+ }
46
+ export interface WorkspaceExecutionHostsOptions {
47
+ readonly runtime: VibesRuntime;
48
+ /** The daemon's own execution host, owned and disposed by the daemon. */
49
+ readonly defaultHost: DaemonExecutionHost;
50
+ /** The daemon's boot workspace root, served by `defaultHost`. */
51
+ readonly defaultRoot: string;
52
+ /** The admitted root containing `root`; defaults to PM's admission context. */
53
+ readonly admit?: (root: string) => Promise<string>;
54
+ /** Starts a workspace host; defaults to an owned execution worker with no HTTP or hot reload. */
55
+ readonly start?: (root: string) => Promise<DaemonExecutionHost>;
56
+ }
57
+ /** The innermost admitted root containing `root`, through PM's admission owner. */
58
+ export declare function admittedWorkspaceRoot(runtime: VibesRuntime, root: string): Promise<string>;
59
+ export declare function createWorkspaceExecutionHosts(options: WorkspaceExecutionHostsOptions): WorkspaceExecutionHosts;
60
+ //# sourceMappingURL=workspace-execution-hosts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-execution-hosts.d.ts","sourceRoot":"","sources":["../../../../src/daemon/hosting/execution/workspace-execution-hosts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAuC,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAI7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wFAAwF,CAAC;AAGlI,8EAA8E;AAC9E,eAAO,MAAM,gCAAgC,0BAA0B,CAAC;AAKxE,wGAAwG;AACxG,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACvC,kGAAkG;IAClG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvE;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,qFAAqF;IACrF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,iGAAiG;IACjG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAChE;AAeD,mFAAmF;AACnF,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYhG;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,8BAA8B,GAAG,uBAAuB,CAiE9G"}