@fusionkit/cli 0.1.5 → 0.1.6

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 (74) hide show
  1. package/README.md +24 -2
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.js +1 -0
  4. package/dist/commands/ensemble-gateway.js +0 -2
  5. package/dist/commands/ensemble-records.d.ts +2 -1
  6. package/dist/commands/ensemble-records.js +3 -1
  7. package/dist/commands/ensemble.js +3 -4
  8. package/dist/commands/fusion.js +0 -5
  9. package/dist/commands/local.js +3 -3
  10. package/dist/cursor-acp.d.ts +3 -5
  11. package/dist/cursor-acp.js +12 -11
  12. package/dist/dashboard.d.ts +65 -0
  13. package/dist/dashboard.js +587 -0
  14. package/dist/fusion/env.d.ts +108 -0
  15. package/dist/fusion/env.js +98 -0
  16. package/dist/fusion/observability.d.ts +39 -0
  17. package/dist/fusion/observability.js +227 -0
  18. package/dist/fusion/preflight.d.ts +12 -0
  19. package/dist/fusion/preflight.js +42 -0
  20. package/dist/fusion/stack.d.ts +62 -0
  21. package/dist/fusion/stack.js +295 -0
  22. package/dist/fusion-config.d.ts +0 -1
  23. package/dist/fusion-config.js +0 -6
  24. package/dist/fusion-init.js +2 -11
  25. package/dist/fusion-quickstart.d.ts +11 -222
  26. package/dist/fusion-quickstart.js +57 -759
  27. package/dist/gateway.d.ts +0 -2
  28. package/dist/gateway.js +0 -2
  29. package/dist/local.d.ts +10 -17
  30. package/dist/local.js +50 -116
  31. package/dist/shared/options.d.ts +2 -1
  32. package/dist/shared/options.js +13 -19
  33. package/dist/shared/proc.d.ts +4 -70
  34. package/dist/shared/proc.js +3 -228
  35. package/dist/test/cli.test.js +8 -3
  36. package/dist/test/dashboard.test.d.ts +1 -0
  37. package/dist/test/dashboard.test.js +214 -0
  38. package/dist/test/gateway-e2e.test.js +13 -10
  39. package/dist/test/local.test.js +4 -4
  40. package/dist/tools.d.ts +2 -0
  41. package/dist/tools.js +25 -0
  42. package/package.json +14 -9
  43. package/scope/.next/BUILD_ID +1 -1
  44. package/scope/.next/app-build-manifest.json +16 -16
  45. package/scope/.next/app-path-routes-manifest.json +4 -4
  46. package/scope/.next/build-manifest.json +2 -2
  47. package/scope/.next/prerender-manifest.json +9 -9
  48. package/scope/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/scope/.next/server/app/_not-found.html +1 -1
  50. package/scope/.next/server/app/_not-found.rsc +1 -1
  51. package/scope/.next/server/app/api/environments/route_client-reference-manifest.js +1 -1
  52. package/scope/.next/server/app/api/ingest/route_client-reference-manifest.js +1 -1
  53. package/scope/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  54. package/scope/.next/server/app/api/replay/route_client-reference-manifest.js +1 -1
  55. package/scope/.next/server/app/api/sessions/[traceId]/route_client-reference-manifest.js +1 -1
  56. package/scope/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  57. package/scope/.next/server/app/api/stream/route_client-reference-manifest.js +1 -1
  58. package/scope/.next/server/app/environments/page_client-reference-manifest.js +1 -1
  59. package/scope/.next/server/app/environments.html +1 -1
  60. package/scope/.next/server/app/environments.rsc +1 -1
  61. package/scope/.next/server/app/index.html +1 -1
  62. package/scope/.next/server/app/index.rsc +1 -1
  63. package/scope/.next/server/app/models/page_client-reference-manifest.js +1 -1
  64. package/scope/.next/server/app/models.html +1 -1
  65. package/scope/.next/server/app/models.rsc +1 -1
  66. package/scope/.next/server/app/page_client-reference-manifest.js +1 -1
  67. package/scope/.next/server/app/sessions/[traceId]/page_client-reference-manifest.js +1 -1
  68. package/scope/.next/server/app-paths-manifest.json +4 -4
  69. package/scope/.next/server/functions-config-manifest.json +2 -2
  70. package/scope/.next/server/pages/404.html +1 -1
  71. package/scope/.next/server/pages/500.html +1 -1
  72. package/scope/.next/server/server-reference-manifest.json +1 -1
  73. /package/scope/.next/static/{vxqImMqlOwssVTua5Facf → x7wPUCpgS31-5ZHJkcKsU}/_buildManifest.js +0 -0
  74. /package/scope/.next/static/{vxqImMqlOwssVTua5Facf → x7wPUCpgS31-5ZHJkcKsU}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,214 @@
