@felan-ai/daemon 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +69 -0
  3. package/README.md +61 -2
  4. package/dist/client.d.ts +5 -0
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +4 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/daemon/admission.d.ts +39 -0
  9. package/dist/daemon/admission.d.ts.map +1 -0
  10. package/dist/daemon/admission.js +175 -0
  11. package/dist/daemon/admission.js.map +1 -0
  12. package/dist/daemon/agent-logs.d.ts +11 -0
  13. package/dist/daemon/agent-logs.d.ts.map +1 -0
  14. package/dist/daemon/agent-logs.js +31 -0
  15. package/dist/daemon/agent-logs.js.map +1 -0
  16. package/dist/daemon/bootstrap.d.ts +7 -0
  17. package/dist/daemon/bootstrap.d.ts.map +1 -0
  18. package/dist/daemon/bootstrap.js +4 -0
  19. package/dist/daemon/bootstrap.js.map +1 -0
  20. package/dist/daemon/broker.d.ts +94 -0
  21. package/dist/daemon/broker.d.ts.map +1 -0
  22. package/dist/daemon/broker.js +374 -0
  23. package/dist/daemon/broker.js.map +1 -0
  24. package/dist/daemon/commands.d.ts +47 -0
  25. package/dist/daemon/commands.d.ts.map +1 -0
  26. package/dist/daemon/commands.js +639 -0
  27. package/dist/daemon/commands.js.map +1 -0
  28. package/dist/daemon/control-recovery.d.ts +9 -0
  29. package/dist/daemon/control-recovery.d.ts.map +1 -0
  30. package/dist/daemon/control-recovery.js +68 -0
  31. package/dist/daemon/control-recovery.js.map +1 -0
  32. package/dist/daemon/control-state.d.ts +1915 -0
  33. package/dist/daemon/control-state.d.ts.map +1 -0
  34. package/dist/daemon/control-state.js +154 -0
  35. package/dist/daemon/control-state.js.map +1 -0
  36. package/dist/daemon/control-store.d.ts +113 -0
  37. package/dist/daemon/control-store.d.ts.map +1 -0
  38. package/dist/daemon/control-store.js +901 -0
  39. package/dist/daemon/control-store.js.map +1 -0
  40. package/dist/daemon/execution-policy.d.ts +15 -0
  41. package/dist/daemon/execution-policy.d.ts.map +1 -0
  42. package/dist/daemon/execution-policy.js +42 -0
  43. package/dist/daemon/execution-policy.js.map +1 -0
  44. package/dist/daemon/execution-services.d.ts +5 -0
  45. package/dist/daemon/execution-services.d.ts.map +1 -0
  46. package/dist/daemon/execution-services.js +73 -0
  47. package/dist/daemon/execution-services.js.map +1 -0
  48. package/dist/daemon/executions.d.ts +134 -0
  49. package/dist/daemon/executions.d.ts.map +1 -0
  50. package/dist/daemon/executions.js +486 -0
  51. package/dist/daemon/executions.js.map +1 -0
  52. package/dist/daemon/extension-ui.d.ts +24 -0
  53. package/dist/daemon/extension-ui.d.ts.map +1 -0
  54. package/dist/daemon/extension-ui.js +161 -0
  55. package/dist/daemon/extension-ui.js.map +1 -0
  56. package/dist/daemon/fanout.d.ts +40 -0
  57. package/dist/daemon/fanout.d.ts.map +1 -0
  58. package/dist/daemon/fanout.js +304 -0
  59. package/dist/daemon/fanout.js.map +1 -0
  60. package/dist/daemon/headless-json.d.ts +3 -0
  61. package/dist/daemon/headless-json.d.ts.map +1 -0
  62. package/dist/daemon/headless-json.js +20 -0
  63. package/dist/daemon/headless-json.js.map +1 -0
  64. package/dist/daemon/host-config.d.ts +61 -0
  65. package/dist/daemon/host-config.d.ts.map +1 -0
  66. package/dist/daemon/host-config.js +167 -0
  67. package/dist/daemon/host-config.js.map +1 -0
  68. package/dist/daemon/host-services.d.ts +61 -0
  69. package/dist/daemon/host-services.d.ts.map +1 -0
  70. package/dist/daemon/host-services.js +2 -0
  71. package/dist/daemon/host-services.js.map +1 -0
  72. package/dist/daemon/ipc.d.ts +14 -0
  73. package/dist/daemon/ipc.d.ts.map +1 -0
  74. package/dist/daemon/ipc.js +233 -0
  75. package/dist/daemon/ipc.js.map +1 -0
  76. package/dist/daemon/legacy-sessions.d.ts +48 -0
  77. package/dist/daemon/legacy-sessions.d.ts.map +1 -0
  78. package/dist/daemon/legacy-sessions.js +328 -0
  79. package/dist/daemon/legacy-sessions.js.map +1 -0
  80. package/dist/daemon/lifecycle.d.ts +44 -0
  81. package/dist/daemon/lifecycle.d.ts.map +1 -0
  82. package/dist/daemon/lifecycle.js +164 -0
  83. package/dist/daemon/lifecycle.js.map +1 -0
  84. package/dist/daemon/main.d.ts +3 -0
  85. package/dist/daemon/main.d.ts.map +1 -0
  86. package/dist/daemon/main.js +83 -0
  87. package/dist/daemon/main.js.map +1 -0
  88. package/dist/daemon/message-display.d.ts +4 -0
  89. package/dist/daemon/message-display.d.ts.map +1 -0
  90. package/dist/daemon/message-display.js +20 -0
  91. package/dist/daemon/message-display.js.map +1 -0
  92. package/dist/daemon/native-ownership.d.ts +13 -0
  93. package/dist/daemon/native-ownership.d.ts.map +1 -0
  94. package/dist/daemon/native-ownership.js +173 -0
  95. package/dist/daemon/native-ownership.js.map +1 -0
  96. package/dist/daemon/operational-log.d.ts +23 -0
  97. package/dist/daemon/operational-log.d.ts.map +1 -0
  98. package/dist/daemon/operational-log.js +79 -0
  99. package/dist/daemon/operational-log.js.map +1 -0
  100. package/dist/daemon/ownership.d.ts +35 -0
  101. package/dist/daemon/ownership.d.ts.map +1 -0
  102. package/dist/daemon/ownership.js +395 -0
  103. package/dist/daemon/ownership.js.map +1 -0
  104. package/dist/daemon/persistence.d.ts +110 -0
  105. package/dist/daemon/persistence.d.ts.map +1 -0
  106. package/dist/daemon/persistence.js +540 -0
  107. package/dist/daemon/persistence.js.map +1 -0
  108. package/dist/daemon/process-adapter.d.ts +23 -0
  109. package/dist/daemon/process-adapter.d.ts.map +1 -0
  110. package/dist/daemon/process-adapter.js +2 -0
  111. package/dist/daemon/process-adapter.js.map +1 -0
  112. package/dist/daemon/processes.d.ts +102 -0
  113. package/dist/daemon/processes.d.ts.map +1 -0
  114. package/dist/daemon/processes.js +691 -0
  115. package/dist/daemon/processes.js.map +1 -0
  116. package/dist/daemon/profile-storage.d.ts +16 -0
  117. package/dist/daemon/profile-storage.d.ts.map +1 -0
  118. package/dist/daemon/profile-storage.js +148 -0
  119. package/dist/daemon/profile-storage.js.map +1 -0
  120. package/dist/daemon/projection.d.ts +110 -0
  121. package/dist/daemon/projection.d.ts.map +1 -0
  122. package/dist/daemon/projection.js +661 -0
  123. package/dist/daemon/projection.js.map +1 -0
  124. package/dist/daemon/provider-loader.d.ts +28 -0
  125. package/dist/daemon/provider-loader.d.ts.map +1 -0
  126. package/dist/daemon/provider-loader.js +376 -0
  127. package/dist/daemon/provider-loader.js.map +1 -0
  128. package/dist/daemon/provider.d.ts +92 -0
  129. package/dist/daemon/provider.d.ts.map +1 -0
  130. package/dist/daemon/provider.js +31 -0
  131. package/dist/daemon/provider.js.map +1 -0
  132. package/dist/daemon/registry.d.ts +209 -0
  133. package/dist/daemon/registry.d.ts.map +1 -0
  134. package/dist/daemon/registry.js +1591 -0
  135. package/dist/daemon/registry.js.map +1 -0
  136. package/dist/daemon/runtime-dependencies.d.ts +5 -0
  137. package/dist/daemon/runtime-dependencies.d.ts.map +1 -0
  138. package/dist/daemon/runtime-dependencies.js +31 -0
  139. package/dist/daemon/runtime-dependencies.js.map +1 -0
  140. package/dist/daemon/server.d.ts +110 -0
  141. package/dist/daemon/server.d.ts.map +1 -0
  142. package/dist/daemon/server.js +556 -0
  143. package/dist/daemon/server.js.map +1 -0
  144. package/dist/daemon/service.d.ts +38 -0
  145. package/dist/daemon/service.d.ts.map +1 -0
  146. package/dist/daemon/service.js +275 -0
  147. package/dist/daemon/service.js.map +1 -0
  148. package/dist/daemon/session-cursor.d.ts +3 -0
  149. package/dist/daemon/session-cursor.d.ts.map +1 -0
  150. package/dist/daemon/session-cursor.js +4 -0
  151. package/dist/daemon/session-cursor.js.map +1 -0
  152. package/dist/daemon/session-execution.d.ts +88 -0
  153. package/dist/daemon/session-execution.d.ts.map +1 -0
  154. package/dist/daemon/session-execution.js +2 -0
  155. package/dist/daemon/session-execution.js.map +1 -0
  156. package/dist/daemon/session-executions.d.ts +5 -0
  157. package/dist/daemon/session-executions.d.ts.map +1 -0
  158. package/dist/daemon/session-executions.js +146 -0
  159. package/dist/daemon/session-executions.js.map +1 -0
  160. package/dist/daemon/session-files.d.ts +28 -0
  161. package/dist/daemon/session-files.d.ts.map +1 -0
  162. package/dist/daemon/session-files.js +189 -0
  163. package/dist/daemon/session-files.js.map +1 -0
  164. package/dist/daemon/session-lifecycle-contracts.d.ts +104 -0
  165. package/dist/daemon/session-lifecycle-contracts.d.ts.map +1 -0
  166. package/dist/daemon/session-lifecycle-contracts.js +2 -0
  167. package/dist/daemon/session-lifecycle-contracts.js.map +1 -0
  168. package/dist/daemon/session-lifecycle.d.ts +26 -0
  169. package/dist/daemon/session-lifecycle.d.ts.map +1 -0
  170. package/dist/daemon/session-lifecycle.js +246 -0
  171. package/dist/daemon/session-lifecycle.js.map +1 -0
  172. package/dist/daemon/session-runtime.d.ts +64 -0
  173. package/dist/daemon/session-runtime.d.ts.map +1 -0
  174. package/dist/daemon/session-runtime.js +3 -0
  175. package/dist/daemon/session-runtime.js.map +1 -0
  176. package/dist/daemon/session-services.d.ts +6 -0
  177. package/dist/daemon/session-services.d.ts.map +1 -0
  178. package/dist/daemon/session-services.js +144 -0
  179. package/dist/daemon/session-services.js.map +1 -0
  180. package/dist/daemon/shutdown-error.d.ts +12 -0
  181. package/dist/daemon/shutdown-error.d.ts.map +1 -0
  182. package/dist/daemon/shutdown-error.js +51 -0
  183. package/dist/daemon/shutdown-error.js.map +1 -0
  184. package/dist/daemon/supervisor.d.ts +28 -0
  185. package/dist/daemon/supervisor.d.ts.map +1 -0
  186. package/dist/daemon/supervisor.js +159 -0
  187. package/dist/daemon/supervisor.js.map +1 -0
  188. package/dist/daemon/target.d.ts +55 -0
  189. package/dist/daemon/target.d.ts.map +1 -0
  190. package/dist/daemon/target.js +191 -0
  191. package/dist/daemon/target.js.map +1 -0
  192. package/dist/daemon/tree.d.ts +7 -0
  193. package/dist/daemon/tree.d.ts.map +1 -0
  194. package/dist/daemon/tree.js +126 -0
  195. package/dist/daemon/tree.js.map +1 -0
  196. package/dist/daemon/ui-vocabulary.d.ts +29 -0
  197. package/dist/daemon/ui-vocabulary.d.ts.map +1 -0
  198. package/dist/daemon/ui-vocabulary.js +323 -0
  199. package/dist/daemon/ui-vocabulary.js.map +1 -0
  200. package/dist/daemon/worker.d.ts +5 -0
  201. package/dist/daemon/worker.d.ts.map +1 -0
  202. package/dist/daemon/worker.js +49 -0
  203. package/dist/daemon/worker.js.map +1 -0
  204. package/dist/index.d.ts +4 -0
  205. package/dist/index.d.ts.map +1 -0
  206. package/dist/index.js +12 -0
  207. package/dist/index.js.map +1 -0
  208. package/dist/lock.d.ts +27 -0
  209. package/dist/lock.d.ts.map +1 -0
  210. package/dist/lock.js +432 -0
  211. package/dist/lock.js.map +1 -0
  212. package/dist/logger.d.ts +9 -0
  213. package/dist/logger.d.ts.map +1 -0
  214. package/dist/logger.js +56 -0
  215. package/dist/logger.js.map +1 -0
  216. package/dist/remote/backoff.d.ts +17 -0
  217. package/dist/remote/backoff.d.ts.map +1 -0
  218. package/dist/remote/backoff.js +18 -0
  219. package/dist/remote/backoff.js.map +1 -0
  220. package/dist/remote/batch.d.ts +3 -0
  221. package/dist/remote/batch.d.ts.map +1 -0
  222. package/dist/remote/batch.js +27 -0
  223. package/dist/remote/batch.js.map +1 -0
  224. package/dist/remote/command-journal.d.ts +30 -0
  225. package/dist/remote/command-journal.d.ts.map +1 -0
  226. package/dist/remote/command-journal.js +72 -0
  227. package/dist/remote/command-journal.js.map +1 -0
  228. package/dist/remote/commands.d.ts +48 -0
  229. package/dist/remote/commands.d.ts.map +1 -0
  230. package/dist/remote/commands.js +145 -0
  231. package/dist/remote/commands.js.map +1 -0
  232. package/dist/remote/connector.d.ts +135 -0
  233. package/dist/remote/connector.d.ts.map +1 -0
  234. package/dist/remote/connector.js +1069 -0
  235. package/dist/remote/connector.js.map +1 -0
  236. package/dist/remote/content.d.ts +17 -0
  237. package/dist/remote/content.d.ts.map +1 -0
  238. package/dist/remote/content.js +116 -0
  239. package/dist/remote/content.js.map +1 -0
  240. package/dist/remote/outbox.d.ts +52 -0
  241. package/dist/remote/outbox.d.ts.map +1 -0
  242. package/dist/remote/outbox.js +321 -0
  243. package/dist/remote/outbox.js.map +1 -0
  244. package/dist/remote/platform.d.ts +53 -0
  245. package/dist/remote/platform.d.ts.map +1 -0
  246. package/dist/remote/platform.js +231 -0
  247. package/dist/remote/platform.js.map +1 -0
  248. package/dist/remote/realtime.d.ts +45 -0
  249. package/dist/remote/realtime.d.ts.map +1 -0
  250. package/dist/remote/realtime.js +265 -0
  251. package/dist/remote/realtime.js.map +1 -0
  252. package/dist/remote/sharing.d.ts +16 -0
  253. package/dist/remote/sharing.d.ts.map +1 -0
  254. package/dist/remote/sharing.js +24 -0
  255. package/dist/remote/sharing.js.map +1 -0
  256. package/dist/remote/state.d.ts +52 -0
  257. package/dist/remote/state.d.ts.map +1 -0
  258. package/dist/remote/state.js +156 -0
  259. package/dist/remote/state.js.map +1 -0
  260. package/dist/remote/text.d.ts +11 -0
  261. package/dist/remote/text.d.ts.map +1 -0
  262. package/dist/remote/text.js +188 -0
  263. package/dist/remote/text.js.map +1 -0
  264. package/dist/remote/token.d.ts +39 -0
  265. package/dist/remote/token.d.ts.map +1 -0
  266. package/dist/remote/token.js +238 -0
  267. package/dist/remote/token.js.map +1 -0
  268. package/dist/runtime-factory.d.ts +12 -0
  269. package/dist/runtime-factory.d.ts.map +1 -0
  270. package/dist/runtime-factory.js +12 -0
  271. package/dist/runtime-factory.js.map +1 -0
  272. package/dist/session-history.d.ts +29 -0
  273. package/dist/session-history.d.ts.map +1 -0
  274. package/dist/session-history.js +374 -0
  275. package/dist/session-history.js.map +1 -0
  276. package/dist/setup/dependencies.d.ts +15 -0
  277. package/dist/setup/dependencies.d.ts.map +1 -0
  278. package/dist/setup/dependencies.js +2 -0
  279. package/dist/setup/dependencies.js.map +1 -0
  280. package/dist/setup/open.d.ts +8 -0
  281. package/dist/setup/open.d.ts.map +1 -0
  282. package/dist/setup/open.js +16 -0
  283. package/dist/setup/open.js.map +1 -0
  284. package/dist/version.d.ts +2 -0
  285. package/dist/version.d.ts.map +1 -0
  286. package/dist/version.js +4 -0
  287. package/dist/version.js.map +1 -0
  288. package/package.json +65 -3
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Felan contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE ADDED
@@ -0,0 +1,69 @@
1
+ @felan-ai/daemon
2
+
3
+ The remote connector uses @supabase/supabase-js 2.97.0 from
4
+ https://github.com/supabase/supabase-js under the MIT License.
5
+ Its dependencies retain their upstream licensing terms.
6
+
7
+ The local daemon ownership adapter uses Koffi 3.3.2 from
8
+ https://github.com/Koromix/koffi under the MIT License.
9
+ Copyright (c) 2026 Niels Martignène <niels.martignene@protonmail.com>.
10
+ Koffi and its platform prebuild packages retain their upstream license files.
11
+
12
+ Copyright (c) 2026 Felan contributors
13
+
14
+ This package composes the MIT-licensed @felan-ai/agent-core and Felan extension
15
+ packages listed in package.json. Their package-level LICENSE and NOTICE files
16
+ contain the applicable attribution and source provenance.
17
+
18
+ The optional Codebase Memory integration uses @felan-ai/ext-codebase-memory,
19
+ which adapts pi-cbm 1.2.1 and integrates with codebase-memory-mcp 0.11.0. The
20
+ native executable is installed only after explicit confirmation and is not
21
+ bundled in this npm package. Its package-level LICENSE and NOTICE contain the
22
+ immutable source revisions and terms.
23
+
24
+ The local-first memory integration is original MIT-licensed Felan code from
25
+ @felan-ai/ext-memory. Its package-level LICENSE and NOTICE contain the
26
+ applicable attribution.
27
+
28
+ The session compaction integration uses original Felan code from
29
+ @felan-ai/ext-session-compaction. Its design references reviewed releases of
30
+ pi-smart-compact and pi-vcc; no upstream source is bundled. Its package-level
31
+ LICENSE and NOTICE contain the applicable attribution.
32
+
33
+ The classifier integration uses original Felan Pi-backed bridge code from
34
+ @felan-ai/agent-core. The host may inject it into local runtimes.
35
+ The model tools integration uses original MIT-licensed Felan code from
36
+ @felan-ai/ext-model-tools. Its package-level LICENSE and NOTICE contain the
37
+ applicable attribution.
38
+
39
+ The Fusion integration uses original MIT-licensed Felan code from
40
+ @felan-ai/ext-fusion. It is design-informed by disler/fusion-harness at the
41
+ reviewed revision recorded in the extension's NOTICE; no upstream source or
42
+ prompt text is copied. Its package-level LICENSE and NOTICE contain details.
43
+
44
+ The daemon and its temporarily mixed presenter adapters use @earendil-works/pi-coding-agent and
45
+ @earendil-works/pi-tui from https://github.com/earendil-works/pi,
46
+ licensed under the MIT License.
47
+ Copyright (c) 2025 Mario Zechner.
48
+ It also uses @earendil-works/pi-server from the same project under the
49
+ MIT License.
50
+
51
+ The local powerline subscription host adapts provider request behavior from
52
+ packages/pi-powerline in https://github.com/mslavov/pi-extensions at commit
53
+ 7e72e509fe45a5a87c4c2e176cb711de994a8c1d. Copyright (c) 2026 Milko Slavov.
54
+ That source credits the MIT-licensed packages/sub-core from
55
+ https://github.com/marckrenn/pi-sub for subscription provider and usage logic.
56
+ Copyright (c) 2026 Marc Krenn.
57
+
58
+ The local subagent navigator adapts the MIT-licensed agent navigator and
59
+ transcript components from packages/pi-subagents in
60
+ https://github.com/mslavov/pi-extensions at commit
61
+ 7e72e509fe45a5a87c4c2e176cb711de994a8c1d. Copyright (c) 2026 tintinweb.
62
+ Modifications copyright (c) 2026 Milko Slavov.
63
+
64
+ The local MCP OAuth host uses @napi-rs/keyring 1.3.0 from
65
+ https://github.com/Brooooooklyn/keyring-node, licensed under the MIT License.
66
+ Copyright (c) 2020 N-API for Rust.
67
+
68
+ It uses open 11.0.0 from https://github.com/sindresorhus/open, licensed under
69
+ the MIT License. Copyright (c) Sindre Sorhus.
package/README.md CHANGED
@@ -1,3 +1,62 @@
1
- # Temporary Holding Version
1
+ # Felan session daemon
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ `@felan-ai/daemon` owns the session server, admission, registry, canonical
4
+ persistence and execution lifetime. It has no dependency on the Felan client
5
+ or extension implementations. `@felan-ai/felan` supplies local providers,
6
+ default configuration and clients, and installs the exact daemon version.
7
+
8
+ Importing this package does not start a daemon. A managing package launches the
9
+ installed entrypoint with trusted configuration. Provider modules resolve from
10
+ that installation, never from the working directory or project content.
11
+
12
+ ## Contracts and configuration
13
+
14
+ - `.` exports `DAEMON_VERSION` and the configured `SESSION_RUNTIME_SERVICE`.
15
+ - `./version` exports `DAEMON_VERSION` without loading session runtime contracts.
16
+ - `./host-config` exposes host configuration schemas, loading and trusted
17
+ provider resolution for managing packages.
18
+ - `./session-runtime` describes session composition and host operations for
19
+ configuration, preferences, setup and root preparation. Providers supply
20
+ these operations and credential storage; the daemon retains admission and
21
+ shutdown ownership.
22
+ - `./provider` describes trusted provider definitions, restricted execution
23
+ ports, process adapters and shared storage/locking helpers.
24
+ - `./client` exposes authenticated local transport, target resolution and
25
+ managed daemon launch. `./daemon-bootstrap` supports managing entrypoints.
26
+ - Internal subpaths, including registry, stores, persistence and the runtime
27
+ UI translator, are not exported.
28
+
29
+ Local settings parsing, keychain credentials, model defaults, HTTP bootstrap,
30
+ system prompt loading, folder trust and authentication workers belong to
31
+ `@felan-ai/felan` providers, not the daemon package.
32
+
33
+ The old `./daemon-profile` export is removed. Daemon 0.1.0 and protocol 0.2.0
34
+ are coordinated with Agent Core 0.13.0.
35
+ They are not published by local verification. New npm packages still require
36
+ the manual 0.0.0 bootstrap and trusted-publisher setup in the
37
+ [release procedure](../../docs/releasing.md).
38
+
39
+ `host.json` selects providers, extensions and policy. Precedence is an explicit
40
+ absolute path, the agent-directory file, then a packaged default supplied by
41
+ the manager. The generic daemon has no implicit local provider configuration.
42
+ Provider changes require restart. Session configuration and storage identities
43
+ are checked on restore; changed or missing identities require explicit reload.
44
+ Control state uses version 1. Invalid or unsupported data fails closed and is
45
+ preserved for recovery; there is no automatic migration, reset or replay.
46
+
47
+ Stdio transports and their persistent readers are session infrastructure, not
48
+ active work. Their consumers report in-flight requests through the runtime
49
+ lifetime service. Idle transports do not prevent reload or eviction; the daemon
50
+ still terminates them and joins their readers before releasing the session.
51
+ Shell jobs and interactive terminals continue to block eviction while running.
52
+
53
+ ## Presentation and verification
54
+
55
+ Clients render the shared UI vocabulary. Optional renderer hints do not grant
56
+ authority. Capabilities and trusted transport facts determine eligibility;
57
+ client-kind labels do not. Host setup applies policy before local-console
58
+ approval, and strict ACP execution policy remains independent of presentation.
59
+
60
+ The pinned Pi SDK transitively includes `pi-tui`; this package is not claimed
61
+ to be terminal-free. Run tests through `scripts/test-isolated.sh`, which gives
62
+ each run a fresh HOME, agent directory and TMPDIR.
@@ -0,0 +1,5 @@
1
+ export { connectLocalIpc } from './daemon/ipc.js';
2
+ export { spawnDetachedDaemon } from './daemon/supervisor.js';
3
+ export { assertTargetIdentity, protocolTarget, resolveDaemonTarget } from './daemon/target.js';
4
+ export type { DaemonTarget, ResolvedDaemonTarget } from './daemon/target.js';
5
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/F,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/client.js ADDED
@@ -0,0 +1,4 @@
1
+ export { connectLocalIpc } from './daemon/ipc.js';
2
+ export { spawnDetachedDaemon } from './daemon/supervisor.js';
3
+ export { assertTargetIdentity, protocolTarget, resolveDaemonTarget } from './daemon/target.js';
4
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { type ClientEnvelope, type Response } from '@felan-ai/session-protocol';
2
+ import type { DaemonControlStore } from './control-store.js';
3
+ export interface AdmissionOptions {
4
+ maxPending?: number;
5
+ maxBytes?: number;
6
+ committed?(revisions: Readonly<Record<string, number>>): void;
7
+ dispatched?(revisions: Readonly<Record<string, number>>): void;
8
+ }
9
+ export interface AdmittedCommand {
10
+ readonly request: ClientEnvelope;
11
+ assertDispatch(): void;
12
+ dispatch<T>(effect: () => T): T;
13
+ }
14
+ export interface AdmissionOutcome {
15
+ response: Response | Promise<Response>;
16
+ }
17
+ export type AdmissionHandler = (command: AdmittedCommand) => AdmissionOutcome | Promise<AdmissionOutcome>;
18
+ export declare const SAFETY_BYTES: number;
19
+ export declare class OrderedAdmission {
20
+ private readonly store;
21
+ private readonly options;
22
+ private readonly pending;
23
+ private readonly lanes;
24
+ private bytes;
25
+ private duplicateWaiters;
26
+ private readonly maxPending;
27
+ private readonly maxBytes;
28
+ constructor(store: DaemonControlStore, options?: AdmissionOptions);
29
+ submit(value: unknown, principal: string, handler?: AdmissionHandler): Promise<Response>;
30
+ private record;
31
+ private retained;
32
+ private savedResponse;
33
+ private prepare;
34
+ private finish;
35
+ private failedResponse;
36
+ }
37
+ /** Wire-safe text of an error; diagnostics are single-line, bounded by the protocol and never quote credentials or parsed file content. */
38
+ export declare function diagnosticMessage(error: unknown): string;
39
+ //# sourceMappingURL=admission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/daemon/admission.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAAE,KAAK,QAAQ,EACnC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9D,UAAU,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,cAAc,IAAI,IAAI,CAAC;IAEvB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;CACjC;AAGD,MAAM,WAAW,gBAAgB;IAAG,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE;AAC5E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAI1G,eAAO,MAAM,YAAY,QAAY,CAAC;AAEtC,qBAAa,gBAAgB;IAQf,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAsB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPhF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAC1D,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEL,KAAK,EAAE,kBAAkB,EAAmB,OAAO,GAAE,gBAAqB;IAUjG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0C9F,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;YAMP,OAAO;YA0BP,MAAM;IAiBpB,OAAO,CAAC,cAAc;CASvB;AAED,2IAA2I;AAC3I,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMxD"}
@@ -0,0 +1,175 @@
1
+ import { ERROR_CODES, IdSchema, LIMITS, OPERATION_CATALOG, ProtocolValidationError, parseClientEnvelope, parseSchema, parseServerEnvelope, } from '@felan-ai/session-protocol';
2
+ import { ControlStoreError } from './control-state.js';
3
+ import { redact } from '../logger.js';
4
+ const safetyOperations = new Set(['cancel', 'executions.cancel', 'interaction.answer', 'processes.stop', 'host.stop', 'host.restart', 'close']);
5
+ // Backpressure headroom kept free for cancellation, answers and other safety operations.
6
+ export const SAFETY_BYTES = 64 * 1024;
7
+ export class OrderedAdmission {
8
+ store;
9
+ options;
10
+ pending = new Map();
11
+ lanes = new Map();
12
+ bytes = 0;
13
+ duplicateWaiters = 0;
14
+ maxPending;
15
+ maxBytes;
16
+ constructor(store, options = {}) {
17
+ this.store = store;
18
+ this.options = options;
19
+ this.maxPending = options.maxPending ?? LIMITS.inflightRequests;
20
+ this.maxBytes = options.maxBytes ?? LIMITS.unsentBytes;
21
+ if (!Number.isSafeInteger(this.maxPending) || this.maxPending < 2 || this.maxPending > LIMITS.inflightRequests
22
+ || !Number.isSafeInteger(this.maxBytes) || this.maxBytes <= SAFETY_BYTES || this.maxBytes > LIMITS.unsentBytes) {
23
+ throw new Error('Admission limits must preserve bounded safety capacity.');
24
+ }
25
+ }
26
+ // The caller supplies an already authorized, stable transport principal, not an attachment ID.
27
+ async submit(value, principal, handler) {
28
+ this.store.owner.assertCurrent();
29
+ principal = parseSchema(IdSchema, principal);
30
+ const request = parseClientEnvelope(value);
31
+ if (OPERATION_CATALOG[request.op].storage !== 'durable') {
32
+ throw new ProtocolValidationError('invalid_request', 'Only durable commands enter ordered admission.');
33
+ }
34
+ const bytes = Buffer.byteLength(JSON.stringify(request)) + Buffer.byteLength(principal);
35
+ const safety = safetyOperations.has(request.op);
36
+ const byteLimit = this.maxBytes - (safety ? 0 : SAFETY_BYTES);
37
+ const previous = this.store.request(request.id);
38
+ if (previous) {
39
+ const record = this.store.admit(request, principal).value;
40
+ const pending = this.pending.get(request.id);
41
+ if (!pending)
42
+ return this.retained(record);
43
+ if (this.duplicateWaiters >= this.maxPending || this.bytes + bytes > byteLimit) {
44
+ throw new ControlStoreError('request_capacity', 'Too many retries are awaiting their original outcome.');
45
+ }
46
+ this.duplicateWaiters++;
47
+ this.bytes += bytes;
48
+ try {
49
+ return structuredClone(await pending);
50
+ }
51
+ finally {
52
+ this.duplicateWaiters--;
53
+ this.bytes -= bytes;
54
+ }
55
+ }
56
+ if (this.pending.size >= this.maxPending - (safety ? 0 : 1)
57
+ || this.bytes + bytes > byteLimit) {
58
+ throw new ControlStoreError('request_capacity', 'Admission capacity reached; retry after pending work settles.');
59
+ }
60
+ const admitted = this.store.admit(request, principal);
61
+ this.options.committed?.(admitted.revisions);
62
+ const lane = request.session ?? '';
63
+ const prepared = (this.lanes.get(lane) ?? Promise.resolve()).then(() => this.prepare(request, handler));
64
+ const tail = prepared.then(() => { }, () => { });
65
+ this.lanes.set(lane, tail);
66
+ void tail.then(() => { if (this.lanes.get(lane) === tail)
67
+ this.lanes.delete(lane); });
68
+ const result = prepared.then(outcome => this.finish(request, outcome)).finally(() => {
69
+ this.pending.delete(request.id);
70
+ this.bytes -= bytes;
71
+ });
72
+ this.pending.set(request.id, result);
73
+ this.bytes += bytes;
74
+ return structuredClone(await result);
75
+ }
76
+ record(id) {
77
+ const record = this.store.request(id);
78
+ if (!record)
79
+ throw new ControlStoreError('storage_failure', 'Admitted request identity is missing.');
80
+ return record;
81
+ }
82
+ retained(record) {
83
+ if (record.phase === 'terminal')
84
+ return this.savedResponse(record);
85
+ return this.store.finishRequest(record.id, record.phase === 'dispatch_intent' ? indeterminate(record.id)
86
+ : failure(record.id, 'unavailable', 'The daemon stopped before this request was dispatched.')).value;
87
+ }
88
+ savedResponse(record) {
89
+ const response = parseServerEnvelope(record.response, record.op);
90
+ if (!('re' in response) || response.re !== record.id)
91
+ throw new ControlStoreError('storage_failure', 'Stored outcome identity is invalid.');
92
+ return response;
93
+ }
94
+ async prepare(request, handler) {
95
+ let dispatchAllowed = true;
96
+ const assertDispatch = () => {
97
+ if (!dispatchAllowed)
98
+ throw new Error('Dispatch must start before admission completes.');
99
+ const record = this.store.request(request.id);
100
+ if (record?.phase !== 'intent')
101
+ throw new ControlStoreError('already_resolved', 'Request is no longer undispatched.');
102
+ };
103
+ try {
104
+ const current = this.record(request.id);
105
+ if (current.phase !== 'intent')
106
+ return { response: this.retained(current) };
107
+ assertDispatch();
108
+ if (!handler)
109
+ return { response: failure(request.id, 'unavailable', 'No handler is available for this operation.') };
110
+ const outcome = await handler({ request: structuredClone(request), assertDispatch, dispatch: effect => {
111
+ assertDispatch();
112
+ const commit = this.store.markDispatched(request.id);
113
+ (this.options.dispatched ?? this.options.committed)?.(commit.revisions);
114
+ this.store.owner.assertCurrent();
115
+ return effect();
116
+ } });
117
+ this.store.owner.assertCurrent();
118
+ return outcome;
119
+ }
120
+ catch (error) {
121
+ return { response: this.failedResponse(request.id, error) };
122
+ }
123
+ finally {
124
+ dispatchAllowed = false;
125
+ }
126
+ }
127
+ async finish(request, outcome) {
128
+ let response;
129
+ try {
130
+ const parsed = parseServerEnvelope(await outcome.response, request.op);
131
+ if (!('re' in parsed) || parsed.re !== request.id) {
132
+ throw new ProtocolValidationError('invalid_request', 'Outcome must identify its admitted request.');
133
+ }
134
+ response = parsed;
135
+ if (response.outcome === 'accepted' && this.record(request.id).phase === 'intent') {
136
+ throw new ProtocolValidationError('invalid_request', 'Acceptance requires committed dispatch intent.');
137
+ }
138
+ }
139
+ catch (error) {
140
+ response = this.failedResponse(request.id, error);
141
+ }
142
+ const current = this.record(request.id);
143
+ if (current.phase === 'terminal')
144
+ return this.savedResponse(current);
145
+ return this.store.finishRequest(request.id, response).value;
146
+ }
147
+ failedResponse(id, error) {
148
+ const record = this.record(id);
149
+ if (record.phase === 'terminal')
150
+ return this.savedResponse(record);
151
+ if (record.phase === 'dispatch_intent')
152
+ return indeterminate(id);
153
+ const candidate = error !== null && typeof error === 'object' ? Object.getOwnPropertyDescriptor(error, 'code')?.value : undefined;
154
+ const code = error instanceof ProtocolValidationError || error instanceof ControlStoreError ? error.code
155
+ : typeof candidate === 'string' && (candidate === 'host_blocked' || ERROR_CODES.includes(candidate)) ? candidate : 'unavailable';
156
+ return failure(id, code, diagnosticMessage(error));
157
+ }
158
+ }
159
+ /** Wire-safe text of an error; diagnostics are single-line, bounded by the protocol and never quote credentials or parsed file content. */
160
+ export function diagnosticMessage(error) {
161
+ const message = error instanceof SyntaxError ? 'A file or response contains invalid JSON.' : error instanceof Error ? redact(error.message) : '';
162
+ const flat = message.replace(/[\u0000-\u001f\u007f-\u009f]+/gu, ' ').trim();
163
+ if (!flat)
164
+ return 'Operation could not be completed.';
165
+ const bytes = Buffer.from(flat);
166
+ return bytes.length <= 4096 ? flat : `${bytes.subarray(0, 4090).toString('utf8').replace(/\uFFFD+$/u, '')}…`;
167
+ }
168
+ function failure(id, code, message) {
169
+ return { v: 1, re: id, outcome: 'rejected', error: { code, message, retryable: false } };
170
+ }
171
+ function indeterminate(id) {
172
+ return { v: 1, re: id, outcome: 'indeterminate',
173
+ error: { code: 'indeterminate', message: 'The operation started but its outcome is unknown. Inspect the current session before retrying.', retryable: false } };
174
+ }
175
+ //# sourceMappingURL=admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission.js","sourceRoot":"","sources":["../../src/daemon/admission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type Logger } from '@felan-ai/agent-core';
2
+ import type { DaemonOwnership } from './ownership.js';
3
+ export declare class DaemonAgentLogs {
4
+ private readonly owner;
5
+ private readonly pending;
6
+ private closed;
7
+ constructor(owner: DaemonOwnership);
8
+ create(directory: string): Logger;
9
+ close(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=agent-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-logs.d.ts","sourceRoot":"","sources":["../../src/daemon/agent-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,MAAM,CAAS;gBACM,KAAK,EAAE,eAAe;IAEnD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAa3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAC7B"}
@@ -0,0 +1,31 @@
1
+ import { createLogger, createSilentLogger } from '@felan-ai/agent-core';
2
+ import { appendLocalLogLine, resolveLocalLoggerLevel } from '../logger.js';
3
+ export class DaemonAgentLogs {
4
+ owner;
5
+ pending = new Set();
6
+ closed = false;
7
+ constructor(owner) {
8
+ this.owner = owner;
9
+ }
10
+ create(directory) {
11
+ const root = this.owner.assertOwnsPath(directory);
12
+ const level = resolveLocalLoggerLevel();
13
+ if (level === 'off')
14
+ return createSilentLogger();
15
+ return createLogger({ level, destination: { write: record => {
16
+ if (this.closed)
17
+ return;
18
+ try {
19
+ this.owner.assertCurrent();
20
+ }
21
+ catch {
22
+ return;
23
+ }
24
+ const write = appendLocalLogLine(root, record);
25
+ this.pending.add(write);
26
+ void write.finally(() => this.pending.delete(write));
27
+ } } });
28
+ }
29
+ async close() { this.closed = true; await Promise.all(this.pending); }
30
+ }
31
+ //# sourceMappingURL=agent-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-logs.js","sourceRoot":"","sources":["../../src/daemon/agent-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAe,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG3E,MAAM,OAAO,eAAe;IAGG;IAFZ,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC5C,MAAM,GAAG,KAAK,CAAC;IACvB,YAA6B,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAEvD,MAAM,CAAC,SAAiB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;QACxC,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,kBAAkB,EAAE,CAAC;QACjD,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;oBAC1D,IAAI,IAAI,CAAC,MAAM;wBAAE,OAAO;oBACxB,IAAI,CAAC;wBAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAO;oBAAC,CAAC;oBACrD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvD,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,KAAK,CAAC,KAAK,KAAoB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACtF"}
@@ -0,0 +1,7 @@
1
+ export { runDaemonProcess } from './main.js';
2
+ export type { HostManager } from './host-config.js';
3
+ export { HostConfigSchema, loadHostConfig, resolveHostComposition, validPackageSpecifier } from './host-config.js';
4
+ export type { HostComposition, HostCompositionInfo, HostConfig, HostConfigSource, LoadedHostConfig, ResolvedHostProvider } from './host-config.js';
5
+ export { createConfiguredProviders } from './provider-loader.js';
6
+ export type { LoadedProviders } from './provider-loader.js';
7
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/daemon/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACnH,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACnJ,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { runDaemonProcess } from './main.js';
2
+ export { HostConfigSchema, loadHostConfig, resolveHostComposition, validPackageSpecifier } from './host-config.js';
3
+ export { createConfiguredProviders } from './provider-loader.js';
4
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/daemon/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,94 @@
1
+ import type { CreateAgentCoreSessionOptions } from '@felan-ai/agent-core';
2
+ import { type Interaction, type InteractionAnswer, type InteractionAuthority, type OperationParams } from '@felan-ai/session-protocol';
3
+ import type { AdmittedCommand, AdmissionOutcome } from './admission.js';
4
+ import type { DaemonControlStore } from './control-store.js';
5
+ import type { SessionRegistry } from './registry.js';
6
+ type ClientKind = OperationParams<'hello'>['kind'];
7
+ type Request = Interaction['request'];
8
+ type Scope = Interaction['scope'];
9
+ type Cancellation = Extract<Interaction, {
10
+ state: 'cancelled' | 'expired';
11
+ }>['result'];
12
+ export interface BrokerClient {
13
+ principal: string;
14
+ kind: ClientKind;
15
+ attachment: string;
16
+ sessions: readonly string[];
17
+ interactionKinds: OperationParams<'hello'>['interactionKinds'];
18
+ }
19
+ export interface BrokerRequestOptions {
20
+ signal?: AbortSignal;
21
+ timeout?: number;
22
+ deferrable?: boolean;
23
+ transient?: boolean;
24
+ authority?: InteractionAuthority;
25
+ }
26
+ export type BrokerOutcome = {
27
+ state: 'answered';
28
+ answer: InteractionAnswer;
29
+ } | {
30
+ state: 'cancelled';
31
+ reason: Cancellation['reason'];
32
+ } | {
33
+ state: 'deferred';
34
+ interactionId: string;
35
+ };
36
+ export interface BrokerOptions {
37
+ store: DaemonControlStore;
38
+ ownerPrincipal?: string;
39
+ publish(interaction: Interaction, revisions: Readonly<Record<string, number>>): void;
40
+ resume?(session: string, answer: InteractionAnswer, continuationId: string, dispatch: () => void): Promise<void>;
41
+ committed?(revisions: Readonly<Record<string, number>>): void;
42
+ now?: () => number;
43
+ onError?(error: unknown): void;
44
+ }
45
+ export declare class InteractionBroker {
46
+ private readonly options;
47
+ private readonly clients;
48
+ private readonly clientListeners;
49
+ private readonly waiters;
50
+ private readonly transient;
51
+ private readonly continuations;
52
+ private readonly continuationLanes;
53
+ private readonly now;
54
+ private readonly ownerPrincipal;
55
+ private timer;
56
+ private draining;
57
+ private failure;
58
+ constructor(options: BrokerOptions);
59
+ get interactionKinds(): OperationParams<'hello'>['interactionKinds'];
60
+ canPresent(request: Request, scope: Scope, options?: Pick<BrokerRequestOptions, 'authority'>): boolean;
61
+ canReceive(attachment: string, interaction: Interaction): boolean;
62
+ subscribeClients(listener: () => void): () => void;
63
+ private clientsChanged;
64
+ connected(client: BrokerClient): void;
65
+ attached(attachment: string, session: string): void;
66
+ detached(attachment: string, session: string): void;
67
+ disconnected(attachment: string): void;
68
+ private cancelUnpresentableOAuth;
69
+ pending(): Interaction[];
70
+ presentationRequest(id: string, attachment: string): Interaction['request'];
71
+ request(request: Request, scope: Scope, options?: BrokerRequestOptions): Promise<BrokerOutcome>;
72
+ dispatch(command: AdmittedCommand, client: Omit<BrokerClient, 'sessions'>): AdmissionOutcome;
73
+ dispatchRemote(command: AdmittedCommand, requester: {
74
+ user: string;
75
+ command: string;
76
+ interactionKinds: OperationParams<'hello'>['interactionKinds'];
77
+ }): AdmissionOutcome;
78
+ observe(interaction: Interaction): void;
79
+ recover(): Promise<void>;
80
+ drain(): Promise<void>;
81
+ cancel(id: string, reason: Exclude<Cancellation['reason'], 'user'>): void;
82
+ approvalExtension(registry: SessionRegistry): NonNullable<CreateAgentCoreSessionOptions['inlineExtensions']>[number];
83
+ private find;
84
+ private eligible;
85
+ private publish;
86
+ private startContinuation;
87
+ private expire;
88
+ private scheduleExpiry;
89
+ private safely;
90
+ private assertUsable;
91
+ }
92
+ export declare function createRegistryInteractionBroker(registry: SessionRegistry, options?: Pick<BrokerOptions, 'ownerPrincipal'>): InteractionBroker;
93
+ export {};
94
+ //# sourceMappingURL=broker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/daemon/broker.ts"],"names":[],"mappings":"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"}