@fungi.computer/truffle 0.0.0-stage → 0.2.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 (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +542 -2
  3. package/computerd-loopback.cjs +16 -0
  4. package/dist/auth-cli.d.ts +46 -0
  5. package/dist/auth-cli.js +373 -0
  6. package/dist/fungi-account-command.d.ts +18 -0
  7. package/dist/fungi-account-command.js +95 -0
  8. package/dist/index.d.ts +27 -0
  9. package/dist/index.js +23 -0
  10. package/dist/internal/image-fit-metafile.json +106 -0
  11. package/dist/internal/local-image-fit-worker.mjs +960 -0
  12. package/dist/internal/private-workerd-sandbox-worker.mjs +27487 -0
  13. package/dist/internal/sandbox-metafile.json +6726 -0
  14. package/dist/linear-auth.d.ts +4 -0
  15. package/dist/linear-auth.js +72 -0
  16. package/dist/local-archive-handoff.d.ts +12 -0
  17. package/dist/local-archive-handoff.js +21 -0
  18. package/dist/local-extensions.d.ts +143 -0
  19. package/dist/local-extensions.js +624 -0
  20. package/dist/local-image-fit.d.ts +30 -0
  21. package/dist/local-image-fit.js +105 -0
  22. package/dist/local-login.d.ts +55 -0
  23. package/dist/local-login.js +167 -0
  24. package/dist/local-models.d.ts +16 -0
  25. package/dist/local-models.js +82 -0
  26. package/dist/local-session-archives.d.ts +8 -0
  27. package/dist/local-session-archives.js +152 -0
  28. package/dist/local-skill-source.d.ts +21 -0
  29. package/dist/local-skill-source.js +433 -0
  30. package/dist/log-event.d.ts +9 -0
  31. package/dist/log-event.js +13 -0
  32. package/dist/private-bounded-response.d.ts +2 -0
  33. package/dist/private-bounded-response.js +41 -0
  34. package/dist/private-bun-shiitake-host.d.ts +11 -0
  35. package/dist/private-bun-shiitake-host.js +66 -0
  36. package/dist/private-file-credential-store.d.ts +58 -0
  37. package/dist/private-file-credential-store.js +331 -0
  38. package/dist/private-files-patch.d.ts +4 -0
  39. package/dist/private-files-patch.js +104 -0
  40. package/dist/private-fungi-account.d.ts +252 -0
  41. package/dist/private-fungi-account.js +1329 -0
  42. package/dist/private-fungi-auth-error.d.ts +5 -0
  43. package/dist/private-fungi-auth-error.js +7 -0
  44. package/dist/private-fungi-mcp-connection.d.ts +26 -0
  45. package/dist/private-fungi-mcp-connection.js +162 -0
  46. package/dist/private-fungi-mcp-endpoint.d.ts +2 -0
  47. package/dist/private-fungi-mcp-endpoint.js +15 -0
  48. package/dist/private-fungi-mcp-selection-schema.d.ts +7 -0
  49. package/dist/private-fungi-mcp-selection-schema.js +15 -0
  50. package/dist/private-fungi-mcp-selection.d.ts +14 -0
  51. package/dist/private-fungi-mcp-selection.js +49 -0
  52. package/dist/private-fungi-model-api.d.ts +6 -0
  53. package/dist/private-fungi-model-api.js +125 -0
  54. package/dist/private-fungi-model-catalog.d.ts +16 -0
  55. package/dist/private-fungi-model-catalog.js +86 -0
  56. package/dist/private-fungi-model-provider.d.ts +6 -0
  57. package/dist/private-fungi-model-provider.js +51 -0
  58. package/dist/private-fungi-pending-logouts.d.ts +34 -0
  59. package/dist/private-fungi-pending-logouts.js +135 -0
  60. package/dist/private-fungi-service-logout.d.ts +44 -0
  61. package/dist/private-fungi-service-logout.js +59 -0
  62. package/dist/private-invocation-computer.d.ts +58 -0
  63. package/dist/private-invocation-computer.js +498 -0
  64. package/dist/private-invocation-files.d.ts +30 -0
  65. package/dist/private-invocation-files.js +520 -0
  66. package/dist/private-local-acp-stdio.d.ts +17 -0
  67. package/dist/private-local-acp-stdio.js +145 -0
  68. package/dist/private-local-admission-gate.d.ts +14 -0
  69. package/dist/private-local-admission-gate.js +52 -0
  70. package/dist/private-local-agent-control.d.ts +101 -0
  71. package/dist/private-local-agent-control.js +30 -0
  72. package/dist/private-local-agent-default-model.d.ts +12 -0
  73. package/dist/private-local-agent-default-model.js +31 -0
  74. package/dist/private-local-auth-rpc.d.ts +129 -0
  75. package/dist/private-local-auth-rpc.js +396 -0
  76. package/dist/private-local-bwrap.d.ts +13 -0
  77. package/dist/private-local-bwrap.js +70 -0
  78. package/dist/private-local-client-version.d.ts +5 -0
  79. package/dist/private-local-client-version.js +43 -0
  80. package/dist/private-local-computer-attach.d.ts +49 -0
  81. package/dist/private-local-computer-attach.js +230 -0
  82. package/dist/private-local-computer-backend.d.ts +282 -0
  83. package/dist/private-local-computer-backend.js +402 -0
  84. package/dist/private-local-computer-processes.d.ts +202 -0
  85. package/dist/private-local-computer-processes.js +613 -0
  86. package/dist/private-local-config-root.d.ts +21 -0
  87. package/dist/private-local-config-root.js +19 -0
  88. package/dist/private-local-containment.d.ts +51 -0
  89. package/dist/private-local-containment.js +161 -0
  90. package/dist/private-local-default-model.d.ts +11 -0
  91. package/dist/private-local-default-model.js +45 -0
  92. package/dist/private-local-delegation.d.ts +36 -0
  93. package/dist/private-local-delegation.js +133 -0
  94. package/dist/private-local-effective-model.d.ts +27 -0
  95. package/dist/private-local-effective-model.js +17 -0
  96. package/dist/private-local-exec-environment.d.ts +16 -0
  97. package/dist/private-local-exec-environment.js +11 -0
  98. package/dist/private-local-exec-launch.d.ts +41 -0
  99. package/dist/private-local-exec-launch.js +51 -0
  100. package/dist/private-local-exec-path.d.ts +6 -0
  101. package/dist/private-local-exec-path.js +40 -0
  102. package/dist/private-local-git-exclude.d.ts +2 -0
  103. package/dist/private-local-git-exclude.js +33 -0
  104. package/dist/private-local-http-dispatch.d.ts +5 -0
  105. package/dist/private-local-http-dispatch.js +14 -0
  106. package/dist/private-local-linux-sandbox.d.ts +8 -0
  107. package/dist/private-local-linux-sandbox.js +67 -0
  108. package/dist/private-local-mail.d.ts +13 -0
  109. package/dist/private-local-mail.js +77 -0
  110. package/dist/private-local-mesh-enrollment.d.ts +34 -0
  111. package/dist/private-local-mesh-enrollment.js +188 -0
  112. package/dist/private-local-mesh-links.d.ts +21 -0
  113. package/dist/private-local-mesh-links.js +229 -0
  114. package/dist/private-local-mesh-record.d.ts +120 -0
  115. package/dist/private-local-mesh-record.js +55 -0
  116. package/dist/private-local-process-identity.d.ts +20 -0
  117. package/dist/private-local-process-identity.js +40 -0
  118. package/dist/private-local-runtime-host.d.ts +192 -0
  119. package/dist/private-local-runtime-host.js +1177 -0
  120. package/dist/private-local-sandbox-policy.d.ts +21 -0
  121. package/dist/private-local-sandbox-policy.js +121 -0
  122. package/dist/private-local-sandbox.d.ts +37 -0
  123. package/dist/private-local-sandbox.js +114 -0
  124. package/dist/private-local-seatbelt.d.ts +24 -0
  125. package/dist/private-local-seatbelt.js +68 -0
  126. package/dist/private-local-service-contract.d.ts +170 -0
  127. package/dist/private-local-service-contract.js +1 -0
  128. package/dist/private-local-service-discovery.d.ts +217 -0
  129. package/dist/private-local-service-discovery.js +322 -0
  130. package/dist/private-local-service-ids.d.ts +3 -0
  131. package/dist/private-local-service-ids.js +8 -0
  132. package/dist/private-local-service-lease.d.ts +16 -0
  133. package/dist/private-local-service-lease.js +105 -0
  134. package/dist/private-local-service-listener.d.ts +22 -0
  135. package/dist/private-local-service-listener.js +407 -0
  136. package/dist/private-local-service-log.d.ts +128 -0
  137. package/dist/private-local-service-log.js +321 -0
  138. package/dist/private-local-service-owner.d.ts +135 -0
  139. package/dist/private-local-service-owner.js +1369 -0
  140. package/dist/private-local-service-process.d.ts +1 -0
  141. package/dist/private-local-service-process.js +8 -0
  142. package/dist/private-local-service-termination.d.ts +7 -0
  143. package/dist/private-local-service-termination.js +67 -0
  144. package/dist/private-local-service.d.ts +46 -0
  145. package/dist/private-local-service.js +606 -0
  146. package/dist/private-local-session-discovery.d.ts +66 -0
  147. package/dist/private-local-session-discovery.js +278 -0
  148. package/dist/private-local-shiitake-host.d.ts +44 -0
  149. package/dist/private-local-shiitake-host.js +143 -0
  150. package/dist/private-local-startup-model.d.ts +51 -0
  151. package/dist/private-local-startup-model.js +86 -0
  152. package/dist/private-local-stop-all.d.ts +27 -0
  153. package/dist/private-local-stop-all.js +26 -0
  154. package/dist/private-local-ui-attachment.d.ts +19 -0
  155. package/dist/private-local-ui-attachment.js +71 -0
  156. package/dist/private-local-worker-server.d.ts +16 -0
  157. package/dist/private-local-worker-server.js +144 -0
  158. package/dist/private-mcp-form-contract.d.ts +186 -0
  159. package/dist/private-mcp-form-contract.js +53 -0
  160. package/dist/private-mcp-form-elicitation.d.ts +18 -0
  161. package/dist/private-mcp-form-elicitation.js +97 -0
  162. package/dist/private-mcp-form-session.d.ts +172 -0
  163. package/dist/private-mcp-form-session.js +148 -0
  164. package/dist/private-openai-claims.d.ts +30 -0
  165. package/dist/private-openai-claims.js +69 -0
  166. package/dist/private-oyster-mcp-auth.d.ts +13 -0
  167. package/dist/private-oyster-mcp-auth.js +57 -0
  168. package/dist/private-provider-rejection.d.ts +15 -0
  169. package/dist/private-provider-rejection.js +24 -0
  170. package/dist/private-sqlite-owner.d.ts +39 -0
  171. package/dist/private-sqlite-owner.js +169 -0
  172. package/dist/private-team-computers.d.ts +38 -0
  173. package/dist/private-team-computers.js +110 -0
  174. package/dist/private-workerd-sandbox.d.ts +3 -0
  175. package/dist/private-workerd-sandbox.js +347 -0
  176. package/dist/seatbelt/safe-base.sbpl +79 -0
  177. package/dist/subscription-activation.d.ts +9 -0
  178. package/dist/subscription-activation.js +62 -0
  179. package/dist/subscription-identity.d.ts +23 -0
  180. package/dist/subscription-identity.js +124 -0
  181. package/dist/subscription-turn.d.ts +17 -0
  182. package/dist/subscription-turn.js +143 -0
  183. package/dist/team-apps.d.ts +24 -0
  184. package/dist/team-apps.js +128 -0
  185. package/dist/tracker-git-credential.d.ts +15 -0
  186. package/dist/tracker-git-credential.js +87 -0
  187. package/native/bin/LICENSE.bubblewrap +502 -0
  188. package/native/bin/LICENSE.libcap +112 -0
  189. package/native/bin/LICENSE.sandbox-runtime +201 -0
  190. package/native/bin/SOURCE.bubblewrap.tar.xz +0 -0
  191. package/native/bin/build.json +4037 -0
  192. package/native/bin/bwrap-build-source/Dockerfile +48 -0
  193. package/native/bin/bwrap-build-source/README.md +96 -0
  194. package/native/bin/bwrap-build-source/build.mjs +52 -0
  195. package/native/bin/bwrap-build-source/linux-arm64.ini +14 -0
  196. package/native/bin/bwrap-build-source/pin.mjs +21 -0
  197. package/native/bin/bwrap-build-source/record.mjs +74 -0
  198. package/native/bin/bwrap-build-source/vendor/LICENSE.sandbox-runtime +201 -0
  199. package/native/bin/bwrap-build-source/vendor/README.md +23 -0
  200. package/native/bin/bwrap-build-source/vendor/seccomp-unix-block.c +280 -0
  201. package/native/bin/bwrap-build.json +44 -0
  202. package/native/bin/fungi-apply-patch +0 -0
  203. package/native/bin/fungi-bwrap +0 -0
  204. package/native/bin/fungi-bwrap.sha256 +1 -0
  205. package/native/bin/fungi-seccomp.bpf +0 -0
  206. package/native/bin/fungi-seccomp.bpf.sha256 +1 -0
  207. package/package.json +161 -3
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { serviceDirectory } from "./private-local-service-discovery.js";
2
+ import { runPrivateLocalService } from "./private-local-service-listener.js";
3
+ import { capturePrivateLocalConfigRoot } from "./private-local-config-root.js";
4
+ const directory = process.argv[2];
5
+ if (!directory)
6
+ throw new Error("Local service requires its private directory");
7
+ const root = capturePrivateLocalConfigRoot();
8
+ await runPrivateLocalService(await serviceDirectory(directory), undefined, undefined, undefined, undefined, undefined, root);
@@ -0,0 +1,7 @@
1
+ import { type ServiceLeaseOwner } from "./private-local-service-lease.js";
2
+ /**
3
+ * SIGTERM the service, wait up to five seconds for it to exit, then SIGKILL.
4
+ * A hung owner drain can no longer leave a discoverable but unusable service.
5
+ * Each signal first checks that the PID still names the recorded process.
6
+ */
7
+ export declare function terminatePrivateLocalService(directory: string, service: ServiceLeaseOwner): Promise<"stopped" | "killed">;
@@ -0,0 +1,67 @@
1
+ import { setTimeout as delay } from "node:timers/promises";
2
+ import { readProcessStart } from "./private-local-process-identity.js";
3
+ import { readServiceLeaseOwner, } from "./private-local-service-lease.js";
4
+ /** How long a SIGTERM'd service may drain its owners before it is killed. */
5
+ const terminationGraceMs = 5_000;
6
+ const terminationPollMs = 50;
7
+ /**
8
+ * Whether `service` is still the process running under its PID. A PID whose
9
+ * start differs is refused. A separate read and signal still has a race window.
10
+ */
11
+ async function isServiceProcess(service) {
12
+ const current = await readProcessStart(service.pid);
13
+ if (current.kind === "unverifiable")
14
+ throw new Error(`Fungi cannot verify the service process ${String(service.pid)} with sub-second precision on ${process.platform}, so it refuses to signal it. Close that service manually, then reopen Fungi.`);
15
+ return current.kind === "running" && current.start === service.startedAt;
16
+ }
17
+ /** Signal `pid`; false when it has already exited. */
18
+ function signalService(pid, signal) {
19
+ try {
20
+ process.kill(pid, signal);
21
+ return true;
22
+ }
23
+ catch (cause) {
24
+ if (cause instanceof Error && "code" in cause && cause.code === "ESRCH")
25
+ return false;
26
+ if (cause instanceof Error && "code" in cause && cause.code === "EPERM")
27
+ throw new Error(`The Fungi service process ${String(pid)} belongs to another user, so fungi stop may not signal it. Stop it as that user (for example \`sudo kill ${String(pid)}\`), then retry.`, { cause });
28
+ throw cause;
29
+ }
30
+ }
31
+ /** Signal `service` only while its PID still names that same process. */
32
+ async function signalIfStillRunning(directory, service, signal) {
33
+ const owner = await readServiceLeaseOwner(directory);
34
+ if (owner?.pid !== service.pid || owner.startedAt !== service.startedAt)
35
+ return false;
36
+ return (await isServiceProcess(owner)) && signalService(owner.pid, signal);
37
+ }
38
+ async function exitedWithin(service, ms) {
39
+ const deadline = Date.now() + ms;
40
+ for (;;) {
41
+ if (!(await isServiceProcess(service)))
42
+ return true;
43
+ if (Date.now() >= deadline)
44
+ return false;
45
+ await delay(terminationPollMs);
46
+ }
47
+ }
48
+ /**
49
+ * SIGTERM the service, wait up to five seconds for it to exit, then SIGKILL.
50
+ * A hung owner drain can no longer leave a discoverable but unusable service.
51
+ * Each signal first checks that the PID still names the recorded process.
52
+ */
53
+ export async function terminatePrivateLocalService(directory, service) {
54
+ // A listener run inside its caller (tests, embedded hosts) would otherwise
55
+ // be SIGKILLed together with that caller.
56
+ if (service.pid === process.pid)
57
+ throw new Error("The Fungi service runs inside this process; stop it from within instead of with fungi stop.");
58
+ if (!(await signalIfStillRunning(directory, service, "SIGTERM")))
59
+ return "stopped";
60
+ if (await exitedWithin(service, terminationGraceMs))
61
+ return "stopped";
62
+ if (!(await signalIfStillRunning(directory, service, "SIGKILL")))
63
+ return "stopped";
64
+ if (await exitedWithin(service, terminationGraceMs))
65
+ return "killed";
66
+ throw new Error(`Local service process ${String(service.pid)} is still running after SIGKILL`);
67
+ }
@@ -0,0 +1,46 @@
1
+ export { LocalSandboxUnavailable } from "./private-local-containment.js";
2
+ export type { StopAllResult } from "./private-local-stop-all.js";
3
+ export { LocalAgentSelectionAmbiguous, LocalSessionPathConflict, } from "./private-local-service-owner.js";
4
+ export { AgentArchiveRefused } from "@fungi.computer/shiitake/agent-control";
5
+ export { readInstalledLocalClientBuildId } from "./private-local-client-version.js";
6
+ export { privateLocalServiceVersion } from "./private-local-service-discovery.js";
7
+ import type { ShiitakeEventSourceConstructor } from "@fungi.computer/shiitake/client";
8
+ import type { PrivateLocalServiceManager } from "./private-local-service-contract.js";
9
+ export { LocalStoreSchemaError } from "./private-local-session-discovery.js";
10
+ export type { PrivateLocalServiceStatus, PrivateLocalServiceStopResult, PrivateLocalServiceSelection, PrivateLocalSessionCreation, PrivateLocalServiceConnection, PrivateLocalServiceRebind, PrivateLocalServiceManager, PrivateLocalServiceRequestOptions, PrivateLocalDiscoveryOptions, PrivateLocalArchiveRequest, PrivateLocalAgentChoice, PrivateLocalSessionChoice, PrivateLocalSessionDiscovery, PrivateLocalSessionInspection, PrivateLocalSessionProblem, } from "./private-local-service-contract.js";
11
+ export type { PrivateLocalModelChoice } from "./local-models.js";
12
+ export type { ServiceDiagnosticsStatus, ServiceDiagnosticsFailureCode, } from "./private-local-service-log.js";
13
+ export type { PrivateLocalEffectiveModel } from "./private-local-effective-model.js";
14
+ export { runPrivateLocalWorkerServer, type PrivateLocalWorkerServerIo, } from "./private-local-worker-server.js";
15
+ /** The service answered a selection with a failure status and no readable failure body. */
16
+ export declare class LocalServiceUnreadableResponse extends Error {
17
+ readonly name = "LocalServiceUnreadableResponse";
18
+ readonly status: number;
19
+ constructor(status: number, cause: unknown);
20
+ }
21
+ /**
22
+ * A newer client replaced the service this running client reached with one
23
+ * that speaks another protocol. Only restarting the window can reconnect it.
24
+ */
25
+ export declare class LocalServiceUpdated extends Error {
26
+ readonly name = "LocalServiceUpdated";
27
+ constructor();
28
+ }
29
+ /** Construction does not start a service or open a store. Call start/connect explicitly. */
30
+ export declare function createPrivateLocalServiceManager(options?: {
31
+ /** Selected host home, independent of an explicit service directory. */
32
+ home?: string;
33
+ directory?: string;
34
+ eventSource?: ShiitakeEventSourceConstructor;
35
+ executable?: string;
36
+ /** Test/client override; production captures the invoking client's PATH. */
37
+ executionPath?: string;
38
+ /** How long to wait for a live service that misses its handshake (default 60 s). */
39
+ busyServiceWaitMs?: number;
40
+ /**
41
+ * Where a failed cleanup (for example an auth cancel the service could not
42
+ * take) is recorded with its cause. Clients with an operator log pass it;
43
+ * the default writes one bounded line to stderr.
44
+ */
45
+ reportCleanupFailure?: (cause: unknown) => void;
46
+ }): PrivateLocalServiceManager;