@qredence/fleet 0.10.0 → 0.10.2

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 (54) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/bin/prime-runtime.d.mts +19 -0
  3. package/bin/prime-runtime.mjs +42 -5
  4. package/dist/web/client/assets/{artifacts-panel-6JEdy6jU.js → artifacts-panel-CfWH5cQn.js} +1 -1
  5. package/dist/web/client/assets/{chat-command-palette-Bxr5EkO6.js → chat-command-palette-CKGrP-Ke.js} +1 -1
  6. package/dist/web/client/assets/{ease-DYVhTl2n.js → ease-nNJMFgD_.js} +1 -1
  7. package/dist/web/client/assets/globals-C6h6fq-s.css +2 -0
  8. package/dist/web/client/assets/{index-Cf8tRpHL.js → index-D3OD2pV7.js} +2 -2
  9. package/dist/web/client/assets/{model-selector-list-CbDAT0Rw.js → model-selector-list-CIJArf3L.js} +1 -1
  10. package/dist/web/client/assets/{prompt-input-CoV1gTUQ.js → prompt-input-0kaw0ekd.js} +1 -1
  11. package/dist/web/client/assets/{right-panel-registry-BAJ6TuEY.js → right-panel-registry-BkBAryPm.js} +2 -2
  12. package/dist/web/client/assets/routes-DgbWbQOu.js +14 -0
  13. package/dist/web/client/assets/{session-activity-panel-DwaXiSrS.js → session-activity-panel-BloVPsLJ.js} +1 -1
  14. package/dist/web/client/assets/{session-tool-renderer-DEABxZG3.js → session-tool-renderer-CGMatufW.js} +1 -1
  15. package/dist/web/client/assets/{subagent-chat-panel-R2RoX1Yt.js → subagent-chat-panel-xm-zBsFL.js} +1 -1
  16. package/dist/web/client/assets/{subagent-transcript-DVZhMo7a.js → subagent-transcript-BzToBVWk.js} +1 -1
  17. package/dist/web/client/assets/{subagents-panel-CMMRUP8F.js → subagents-panel-B5ooG4sS.js} +1 -1
  18. package/dist/web/client/assets/{tool-part-normalizer-CF6bmJ0s.js → tool-part-normalizer-CJ2sY87r.js} +1 -1
  19. package/dist/web/client/assets/{tool-result-7qREIVv_.js → tool-result-C_RIixge.js} +4 -4
  20. package/dist/web/client/assets/{tool-timeline-CGhwMeNl.js → tool-timeline-BVY5VQ3a.js} +2 -2
  21. package/dist/web/client/assets/{use-reduced-motion-CFEp5oKr.js → use-reduced-motion-69Ji0Qlf.js} +1 -1
  22. package/dist/web/client/assets/workspace-panel-DsZZnfkm.js +1 -0
  23. package/dist/web/client/bundle-budget.json +5 -5
  24. package/dist/web/server/{_tanstack-start-manifest_v-Io433TLr-YWPNQWQI.js → _tanstack-start-manifest_v-CGHXgy5L-KSOQEPW7.js} +9 -9
  25. package/dist/web/server/{artifacts-panel-cYqS54cM-K6SF3K6W.js → artifacts-panel-CHPMYc6C-OWIYGSRM.js} +5 -5
  26. package/dist/web/server/{chat-command-palette-BDnwcymZ-DSTFIAOD.js → chat-command-palette-VF4C0ttN-GY52QBFP.js} +3 -3
  27. package/dist/web/server/{chunk-RX2ZJARF.js → chunk-4OLRCVML.js} +2 -21
  28. package/dist/web/server/{chunk-W2GI7NRX.js → chunk-7DUB7HGF.js} +43 -38
  29. package/dist/web/server/{chunk-37EK2TYH.js → chunk-GW7HYECO.js} +169 -528
  30. package/dist/web/server/{chunk-FI3UF2GW.js → chunk-LYJ3XDEZ.js} +5 -5
  31. package/dist/web/server/{chunk-2OC2FKHR.js → chunk-MDGXRDJM.js} +3 -3
  32. package/dist/web/server/{chunk-W7GGECTL.js → chunk-NDU4LK5M.js} +3 -3
  33. package/dist/web/server/{chunk-NSFKPEFI.js → chunk-P3ZJ6L7V.js} +2 -2
  34. package/dist/web/server/{chunk-KBMRRJQN.js → chunk-PBNUO4IN.js} +2 -2
  35. package/dist/web/server/{chunk-RHJEOG37.js → chunk-W72ZBCJ5.js} +4 -4
  36. package/dist/web/server/{create-project-dialog-BS5Sva46-BO4RLW2Q.js → create-project-dialog-CSZHeLNg-EEW3DRTY.js} +3 -3
  37. package/dist/web/server/{model-selector-list-By_G7_Hr-GXT27BZO.js → model-selector-list-q8bMnmhy-SPFJGUBT.js} +2 -2
  38. package/dist/web/server/{openui-renderer-Q31y65CQ-QNVSP4NN.js → openui-renderer-BkDeIpwC-S5BOLH5L.js} +2 -2
  39. package/dist/web/server/{resources-panel-CH8sG0Od-4BZN6SLY.js → resources-panel-tCQCqEQv-NJO5FRHW.js} +4 -4
  40. package/dist/web/server/{router-8EzTM9Eq-COVGJKKX.js → router-DBc-HYGW-CC6DTCFR.js} +1 -1
  41. package/dist/web/server/{routes-88H0fiN3-WIAZJ3RT.js → routes-CcRh_tDy-M7ZRBLVA.js} +2 -2
  42. package/dist/web/server/server.js +2 -2
  43. package/dist/web/server/{session-activity-panel-CgSOde03-B5RCAGB4.js → session-activity-panel-CS56rTyW-J4GAZSTC.js} +4 -4
  44. package/dist/web/server/{session-reasoning-panel-Dmny6YTk-D3HQV2YB.js → session-reasoning-panel-DlqaQNE2-RMOBVYVD.js} +3 -3
  45. package/dist/web/server/{session-tool-renderer-BrnTO2w3-V6EE6AB2.js → session-tool-renderer-CHYJwJej-Z3K5TRIZ.js} +4 -4
  46. package/dist/web/server/{session-tree-panel-BEqR_cAJ-TZS7VRCB.js → session-tree-panel-B2GT3Hf_-WGHVVRRR.js} +3 -3
  47. package/dist/web/server/{settings-dialog-DkesVBrS-BAAA3YNU.js → settings-dialog-7V9x-CPC-6IEB2DFH.js} +4 -4
  48. package/dist/web/server/{subagent-chat-panel-Bfmt1bCE-DKDVH3NJ.js → subagent-chat-panel-Cjg1oOFO-PNWSFYNA.js} +7 -7
  49. package/dist/web/server/{subagents-panel-ChJDDvad-GNCHDTPB.js → subagents-panel-DPfqOHdw-B74PSAMP.js} +7 -7
  50. package/dist/web/server/{workspace-panel-Cij_JylD-WPYSV5FA.js → workspace-panel-DRaU8AWD-7AYOEM55.js} +4 -4
  51. package/package.json +1 -1
  52. package/dist/web/client/assets/globals-DDDleTbS.css +0 -2
  53. package/dist/web/client/assets/routes--tnF7d6H.js +0 -14
  54. package/dist/web/client/assets/workspace-panel-Da5I4p_t.js +0 -1