1
+ import assert from "node:assert/strict";
2
+ import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { test } from "node:test";
6
+ import { assertHarnessRunResultV1 } from "@fusionkit/protocol";
7
+ import { gitText } from "@fusionkit/workspace";
8
+ import { createMockHarness } from "@fusionkit/ensemble";
9
+ import { createHarnessCapabilityMatrix, runHarnessSmokeDashboard } from "../dashboard.js";
10
+ function makeRepo() {
11
+ const root = mkdtempSync(join(tmpdir(), "ensemble-dashboard-"));
12
+ const repo = join(root, "repo");
13
+ mkdirSync(repo);
14
+ gitText(repo, ["init", "--quiet", "--initial-branch=main"]);
15
+ gitText(repo, ["config", "user.email", "dashboard@warrant.local"]);
16
+ gitText(repo, ["config", "user.name", "dashboard"]);
17
+ writeFileSync(join(repo, "README.md"), "# dashboard\n");
18
+ gitText(repo, ["add", "-A"]);
19
+ gitText(repo, ["commit", "--quiet", "-m", "init"]);
20
+ return {
21
+ repo,
22
+ outputRoot: join(root, "dashboard-out"),
23
+ cleanup: () => rmSync(root, { recursive: true, force: true })
24
+ };
25
+ }
26
+ test("capability matrix covers Cursor, Claude Code, Codex, command, and mock", () => {
27
+ const matrix = createHarnessCapabilityMatrix({ env: {} });
28
+ const harnessIds = matrix.rows.map((row) => row.harnessId);
29
+ assert.deepEqual(harnessIds, ["codex", "claude-code", "cursor", "command", "mock"]);
30
+ assert.ok(matrix.capabilities.includes("model_override"));
31
+ assert.ok(matrix.capabilities.includes("transcript_capture"));
32
+ assert.ok(matrix.capabilities.includes("diff_capture"));
33
+ assert.ok(matrix.capabilities.includes("tool_loop_capture"));
34
+ assert.ok(matrix.capabilities.includes("patch_apply_visibility"));
35
+ assert.ok(matrix.capabilities.includes("route_model_observation"));
36
+ assert.ok(matrix.capabilities.includes("verification_hint"));
37
+ assert.ok(matrix.capabilities.includes("replay_support"));
38
+ assert.ok(matrix.capabilities.includes("workspace_read"));
39
+ assert.ok(matrix.capabilities.includes("verification"));
40
+ assert.equal(matrix.rows.find((row) => row.harnessId === "cursor")?.availability, "credential_gated");
41
+ assert.equal(matrix.rows.find((row) => row.harnessId === "claude-code")?.harnessKind, "claude_code");
42
+ assert.equal(matrix.rows.find((row) => row.harnessId === "codex")?.harnessKind, "codex");
43
+ });
44
+ test("smoke dashboard writes schema-valid success, failure, skipped, and missing records", async () => {
45
+ const fixture = makeRepo();
46
+ try {
47
+ const dashboard = await runHarnessSmokeDashboard({
48
+ repo: fixture.repo,
49
+ outputRoot: fixture.outputRoot,
50
+ timeoutMs: 1_000,
51
+ createdAt: "2026-06-16T00:00:00.000Z"
52
+ });
53
+ assert.equal(dashboard.records.length, 6);
54
+ assert.equal(existsSync(dashboard.dashboardPath), true);
55
+ for (const record of dashboard.records) {
56
+ assertHarnessRunResultV1(record.result);
57
+ assert.equal(existsSync(record.resultPath), true);
58
+ const written = JSON.parse(readFileSync(record.resultPath, "utf8"));
59
+ assertHarnessRunResultV1(written);
60
+ }
61
+ const statuses = dashboard.records.map((record) => record.result.status).sort();
62
+ assert.deepEqual(statuses, [
63
+ "failed",
64
+ "skipped",
65
+ "skipped",
66
+ "skipped",
67
+ "succeeded",
68
+ "succeeded"
69
+ ]);
70
+ assert.equal(dashboard.records.find((record) => record.taskId === "claude-code-skipped")?.result
71
+ .harness_kind, "claude_code");
72
+ assert.equal(dashboard.records.find((record) => record.taskId === "codex-skipped")?.result.harness_kind, "codex");
73
+ assert.equal(dashboard.records.find((record) => record.taskId === "cursor-skipped")?.result.harness_kind, "cursor");
74
+ assert.equal(dashboard.records.find((record) => record.taskId === "cursor-skipped")?.result.status, "skipped");
75
+ const markdown = readFileSync(dashboard.dashboardPath, "utf8");
76
+ assert.match(markdown, /# HandoffKit Harness Smoke Dashboard/);
77
+ assert.match(markdown, /## Capability Matrix/);
78
+ assert.match(markdown, /## Adapter Readiness/);
79
+ assert.match(markdown, /contract\/mock ready/);
80
+ assert.match(markdown, /credentials missing\/skipped/);
81
+ assert.match(markdown, /live smoke not requested/);
82
+ assert.match(markdown, /command-failure/);
83
+ assert.match(markdown, /cursor-skipped/);
84
+ assert.match(markdown, /harness-run-results\/mock-success\.json/);
85
+ assert.equal(dashboard.readiness.length, 5);
86
+ }
87
+ finally {
88
+ fixture.cleanup();
89
+ }
90
+ });
91
+ test("smoke dashboard only adds live records when explicit smoke env is enabled", async () => {
92
+ const fixture = makeRepo();
93
+ try {
94
+ const dashboard = await runHarnessSmokeDashboard({
95
+ repo: fixture.repo,
96
+ outputRoot: fixture.outputRoot,
97
+ timeoutMs: 1_000,
98
+ createdAt: "2026-06-16T00:00:00.000Z",
99
+ env: {},
100
+ liveSmoke: ["claude-code", "codex"]
101
+ });
102
+ assert.equal(dashboard.records.length, 6);
103
+ assert.equal(dashboard.records.some((record) => record.purpose === "live"), false);
104
+ }
105
+ finally {
106
+ fixture.cleanup();
107
+ }
108
+ });
109
+ test("explicit live smoke without credentials records a failed preflight", async () => {
110
+ const fixture = makeRepo();
111
+ try {
112
+ const dashboard = await runHarnessSmokeDashboard({
113
+ repo: fixture.repo,
114
+ outputRoot: fixture.outputRoot,
115
+ timeoutMs: 1_000,
116
+ createdAt: "2026-06-16T00:00:00.000Z",
117
+ env: { WARRANT_CLAUDE_SMOKE: "1" },
118
+ liveSmoke: ["claude-code"]
119
+ });
120
+ const live = dashboard.records.find((record) => record.taskId === "claude-code-live");
121
+ assert.equal(live?.purpose, "live");
122
+ assert.equal(live?.result.status, "failed");
123
+ assert.match(live?.result.output_summary ?? "", /Explicit live smoke failed before launch/);
124
+ assert.equal(dashboard.readiness.find((row) => row.harnessId === "claude-code")?.liveSmoke, "live smoke failed");
125
+ }
126
+ finally {
127
+ fixture.cleanup();
128
+ }
129
+ });
130
+ test("live smoke readiness reports sanitized local evidence refs", async () => {
131
+ const fixture = makeRepo();
132
+ const privateTranscript = "raw private transcript should not render";
133
+ try {
134
+ const claudeHarness = {
135
+ ...createMockHarness({
136
+ id: "claude-code-live-mock",
137
+ candidates: {
138
+ claude: {
139
+ transcript: privateTranscript,
140
+ artifacts: [
141
+ {
142
+ artifact_id: "claude_safe_log",
143
+ kind: "log",
144
+ hash: `sha256:${"a".repeat(64)}`,
145
+ uri: "file:///tmp/private-claude.log",
146
+ redaction_status: "synthetic"
147
+ },
148
+ {
149
+ artifact_id: "claude_raw_transcript",
150
+ kind: "transcript",
151
+ hash: `sha256:${"b".repeat(64)}`,
152
+ uri: "file:///tmp/raw-claude.txt",
153
+ redaction_status: "raw"
154
+ }
155
+ ]
156
+ }
157
+ }
158
+ }),
159
+ harnessKind: "claude_code"
160
+ };
161
+ const codexHarness = {
162
+ ...createMockHarness({
163
+ id: "codex-live-mock",
164
+ candidates: {
165
+ codex: {
166
+ transcript: "codex private transcript should not render",
167
+ artifacts: [
168
+ {
169
+ artifact_id: "codex_safe_log",
170
+ kind: "log",
171
+ hash: `sha256:${"c".repeat(64)}`,
172
+ uri: "file:///tmp/private-codex.log",
173
+ redaction_status: "synthetic"
174
+ }
175
+ ]
176
+ }
177
+ }
178
+ }),
179
+ harnessKind: "codex"
180
+ };
181
+ const dashboard = await runHarnessSmokeDashboard({
182
+ repo: fixture.repo,
183
+ outputRoot: fixture.outputRoot,
184
+ timeoutMs: 1_000,
185
+ createdAt: "2026-06-16T00:00:00.000Z",
186
+ env: {
187
+ WARRANT_ENSEMBLE_LIVE_SMOKE: "1",
188
+ VERCEL_TOKEN: "vercel-test",
189
+ ANTHROPIC_API_KEY: "anthropic-test",
190
+ CODEX_API_KEY: "codex-test"
191
+ },
192
+ liveSmoke: ["claude-code", "codex"],
193
+ liveSmokeHarnesses: {
194
+ "claude-code": claudeHarness,
195
+ codex: codexHarness
196
+ }
197
+ });
198
+ assert.equal(dashboard.records.length, 8);
199
+ assert.equal(dashboard.records.find((record) => record.taskId === "claude-code-live")?.result.status, "succeeded");
200
+ assert.equal(dashboard.records.find((record) => record.taskId === "codex-live")?.result.status, "succeeded");
201
+ assert.equal(dashboard.readiness.find((row) => row.harnessId === "claude-code")?.liveSmoke, "live smoke passed");
202
+ assert.equal(dashboard.readiness.find((row) => row.harnessId === "codex")?.liveSmoke, "live smoke passed");
203
+ const markdown = readFileSync(dashboard.dashboardPath, "utf8");
204
+ assert.match(markdown, /log:claude_safe_log:sha256/);
205
+ assert.match(markdown, /log:codex_safe_log:sha256/);
206
+ assert.match(markdown, /raw artifact ref\(s\) withheld/);
207
+ assert.equal(markdown.includes(privateTranscript), false);
208
+ assert.equal(markdown.includes("file:///tmp/private-claude.log"), false);
209
+ assert.equal(markdown.includes("file:///tmp/private-codex.log"), false);
210
+ }
211
+ finally {
212
+ fixture.cleanup();
213
+ }
214
+ });
@@ -9,6 +9,7 @@ import { PassThrough } from "node:stream";
9
9
  import { fileURLToPath } from "node:url";
10
10
  import { after, before, test } from "node:test";
11
11
  import { FUSION_REPORT_HEADER, FUSION_RUN_ID_HEADER, runAcpAgent, runFrontDoorAcceptance } from "@fusionkit/model-gateway";
12
+ import { resolveCursorkitCli } from "@fusionkit/ensemble";
12
13
  import { buildAcpRunner, startConfiguredGateway } from "../gateway.js";
13
14
  /**
14
15
  * Comprehensive front-door e2e. Exercises the real chain end to end:
@@ -386,7 +387,9 @@ test("unified acceptance suite passes every reachable front door against the rea
386
387
  assert.equal(statusOf("cursor-acp"), "blocked");
387
388
  assert.ok(backend.judgeCallCount() >= 4, "judge synthesis must hit the model backend per front door");
388
389
  });
389
- const LIVE_CLAUDE = process.env.WARRANT_GATEWAY_LIVE_CLAUDE === "1" ? false : "set WARRANT_GATEWAY_LIVE_CLAUDE=1 with a working claude CLI";
390
+ const LIVE_CLAUDE = (process.env.FUSIONKIT_GATEWAY_LIVE_CLAUDE ?? process.env.WARRANT_GATEWAY_LIVE_CLAUDE) === "1"
391
+ ? false
392
+ : "set FUSIONKIT_GATEWAY_LIVE_CLAUDE=1 with a working claude CLI";
390
393
  test("live: real Claude Code CLI drives the gateway fusion run and receives the synthesized answer", { skip: LIVE_CLAUDE }, async () => {
391
394
  // A dedicated single-model gateway keeps the live run light: each Claude
392
395
  // model call triggers one real unified harness run (worktree + command +
@@ -429,7 +432,9 @@ test("live: real Claude Code CLI drives the gateway fusion run and receives the
429
432
  await liveGateway.close();
430
433
  }
431
434
  });
432
- const LIVE_CODEX = process.env.WARRANT_GATEWAY_LIVE_CODEX === "1" ? false : "set WARRANT_GATEWAY_LIVE_CODEX=1 with a working codex CLI";
435
+ const LIVE_CODEX = (process.env.FUSIONKIT_GATEWAY_LIVE_CODEX ?? process.env.WARRANT_GATEWAY_LIVE_CODEX) === "1"
436
+ ? false
437
+ : "set FUSIONKIT_GATEWAY_LIVE_CODEX=1 with a working codex CLI";
433
438
  test("live: real Codex CLI drives the gateway fusion run and receives the synthesized answer", { skip: LIVE_CODEX }, async () => {
434
439
  // Codex streams `/v1/responses`; the gateway must emit the Responses SSE
435
440
  // sequence ending in response.completed for Codex to accept the answer.
@@ -482,15 +487,14 @@ test("live: real Codex CLI drives the gateway fusion run and receives the synthe
482
487
  rmSync(codexHome, { recursive: true, force: true });
483
488
  }
484
489
  });
485
- // Drives the real cursor-agent CLI in ACP mode through the real Cursorkit
490
+ // Drives the real cursor-agent CLI in ACP mode through the bundled Cursorkit
486
491
  // bridge, whose local model backend is pointed at this gateway. Requires a
487
- // logged-in cursor-agent and a built Cursorkit checkout (WARRANT_CURSORKIT_DIR).
488
- const CURSORKIT_DIR = process.env.WARRANT_CURSORKIT_DIR;
489
- const LIVE_CURSOR = process.env.WARRANT_GATEWAY_LIVE_CURSOR === "1" && CURSORKIT_DIR !== undefined
492
+ // logged-in cursor-agent (Cursorkit is bundled as an npm dependency).
493
+ const LIVE_CURSOR = (process.env.FUSIONKIT_GATEWAY_LIVE_CURSOR ?? process.env.WARRANT_GATEWAY_LIVE_CURSOR) === "1"
490
494
  ? false
491
- : "set WARRANT_GATEWAY_LIVE_CURSOR=1 and WARRANT_CURSORKIT_DIR=<built cursorkit checkout> with a logged-in cursor-agent";
495
+ : "set FUSIONKIT_GATEWAY_LIVE_CURSOR=1 with a logged-in cursor-agent";
492
496
  test("live: real cursor-agent (ACP) drives the Cursorkit bridge into the gateway fusion run", { skip: LIVE_CURSOR }, async () => {
493
- const cursorkitDir = CURSORKIT_DIR;
497
+ const { serveCli } = resolveCursorkitCli();
494
498
  const liveGateway = await startConfiguredGateway({
495
499
  config: { ...config, models: [{ id: "cursor-panel", model: "fusion-cursor" }] },
496
500
  host: "127.0.0.1",
@@ -519,8 +523,7 @@ test("live: real cursor-agent (ACP) drives the Cursorkit bridge into the gateway
519
523
  MODEL_PROVIDER_MODEL: "fusion-panel",
520
524
  MODEL_CONTEXT_TOKEN_LIMIT: "128000"
521
525
  });
522
- const bridge = spawn(process.execPath, ["dist/src/cli.js", "serve"], {
523
- cwd: cursorkitDir,
526
+ const bridge = spawn(process.execPath, [serveCli, "serve"], {
524
527
  env: bridgeEnv,
525
528
  stdio: ["ignore", "pipe", "pipe"]
526
529
  });
@@ -13,23 +13,23 @@ test("claudeEnv points Claude Code at the gateway's Anthropic surface", () => {
13
13
  });
14
14
  test("claudeEnv falls back to a placeholder auth token", () => {
15
15
  const env = claudeEnv("http://127.0.0.1:9000");
16
- assert.equal(env.ANTHROPIC_AUTH_TOKEN, "warrant-local");
16
+ assert.equal(env.ANTHROPIC_AUTH_TOKEN, "fusionkit-local");
17
17
  });
18
18
  test("codexConfigToml declares a Responses provider at the gateway", () => {
19
19
  const toml = codexConfigToml("http://127.0.0.1:9000", "local-model");
20
20
  assert.ok(toml.includes('model = "local-model"'));
21
- assert.ok(toml.includes("[model_providers.warrant-local]"));
21
+ assert.ok(toml.includes("[model_providers.fusionkit-local]"));
22
22
  assert.ok(toml.includes('base_url = "http://127.0.0.1:9000/v1"'));
23
23
  assert.ok(toml.includes('wire_api = "responses"'));
24
24
  assert.ok(toml.includes("requires_openai_auth = false"));
25
25
  });
26
26
  test("opencodeConfig registers an OpenAI-compatible provider", () => {
27
27
  const config = opencodeConfig("http://127.0.0.1:9000", "local-model");
28
- const provider = config.provider["warrant-local"];
28
+ const provider = config.provider["fusionkit-local"];
29
29
  assert.equal(provider?.npm, "@ai-sdk/openai-compatible");
30
30
  assert.equal(provider?.options.baseURL, "http://127.0.0.1:9000/v1");
31
31
  assert.ok("local-model" in (provider?.models ?? {}));
32
- assert.equal(opencodeModelArg("local-model"), "warrant-local/local-model");
32
+ assert.equal(opencodeModelArg("local-model"), "fusionkit-local/local-model");
33
33
  });
34
34
  test("cursorInstructions surfaces the public URL and plan-mode caveat", () => {
35
35
  const text = cursorInstructions("https://abc.example", "local-model");
@@ -0,0 +1,2 @@
1
+ import type { ToolRegistry } from "@fusionkit/tools";
2
+ export declare const toolRegistry: ToolRegistry;
package/dist/tools.js ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The fusionkit tool registry: the single place that knows every tool package.
3
+ * Importing this module also wires the ensemble harness gateway to resolve
4
+ * tool-backed adapters (codex / claude-code / cursor) from the registry, so
5
+ * `@fusionkit/ensemble` itself stays free of any per-tool dependency.
6
+ *
7
+ * Adding a new tool is one new `@fusionkit/tool-*` package plus one entry here.
8
+ */
9
+ import { setToolHarnessProvider } from "@fusionkit/ensemble";
10
+ import { createToolRegistry } from "@fusionkit/tools";
11
+ import { claudeTool } from "@fusionkit/tool-claude";
12
+ import { codexTool } from "@fusionkit/tool-codex";
13
+ import { cursorTool } from "@fusionkit/tool-cursor";
14
+ import { opencodeTool } from "@fusionkit/tool-opencode";
15
+ export const toolRegistry = createToolRegistry([
16
+ codexTool,
17
+ claudeTool,
18
+ cursorTool,
19
+ opencodeTool
20
+ ]);
21
+ setToolHarnessProvider({
22
+ adapter: (kind, options) => toolRegistry.harnessForKind(kind, options),
23
+ sideEffects: (kind) => toolRegistry.sideEffectsForKind(kind),
24
+ responseShape: (kind) => toolRegistry.responseShapeForKind(kind)
25
+ });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusionkit/cli",
3
3
  "private": false,
4
- "version": "0.1.5",
4
+ "version": "0.1.6",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/velum-labs/handoffkit.git",
@@ -34,14 +34,19 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "commander": "14.0.3",
37
- "@fusionkit/ensemble": "0.1.5",
38
- "@fusionkit/model-gateway": "0.1.5",
39
- "@fusionkit/handoff": "0.1.5",
40
- "@fusionkit/protocol": "0.1.5",
41
- "@fusionkit/runner": "0.1.5",
42
- "@fusionkit/plane": "0.1.5",
43
- "@fusionkit/sdk": "0.1.5",
44
- "@fusionkit/workspace": "0.1.5"
37
+ "@fusionkit/ensemble": "0.1.6",
38
+ "@fusionkit/handoff": "0.1.6",
39
+ "@fusionkit/model-gateway": "0.1.6",
40
+ "@fusionkit/protocol": "0.1.6",
41
+ "@fusionkit/plane": "0.1.6",
42
+ "@fusionkit/runner": "0.1.6",
43
+ "@fusionkit/sdk": "0.1.6",
44
+ "@fusionkit/tool-cursor": "0.1.6",
45
+ "@fusionkit/tool-codex": "0.1.6",
46
+ "@fusionkit/tool-claude": "0.1.6",
47
+ "@fusionkit/tool-opencode": "0.1.6",
48
+ "@fusionkit/tools": "0.1.6",
49
+ "@fusionkit/workspace": "0.1.6"
45
50
  },
46
51
  "optionalDependencies": {
47
52
  "portless": "0.14.0"
@@ -1 +1 @@
1
- vxqImMqlOwssVTua5Facf
1
+ x7wPUCpgS31-5ZHJkcKsU
@@ -17,6 +17,13 @@
17
17
  "static/chunks/989-1c7081e9fd5c9b9d.js",
18
18
  "static/chunks/app/layout-d12f7c5cc80486b4.js"
19
19
  ],
20
+ "/api/models/route": [
21
+ "static/chunks/webpack-4501ec292abda191.js",
22
+ "static/chunks/4bd1b696-409494caf8c83275.js",
23
+ "static/chunks/255-69a4a78fac9becef.js",
24
+ "static/chunks/main-app-2a6b1f94de31f96f.js",
25
+ "static/chunks/app/api/models/route-95e822afbebe548b.js"
26
+ ],
20
27
  "/api/environments/route": [
21
28
  "static/chunks/webpack-4501ec292abda191.js",
22
29
  "static/chunks/4bd1b696-409494caf8c83275.js",
@@ -24,26 +31,26 @@
24
31
  "static/chunks/main-app-2a6b1f94de31f96f.js",
25
32
  "static/chunks/app/api/environments/route-95e822afbebe548b.js"
26
33
  ],
27
- "/api/models/route": [
34
+ "/api/replay/route": [
28
35
  "static/chunks/webpack-4501ec292abda191.js",
29
36
  "static/chunks/4bd1b696-409494caf8c83275.js",
30
37
  "static/chunks/255-69a4a78fac9becef.js",
31
38
  "static/chunks/main-app-2a6b1f94de31f96f.js",
32
- "static/chunks/app/api/models/route-95e822afbebe548b.js"
39
+ "static/chunks/app/api/replay/route-95e822afbebe548b.js"
33
40
  ],
34
- "/api/ingest/route": [
41
+ "/api/sessions/[traceId]/route": [
35
42
  "static/chunks/webpack-4501ec292abda191.js",
36
43
  "static/chunks/4bd1b696-409494caf8c83275.js",
37
44
  "static/chunks/255-69a4a78fac9becef.js",
38
45
  "static/chunks/main-app-2a6b1f94de31f96f.js",
39
- "static/chunks/app/api/ingest/route-95e822afbebe548b.js"
46
+ "static/chunks/app/api/sessions/[traceId]/route-95e822afbebe548b.js"
40
47
  ],
41
- "/api/replay/route": [
48
+ "/api/ingest/route": [
42
49
  "static/chunks/webpack-4501ec292abda191.js",
43
50
  "static/chunks/4bd1b696-409494caf8c83275.js",
44
51
  "static/chunks/255-69a4a78fac9becef.js",
45
52
  "static/chunks/main-app-2a6b1f94de31f96f.js",
46
- "static/chunks/app/api/replay/route-95e822afbebe548b.js"
53
+ "static/chunks/app/api/ingest/route-95e822afbebe548b.js"
47
54
  ],
48
55
  "/api/sessions/route": [
49
56
  "static/chunks/webpack-4501ec292abda191.js",
@@ -59,12 +66,13 @@
59
66
  "static/chunks/main-app-2a6b1f94de31f96f.js",
60
67
  "static/chunks/app/api/stream/route-95e822afbebe548b.js"
61
68
  ],
62
- "/api/sessions/[traceId]/route": [
69
+ "/environments/page": [
63
70
  "static/chunks/webpack-4501ec292abda191.js",
64
71
  "static/chunks/4bd1b696-409494caf8c83275.js",
65
72
  "static/chunks/255-69a4a78fac9becef.js",
66
73
  "static/chunks/main-app-2a6b1f94de31f96f.js",
67
- "static/chunks/app/api/sessions/[traceId]/route-95e822afbebe548b.js"
74
+ "static/chunks/239-1c69ce437d02745f.js",
75
+ "static/chunks/app/environments/page-75403c3640fdf9de.js"
68
76
  ],
69
77
  "/models/page": [
70
78
  "static/chunks/webpack-4501ec292abda191.js",
@@ -75,14 +83,6 @@
75
83
  "static/chunks/873-9351d1edaa9d58ef.js",
76
84
  "static/chunks/app/models/page-d9b7d19485e9a640.js"
77
85
  ],
78
- "/environments/page": [
79
- "static/chunks/webpack-4501ec292abda191.js",
80
- "static/chunks/4bd1b696-409494caf8c83275.js",
81
- "static/chunks/255-69a4a78fac9becef.js",
82
- "static/chunks/main-app-2a6b1f94de31f96f.js",
83
- "static/chunks/239-1c69ce437d02745f.js",
84
- "static/chunks/app/environments/page-75403c3640fdf9de.js"
85
- ],
86
86
  "/page": [
87
87
  "static/chunks/webpack-4501ec292abda191.js",
88
88
  "static/chunks/4bd1b696-409494caf8c83275.js",
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "/_not-found/page": "/_not-found",
3
- "/api/environments/route": "/api/environments",
4
3
  "/api/models/route": "/api/models",
5
- "/api/ingest/route": "/api/ingest",
4
+ "/api/environments/route": "/api/environments",
6
5
  "/api/replay/route": "/api/replay",
6
+ "/api/sessions/[traceId]/route": "/api/sessions/[traceId]",
7
+ "/api/ingest/route": "/api/ingest",
7
8
  "/api/sessions/route": "/api/sessions",
8
9
  "/api/stream/route": "/api/stream",
9
- "/api/sessions/[traceId]/route": "/api/sessions/[traceId]",
10
- "/models/page": "/models",
11
10
  "/environments/page": "/environments",
11
+ "/models/page": "/models",
12
12
  "/page": "/",
13
13
  "/sessions/[traceId]/page": "/sessions/[traceId]"
14
14
  }
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/vxqImMqlOwssVTua5Facf/_buildManifest.js",
9
- "static/vxqImMqlOwssVTua5Facf/_ssgManifest.js"
8
+ "static/x7wPUCpgS31-5ZHJkcKsU/_buildManifest.js",
9
+ "static/x7wPUCpgS31-5ZHJkcKsU/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [
12
12
  "static/chunks/webpack-4501ec292abda191.js",
@@ -26,7 +26,7 @@
26
26
  "x-next-revalidate-tag-token"
27
27
  ]
28
28
  },
29
- "/models": {
29
+ "/environments": {
30
30
  "experimentalBypassFor": [
31
31
  {
32
32
  "type": "header",
@@ -39,8 +39,8 @@
39
39
  }
40
40
  ],
41
41
  "initialRevalidateSeconds": false,
42
- "srcRoute": "/models",
43
- "dataRoute": "/models.rsc",
42
+ "srcRoute": "/environments",
43
+ "dataRoute": "/environments.rsc",
44
44
  "allowHeader": [
45
45
  "host",
46
46
  "x-matched-path",
@@ -50,7 +50,7 @@
50
50
  "x-next-revalidate-tag-token"
51
51
  ]
52
52
  },
53
- "/environments": {
53
+ "/models": {
54
54
  "experimentalBypassFor": [
55
55
  {
56
56
  "type": "header",
@@ -63,8 +63,8 @@
63
63
  }
64
64
  ],
65
65
  "initialRevalidateSeconds": false,
66
- "srcRoute": "/environments",
67
- "dataRoute": "/environments.rsc",
66
+ "srcRoute": "/models",
67
+ "dataRoute": "/models.rsc",
68
68
  "allowHeader": [
69
69
  "host",
70
70
  "x-matched-path",
@@ -102,8 +102,8 @@
102
102
  "dynamicRoutes": {},
103
103
  "notFoundRoutes": [],
104
104
  "preview": {
105
- "previewModeId": "27192c3a8f4c27a7a72a8d5aa2f38642",
106
- "previewModeSigningKey": "8f7f844028b2699eaf0cd47425fb86320570cf7f52d7462309a571539a7611e8",
107
- "previewModeEncryptionKey": "f97dc9b293bc1ea3c9ececd26065667d3ae7562d854d7627cc51750c1bc99306"
105
+ "previewModeId": "9594f04790760323f1e2923ec24b2404",
106
+ "previewModeSigningKey": "281238373f342e329fe0b57d64f2d25dd33871bf9a620ea29ef66276a15f8ec5",
107
+ "previewModeEncryptionKey": "a673bd91681e4c5f8b9cd3b04ac5d5dd4d03a041430c0ade96730587eef1ac9f"
108
108
  }
109
109
  }
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"11509":{"*":{"id":"94466","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"31327":{"*":{"id":"33069","name":"*","chunks":[],"async":false}},"37373":{"*":{"id":"72400","name":"*","chunks":[],"async":false}},"54664":{"*":{"id":"8044","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"64441":{"*":{"id":"75780","name":"*","chunks":[],"async":false}},"72417":{"*":{"id":"10371","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"82180":{"*":{"id":"36736","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/components/scope/sidebar-nav.tsx":{"id":31327,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/components/ui/separator.tsx":{"id":54664,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/components/ui/tooltip.tsx":{"id":82180,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"subsets\":[\"latin\"],\"variable\":\"--font-sans\"}],\"variableName\":\"geist\"}":{"id":70127,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"subsets\":[\"latin\"],\"variable\":\"--font-mono\"}],\"variableName\":\"geistMono\"}":{"id":44176,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/globals.css":{"id":41290,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/models/page.tsx":{"id":64441,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/environments/page.tsx":{"id":11509,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/page.tsx":{"id":72417,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","22","static/chunks/22-1934dc9c2e544aa9.js","974","static/chunks/app/page-57dce47ff6c00ddd.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/sessions/[traceId]/page.tsx":{"id":37373,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/handoffkit/handoffkit/apps/scope/":[],"/home/runner/work/handoffkit/handoffkit/apps/scope/app/layout":[{"inlined":false,"path":"static/css/d57be8dcbceccbc1.css"}],"/home/runner/work/handoffkit/handoffkit/apps/scope/app/page":[],"/home/runner/work/handoffkit/handoffkit/apps/scope/app/_not-found/page":[]},"rscModuleMapping":{"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"11509":{"*":{"id":"86851","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"31327":{"*":{"id":"36755","name":"*","chunks":[],"async":false}},"37373":{"*":{"id":"66381","name":"*","chunks":[],"async":false}},"41290":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"54664":{"*":{"id":"54814","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"64441":{"*":{"id":"21399","name":"*","chunks":[],"async":false}},"72417":{"*":{"id":"17742","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"82180":{"*":{"id":"76786","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"11509":{"*":{"id":"94466","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"31327":{"*":{"id":"33069","name":"*","chunks":[],"async":false}},"37373":{"*":{"id":"72400","name":"*","chunks":[],"async":false}},"54664":{"*":{"id":"8044","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"64441":{"*":{"id":"75780","name":"*","chunks":[],"async":false}},"72417":{"*":{"id":"10371","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"82180":{"*":{"id":"36736","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/components/scope/sidebar-nav.tsx":{"id":31327,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/components/ui/separator.tsx":{"id":54664,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/components/ui/tooltip.tsx":{"id":82180,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"subsets\":[\"latin\"],\"variable\":\"--font-sans\"}],\"variableName\":\"geist\"}":{"id":70127,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"subsets\":[\"latin\"],\"variable\":\"--font-mono\"}],\"variableName\":\"geistMono\"}":{"id":44176,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/globals.css":{"id":41290,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","177","static/chunks/app/layout-d12f7c5cc80486b4.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/environments/page.tsx":{"id":11509,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/models/page.tsx":{"id":64441,"name":"*","chunks":[],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/page.tsx":{"id":72417,"name":"*","chunks":["239","static/chunks/239-1c69ce437d02745f.js","989","static/chunks/989-1c7081e9fd5c9b9d.js","22","static/chunks/22-1934dc9c2e544aa9.js","974","static/chunks/app/page-57dce47ff6c00ddd.js"],"async":false},"/home/runner/work/handoffkit/handoffkit/apps/scope/app/sessions/[traceId]/page.tsx":{"id":37373,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/handoffkit/handoffkit/apps/scope/":[],"/home/runner/work/handoffkit/handoffkit/apps/scope/app/layout":[{"inlined":false,"path":"static/css/d57be8dcbceccbc1.css"}],"/home/runner/work/handoffkit/handoffkit/apps/scope/app/page":[],"/home/runner/work/handoffkit/handoffkit/apps/scope/app/_not-found/page":[]},"rscModuleMapping":{"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"11509":{"*":{"id":"86851","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"31327":{"*":{"id":"36755","name":"*","chunks":[],"async":false}},"37373":{"*":{"id":"66381","name":"*","chunks":[],"async":false}},"41290":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"54664":{"*":{"id":"54814","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"64441":{"*":{"id":"21399","name":"*","chunks":[],"async":false}},"72417":{"*":{"id":"17742","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"82180":{"*":{"id":"76786","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}