@@ -123,7 +123,7 @@ import {
123
123
  lazyRouteComponent
124
124
  } from "./chunk-35RIM6VP.js";
125
125
 
126
- // web/app/dist/server/assets/router-8EzTM9Eq.js
126
+ // web/app/dist/server/assets/router-DBc-HYGW.js
127
127
  import { useEffect, useLayoutEffect, useState } from "react";
128
128
  import { jsx, jsxs } from "react/jsx-runtime";
129
129
  import { chmod, mkdir, mkdtemp, open, readFile, readdir, realpath, rename, rm, stat, unlink, writeFile } from "node:fs/promises";
@@ -2194,7 +2194,7 @@ function getQueryClient() {
2194
2194
  if (!browserQueryClient) browserQueryClient = makeQueryClient();
2195
2195
  return browserQueryClient;
2196
2196
  }
2197
- var globals_default = "/assets/globals-DDDleTbS.css";
2197
+ var globals_default = "/assets/globals-C6h6fq-s.css";
2198
2198
  var Route$32 = createRootRoute({
2199
2199
  head: () => ({
2200
2200
  meta: [
@@ -2266,7 +2266,7 @@ function RootDocument({ children }) {
2266
2266
  })]
2267
2267
  });
2268
2268
  }
2269
- var $$splitComponentImporter$2 = () => import("./routes-88H0fiN3-WIAZJ3RT.js").then((n) => n.t);
2269
+ var $$splitComponentImporter$2 = () => import("./routes-CcRh_tDy-M7ZRBLVA.js").then((n) => n.t);
2270
2270
  var Route$31 = createFileRoute("/")({ component: lazyRouteComponent($$splitComponentImporter$2, "component") });
2271
2271
  var $$splitComponentImporter$1 = () => import("./agents-DOgCHixY-KUZP2VDO.js");
2272
2272
  var Route$30 = createFileRoute("/agents")({ component: lazyRouteComponent($$splitComponentImporter$1, "component") });
@@ -4641,7 +4641,7 @@ var PRIME_AGENT_RUNTIME_default = {
4641
4641
  }
4642
4642
  }
4643
4643
  };
4644
- function runtimeArchiveTarget(os, cpu) {
4644
+ function runtimeTarget(os = platform(), cpu = arch()) {
4645
4645
  const target = `${os}-${cpu}`;
4646
4646
  if (![
4647
4647
  "darwin-arm64",
@@ -4651,55 +4651,53 @@ function runtimeArchiveTarget(os, cpu) {
4651
4651
  ].includes(target)) throw new Error(`Fleet's Rust Prime Agent runtime does not support ${target}; supported targets: darwin-arm64, darwin-x64, linux-arm64, linux-x64.`);
4652
4652
  return target;
4653
4653
  }
4654
- async function ensurePrimeAgentRuntime(options = {}) {
4655
- const selectedTarget = options.target ?? runtimeArchiveTarget(platform(), arch());
4656
- const runtime = PRIME_AGENT_RUNTIME_default.rust;
4657
- const asset = runtime.platforms[selectedTarget];
4658
- if (!asset) throw new Error(`No pinned Prime Agent runtime archive for ${selectedTarget}`);
4659
- const installRoot = options.installRoot ?? join(options.home ?? homedir(), ".prime", "fleet", "runtimes", runtime.version, selectedTarget);
4660
- const binary = join(installRoot, "prime-agent");
4661
- const packagedRuntime = join(installRoot, "prime-agent-runtime");
4662
- if (await executableMatches(binary, asset.executableSha256) && await directoryExists(packagedRuntime)) return binary;
4663
- await mkdir(dirname(installRoot), {
4654
+ async function ensurePrimeRuntime({ manifest, installRoot, home = homedir(), fetch: fetchImpl = fetch, target = runtimeTarget() }) {
4655
+ const runtime = manifest.rust;
4656
+ const asset = runtime?.platforms?.[target];
4657
+ if (!asset) throw new Error(`Fleet has no pinned Prime Agent runtime for ${target}`);
4658
+ const destination = installRoot ?? join(home, ".prime", "fleet", "runtimes", runtime.version, target);
4659
+ const executable = join(destination, "prime-agent");
4660
+ const packagedRuntime = join(destination, "prime-agent-runtime");
4661
+ if (await matchesDigest(executable, asset.executableSha256) && await directoryExists(packagedRuntime)) return executable;
4662
+ await mkdir(dirname(destination), {
4664
4663
  recursive: true,
4665
4664
  mode: 448
4666
4665
  });
4667
- const staging = await mkdtemp(join(dirname(installRoot), ".fleet-prime-runtime-"));
4666
+ const staging = await mkdtemp(join(dirname(destination), ".fleet-prime-runtime-"));
4668
4667
  try {
4669
4668
  const archivePath = join(staging, asset.archive);
4670
- const response = await (options.fetch ?? fetch)(`${runtime.baseUrl}/${asset.archive}`, { signal: AbortSignal.timeout(12e4) });
4669
+ const response = await fetchImpl(`${runtime.baseUrl}/${asset.archive}`, { signal: AbortSignal.timeout(12e4) });
4671
4670
  if (!response.ok) throw new Error(`Could not download Prime Agent ${runtime.version} (${response.status}). Check your network and retry.`);
4672
- const bytes = Buffer.from(await response.arrayBuffer());
4673
- if (digest(bytes) !== asset.sha256) throw new Error(`Prime Agent ${runtime.version} archive checksum mismatch; refusing to install it.`);
4674
- await writeFile(archivePath, bytes, { mode: 384 });
4675
- const extractRoot = join(staging, "extracted");
4676
- await mkdir(extractRoot);
4677
- const extraction = spawnSync("tar", [
4671
+ const archive = Buffer.from(await response.arrayBuffer());
4672
+ if (digest(archive) !== asset.sha256) throw new Error(`Prime Agent ${runtime.version} archive checksum mismatch; refusing to install it.`);
4673
+ await writeFile(archivePath, archive, { mode: 384 });
4674
+ const unpacked = join(staging, "unpacked");
4675
+ await mkdir(unpacked);
4676
+ const result = spawnSync("tar", [
4678
4677
  "-xzf",
4679
4678
  archivePath,
4680
4679
  "-C",
4681
- extractRoot
4680
+ unpacked
4682
4681
  ], { encoding: "utf8" });
4683
- if (extraction.status !== 0) throw new Error(`Could not extract Prime Agent runtime: ${extraction.stderr || "tar failed"}`);
4684
- const extractedBinary = join(extractRoot, "prime-agent");
4685
- if (!await executableMatches(extractedBinary, asset.executableSha256)) throw new Error("Extracted Prime Agent executable checksum mismatch; refusing to install it.");
4682
+ if (result.status !== 0) throw new Error(`Could not extract Prime Agent runtime: ${result.stderr || "tar failed"}`);
4683
+ const extractedBinary = join(unpacked, "prime-agent");
4684
+ if (!await matchesDigest(extractedBinary, asset.executableSha256)) throw new Error("Extracted Prime Agent executable checksum mismatch; refusing to install it.");
4686
4685
  await chmod(extractedBinary, 493);
4687
- await mkdir(installRoot, {
4686
+ await mkdir(destination, {
4688
4687
  recursive: true,
4689
4688
  mode: 448
4690
4689
  });
4691
- const extractedRuntime = join(extractRoot, "prime-agent-runtime");
4690
+ const extractedRuntime = join(unpacked, "prime-agent-runtime");
4692
4691
  if (await directoryExists(extractedRuntime)) {
4693
- await rm(packagedRuntime, {
4694
- recursive: true,
4695
- force: true
4692
+ await rename(packagedRuntime, join(staging, "previous-runtime")).catch((error) => {
4693
+ if (error.code !== "ENOENT") throw error;
4696
4694
  });
4697
4695
  await rename(extractedRuntime, packagedRuntime).catch((error) => {
4698
4696
  if (error.code !== "ENOTEMPTY" && error.code !== "EEXIST") throw error;
4699
4697
  });
4700
4698
  }
4701
- await rename(extractedBinary, binary);
4702
- return binary;
4699
+ await rename(extractedBinary, executable);
4700
+ return executable;
4703
4701
  } finally {
4704
4702
  await rm(staging, {
4705
4703
  recursive: true,
@@ -4710,11 +4708,12 @@ async function ensurePrimeAgentRuntime(options = {}) {
4710
4708
  async function directoryExists(path) {
4711
4709
  try {
4712
4710
  return (await stat(path)).isDirectory();
4713
- } catch {
4714
- return false;
4711
+ } catch (error) {
4712
+ if (error.code === "ENOENT" || error.code === "ENOTDIR") return false;
4713
+ throw error;
4715
4714
  }
4716
4715
  }
4717
- async function executableMatches(path, expected) {
4716
+ async function matchesDigest(path, expected) {
4718
4717
  let file2;
4719
4718
  try {
4720
4719
  file2 = await open(path, "r");
@@ -4725,8 +4724,14 @@ async function executableMatches(path, expected) {
4725
4724
  await file2?.close();
4726
4725
  }
4727
4726
  }
4728
- function digest(bytes) {
4729
- return createHash("sha256").update(bytes).digest("hex");
4727
+ function digest(value) {
4728
+ return createHash("sha256").update(value).digest("hex");
4729
+ }
4730
+ function ensurePrimeAgentRuntime(options = {}) {
4731
+ return ensurePrimeRuntime({
4732
+ manifest: PRIME_AGENT_RUNTIME_default,
4733
+ ...options
4734
+ });
4730
4735
  }
4731
4736
  var DAEMON_STARTUP_TIMEOUT_MS = 3e4;
4732
4737
  var DAEMON_PROBE_TIMEOUT_MS = 1e3;