chore: upgrade frontend dependencies to SvelteKit 3

This commit is contained in:
2026-10-02 07:36:25 +09:00
parent d10783c0d6
commit a0460f107d
142 changed files with 785 additions and 1033 deletions
@@ -97,6 +97,16 @@ Deno.serve({ hostname: "127.0.0.1", port }, async (request) => {
diagnostics: [], diagnostics: [],
}); });
} }
// Keyboard focus can preload the Tickets route before navigation.
if (path === "/orchestrator") {
return json({
workspace_id: workspaceId,
online: false,
disposition: "offline",
worker: null,
diagnostics: [],
});
}
if (path === "/working-directories") { if (path === "/working-directories") {
return json({ workspace_id: workspaceId, items: [], diagnostics: [] }); return json({ workspace_id: workspaceId, items: [], diagnostics: [] });
} }
@@ -66,6 +66,9 @@ Deno.test("production Home dashboard isolates failures, shows authoritative reco
}); });
page.on("requestfailed", (request) => errors.push(request.url())); page.on("requestfailed", (request) => errors.push(request.url()));
page.on("request", (request) => requests.push(request.url())); page.on("request", (request) => requests.push(request.url()));
page.on("response", (response) => {
if (response.status() >= 400) errors.push(`${response.status()} ${response.url()}`);
});
for (const workspace of ["home-owner", "home-member", "home-long"]) { for (const workspace of ["home-owner", "home-member", "home-long"]) {
await page.goto(`${url}/w/${workspace}`); await page.goto(`${url}/w/${workspace}`);
await ready(page); await ready(page);
+12 -11
View File
@@ -2,8 +2,13 @@
SvelteKit static SPA for the Yoi workspace control plane. SvelteKit static SPA for the Yoi workspace control plane.
The frontend is intentionally static. Workspace authority, validation, and API The frontend is intentionally static. Workspace authority, validation, and API behavior live in the Rust `yoi-server` backend.
behavior live in the Rust `yoi-server` backend.
## Toolchain
Dependencies are pinned in `deno.json` and `package.json`, with resolutions in `deno.lock`. Run `deno install --frozen` to reproduce the installed versions. The current toolchain is SvelteKit 3, Svelte 5, Vite 8, and Vitest 5. TypeScript is kept on 6.0.3 because SvelteKit 3.0.0 and svelte-check 4.7.6 do not yet declare support for TypeScript 7.
SvelteKit and adapter settings live in `vite.config.ts`. Internal library imports use the `#lib/*` package subpath mapping with explicit file extensions, shared by Vite, TypeScript, and Deno. `tsconfig.json` extends `$app/tsconfig`; generated WASM JavaScript is consumed through its generated `.d.ts`, not checked as handwritten JavaScript. Deno-only tests under `test/` are type-checked by `deno task test`.
## Development ## Development
@@ -23,9 +28,7 @@ cd web/workspace
deno task dev deno task dev
``` ```
The Vite dev server proxies `/api/*` to `http://127.0.0.1:8787`, so frontend hot The Vite dev server proxies `/api/*` to `http://127.0.0.1:8787`, so frontend hot reload works while the Rust backend serves the workspace API. Open the Vite URL printed by `deno task dev`.
reload works while the Rust backend serves the workspace API. Open the Vite URL
printed by `deno task dev`.
If you want to run the backend from the repository root instead: If you want to run the backend from the repository root instead:
@@ -33,10 +36,7 @@ If you want to run the backend from the repository root instead:
cargo run -p yoi-workspace-server --bin yoi-server -- serve --listen 127.0.0.1:8787 cargo run -p yoi-workspace-server --bin yoi-server -- serve --listen 127.0.0.1:8787
``` ```
The backend reads Workspace records from the Yoi server DB at The backend reads Workspace records from the Yoi server DB at `<data_dir>/server/server.db`. Run `cargo run -p yoi-workspace-server --bin yoi-server -- init --workspace .` first when the server DB has not been initialized.
`<data_dir>/server/server.db`. Run
`cargo run -p yoi-workspace-server --bin yoi-server -- init --workspace .` first when the server
DB has not been initialized.
## Static build ## Static build
@@ -46,13 +46,14 @@ Build the SPA:
deno task build deno task build
``` ```
Static asset packaging is a deployment concern. Local development normally uses Static asset packaging is a deployment concern. Local development normally uses the Vite dev server proxy plus the Rust backend command above.
the Vite dev server proxy plus the Rust backend command above.
## Checks ## Checks
```bash ```bash
deno task check deno task check
deno task test
deno task test:component
deno task build deno task build
``` ```
+23 -24
View File
@@ -3,40 +3,39 @@
"nodeModulesDir": "auto", "nodeModulesDir": "auto",
"tasks": { "tasks": {
"install": "deno install", "install": "deno install",
"dev": "deno run -A npm:vite@7.2.7 dev", "dev": "deno run -A npm:vite@8.3.2 dev",
"dev:backend": "cd ../.. && cargo run -p yoi-workspace-server --bin yoi-server -- serve --listen 127.0.0.1:8787", "dev:backend": "cd ../.. && cargo run -p yoi-workspace-server --bin yoi-server -- serve --listen 127.0.0.1:8787",
"check": "deno run -A npm:@sveltejs/kit@2.49.4 sync && deno run -A npm:svelte-check@4.3.4 --tsconfig ./tsconfig.json", "check": "deno run -A npm:@sveltejs/kit@3.0.0 sync && deno run -A npm:svelte-check@4.7.6 --tsconfig ./tsconfig.json",
"test": "deno test --allow-read=src,test,tests,../../docs --allow-env=LOG,VSCODE_TEXTMATE_DEBUG,NODE_ENV tests/workspace-model.test.ts tests/repository-api.test.ts tests/workspace-catalog.test.ts tests/profile-api.test.ts tests/skill-api.test.ts tests/tooltip-contract.test.ts tests/bevel-contract.test.ts tests/bevel-line-contract.test.ts tests/typography-contract.test.ts src/lib/workspace/auth/model.test.ts src/lib/workspace/protocol-validator.test.ts tests/auth-api.test.ts src/lib/workspace/api/http.test.ts src/lib/workspace/api/workers.test.ts src/lib/workspace/api/ticket-browser.test.ts src/lib/workspace/header/breadcrumb-model.test.ts src/lib/workspace/console/chat-submit.test.ts src/lib/workspace/console/composer-delivery.test.ts test/composer-history.test.ts tests/composer-paste.test.ts src/lib/workspace/console/composer-command.test.ts src/lib/workspace/console/composer-draft.test.ts src/lib/workspace/console/composer-completion.test.ts src/lib/workspace/console/file-completions.test.ts test/console/ansi.test.ts src/lib/workspace/console/history.test.ts src/lib/workspace/console/model.test.ts src/lib/workspace/console/turn-navigation.test.ts src/lib/workspace/console/run-status.test.ts src/lib/workspace/companion/api.test.ts tests/workdir-api.test.ts tests/workdir-permissions.test.ts src/lib/workspace/console/tasks.test.ts test/ticket-detail-route-reuse.test.ts test/spa-shell.test.ts test/objective-pages.test.ts test/repositories/ui.test.ts src/lib/workspace/console/worker-console.ui.test.ts src/lib/workspace/settings/model.test.ts tests/runtime-connection.test.ts tests/runtime-management.test.ts tests/runtime-management-source.test.ts src/lib/workspace/sidebar/override-stack.test.ts src/lib/workspace/sidebar/route-ownership.test.ts src/lib/workspace/sidebar/workers.test.ts src/lib/workspace/sidebar/workspace-switcher.test.ts src/lib/workspace/sidebar/worker-subscription.test.ts src/lib/workspace/sidebar/worker-workdir-meta.test.ts src/lib/workspace/sidebar/worker-launch.test.ts test/sidebar/worker-actions.test.ts src/lib/workspace/tickets/merge-request-resources.test.ts src/lib/workspace/tickets/ticket-panel.test.ts test/merge-request-status.test.ts test/config-source/decodal-grammar.test.ts test/config-source/editor-state.test.ts test/config-source/fixed-schema-wrapper.test.ts test/config-source/toolchain.test.ts test/config-source/wasm-parity.test.ts test/config-source/api.test.ts tests/memory-api.test.ts test/repository-access/api.test.ts test/repository-access/loader.test.ts test/repository-access/model.test.ts test/repository-access/structure.test.ts test/repository-ssh-connection-ui.test.ts", "test": "deno test --allow-read=src,test,tests,../../docs --allow-env=LOG,VSCODE_TEXTMATE_DEBUG,NODE_ENV tests/workspace-model.test.ts tests/repository-api.test.ts tests/workspace-catalog.test.ts tests/profile-api.test.ts tests/skill-api.test.ts tests/tooltip-contract.test.ts tests/bevel-contract.test.ts tests/bevel-line-contract.test.ts tests/typography-contract.test.ts src/lib/workspace/auth/model.test.ts src/lib/workspace/protocol-validator.test.ts tests/auth-api.test.ts src/lib/workspace/api/http.test.ts src/lib/workspace/api/workers.test.ts src/lib/workspace/api/ticket-browser.test.ts src/lib/workspace/header/breadcrumb-model.test.ts src/lib/workspace/console/chat-submit.test.ts src/lib/workspace/console/composer-delivery.test.ts test/composer-history.test.ts tests/composer-paste.test.ts src/lib/workspace/console/composer-command.test.ts src/lib/workspace/console/composer-draft.test.ts src/lib/workspace/console/composer-completion.test.ts src/lib/workspace/console/file-completions.test.ts test/console/ansi.test.ts src/lib/workspace/console/history.test.ts src/lib/workspace/console/model.test.ts src/lib/workspace/console/turn-navigation.test.ts src/lib/workspace/console/run-status.test.ts src/lib/workspace/companion/api.test.ts tests/workdir-api.test.ts tests/workdir-permissions.test.ts src/lib/workspace/console/tasks.test.ts test/ticket-detail-route-reuse.test.ts test/spa-shell.test.ts test/objective-pages.test.ts test/repositories/ui.test.ts src/lib/workspace/console/worker-console.ui.test.ts src/lib/workspace/settings/model.test.ts tests/runtime-connection.test.ts tests/runtime-management.test.ts tests/runtime-management-source.test.ts src/lib/workspace/sidebar/override-stack.test.ts src/lib/workspace/sidebar/route-ownership.test.ts src/lib/workspace/sidebar/workers.test.ts src/lib/workspace/sidebar/workspace-switcher.test.ts src/lib/workspace/sidebar/worker-subscription.test.ts src/lib/workspace/sidebar/worker-workdir-meta.test.ts src/lib/workspace/sidebar/worker-launch.test.ts test/sidebar/worker-actions.test.ts src/lib/workspace/tickets/merge-request-resources.test.ts src/lib/workspace/tickets/ticket-panel.test.ts test/merge-request-status.test.ts test/config-source/decodal-grammar.test.ts test/config-source/editor-state.test.ts test/config-source/fixed-schema-wrapper.test.ts test/config-source/toolchain.test.ts test/config-source/wasm-parity.test.ts test/config-source/api.test.ts tests/memory-api.test.ts test/repository-access/api.test.ts test/repository-access/loader.test.ts test/repository-access/model.test.ts test/repository-access/structure.test.ts test/repository-ssh-connection-ui.test.ts",
"test:component": "deno run -A npm:vitest@3.2.4 run --config vitest.config.ts", "test:component": "deno run -A npm:vitest@5.0.3 run --config vitest.config.ts",
"build": "deno run -A npm:vite@7.2.7 build", "build": "deno run -A npm:vite@8.3.2 build",
"preview": "deno run -A npm:vite@7.2.7 preview", "preview": "deno run -A npm:vite@8.3.2 preview",
"generate:repository-api": "cd ../.. && cargo run -q -p server-api --example generate_repository_openapi_types", "generate:repository-api": "cd ../.. && cargo run -q -p server-api --example generate_repository_openapi_types",
"check:repository-api": "cd ../.. && cargo run -q -p server-api --example generate_repository_openapi_types -- --check", "check:repository-api": "cd ../.. && cargo run -q -p server-api --example generate_repository_openapi_types -- --check",
"generate:ticket-api": "cd ../.. && cargo run -q -p server-api --example generate_ticket_api_types", "generate:ticket-api": "cd ../.. && cargo run -q -p server-api --example generate_ticket_api_types",
"check:ticket-api": "cd ../.. && cargo run -q -p server-api --example generate_ticket_api_types -- --check" "check:ticket-api": "cd ../.. && cargo run -q -p server-api --example generate_ticket_api_types -- --check"
}, },
"imports": { "imports": {
"$lib/": "./src/lib/", "@sveltejs/adapter-static": "npm:@sveltejs/adapter-static@4.0.0",
"@sveltejs/adapter-static": "npm:@sveltejs/adapter-static@3.0.9", "@sveltejs/kit": "npm:@sveltejs/kit@3.0.0",
"@sveltejs/kit": "npm:@sveltejs/kit@2.49.4", "@sveltejs/vite-plugin-svelte": "npm:@sveltejs/vite-plugin-svelte@7.3.1",
"@sveltejs/vite-plugin-svelte": "npm:@sveltejs/vite-plugin-svelte@6.2.1", "@codemirror/autocomplete": "npm:@codemirror/autocomplete@6.20.3",
"@codemirror/autocomplete": "npm:@codemirror/autocomplete@6.20.0", "@codemirror/commands": "npm:@codemirror/commands@6.11.1",
"@codemirror/commands": "npm:@codemirror/commands@6.9.0",
"@codemirror/language": "npm:@codemirror/language@6.12.4", "@codemirror/language": "npm:@codemirror/language@6.12.4",
"@codemirror/state": "npm:@codemirror/state@6.7.1", "@codemirror/state": "npm:@codemirror/state@6.7.6",
"@codemirror/view": "npm:@codemirror/view@6.43.8", "@codemirror/view": "npm:@codemirror/view@6.43.13",
"@lezer/common": "npm:@lezer/common@1.5.2", "@lezer/common": "npm:@lezer/common@1.5.3",
"@lezer/highlight": "npm:@lezer/highlight@1.2.3", "@lezer/highlight": "npm:@lezer/highlight@1.2.5",
"decodal-codemirror": "npm:decodal-codemirror@0.3.0", "decodal-codemirror": "npm:decodal-codemirror@0.3.1",
"clsx": "npm:clsx@2.1.1", "clsx": "npm:clsx@2.1.1",
"cookie": "npm:cookie@0.6.0", "cookie": "npm:cookie@2.0.1",
"devalue": "npm:devalue@5.6.4", "devalue": "npm:devalue@6.0.2",
"set-cookie-parser": "npm:set-cookie-parser@2.7.2", "set-cookie-parser": "npm:set-cookie-parser@3.1.2",
"shiki": "npm:shiki@4.4.2", "shiki": "npm:shiki@4.5.0",
"svelte": "npm:svelte@5.45.6", "svelte": "npm:svelte@5.57.1",
"svelte-check": "npm:svelte-check@4.3.4", "svelte-check": "npm:svelte-check@4.7.6",
"typescript": "npm:typescript@5.9.3", "typescript": "npm:typescript@6.0.3",
"vite": "npm:vite@7.2.7" "vite": "npm:vite@8.3.2"
}, },
"fmt": { "fmt": {
"proseWrap": "never" "proseWrap": "never"
+336 -603
View File
File diff suppressed because it is too large Load Diff
+9 -6
View File
@@ -5,14 +5,17 @@
"type": "module", "type": "module",
"dependencies": { "dependencies": {
"@fontsource/ibm-plex-mono": "5.3.0", "@fontsource/ibm-plex-mono": "5.3.0",
"@humanspeak/svelte-markdown": "1.9.1", "@humanspeak/svelte-markdown": "2.0.0",
"gen-interface-jp": "0.8.0", "gen-interface-jp": "0.8.0",
"shiki": "4.4.2", "shiki": "4.5.0",
"yaml": "2.9.0" "yaml": "2.9.1"
}, },
"devDependencies": { "devDependencies": {
"@testing-library/svelte": "5.2.8", "@testing-library/svelte": "5.4.2",
"happy-dom": "20.12.0", "happy-dom": "20.14.5",
"vitest": "3.2.4" "vitest": "5.0.3"
},
"imports": {
"#lib/*": "./src/lib/*"
} }
} }
@@ -7,7 +7,7 @@ import {
workspaceSkillCatalogPath, workspaceSkillCatalogPath,
workspaceSkillDetailPath, workspaceSkillDetailPath,
} from "./http.ts"; } from "./http.ts";
import { SKILL_API_LIMITS } from "$lib/generated/skill-api.ts"; import { SKILL_API_LIMITS } from "#lib/generated/skill-api.ts";
declare const Deno: { declare const Deno: {
test(name: string, fn: () => Promise<void> | void): void; test(name: string, fn: () => Promise<void> | void): void;
+3 -3
View File
@@ -1,13 +1,13 @@
import { SKILL_API_LIMITS } from "$lib/generated/skill-api.ts"; import { SKILL_API_LIMITS } from "#lib/generated/skill-api.ts";
import type { import type {
SkillCatalogResponse, SkillCatalogResponse,
SkillDetailResponse, SkillDetailResponse,
} from "$lib/generated/skill-api.ts"; } from "#lib/generated/skill-api.ts";
import { import {
parseSkillCatalogResponse, parseSkillCatalogResponse,
parseSkillDetailResponse, parseSkillDetailResponse,
SkillApiContractError, SkillApiContractError,
} from "$lib/workspace/skills/api.ts"; } from "#lib/workspace/skills/api.ts";
export type ApiResult<T> = { export type ApiResult<T> = {
data: T | null; data: T | null;
@@ -2,7 +2,7 @@ import type {
MergeRequestDetailResponse, MergeRequestDetailResponse,
MergeRequestListResponse, MergeRequestListResponse,
MergeRequestThreadEvent, MergeRequestThreadEvent,
} from "$lib/generated/ticket-api"; } from "#lib/generated/ticket-api.ts";
import { workspaceApiPath } from "./http"; import { workspaceApiPath } from "./http";
export type MergeRequestDetail = MergeRequestDetailResponse; export type MergeRequestDetail = MergeRequestDetailResponse;
@@ -3,19 +3,19 @@ import type {
CreateWorkspaceRepositoryResponse, CreateWorkspaceRepositoryResponse,
RepositoryDetailResponse, RepositoryDetailResponse,
RepositoryListResponse, RepositoryListResponse,
} from "$lib/generated/repository-api.ts"; } from "#lib/generated/repository-api.ts";
import { import {
type ApiResult, type ApiResult,
loadJson, loadJson,
readBoundedJson, readBoundedJson,
workspaceApiPath, workspaceApiPath,
} from "$lib/workspace/api/http.ts"; } from "#lib/workspace/api/http.ts";
import { import {
parseCreateWorkspaceRepositoryResponse, parseCreateWorkspaceRepositoryResponse,
parseRepositoryApiError, parseRepositoryApiError,
parseRepositoryDetailResponse, parseRepositoryDetailResponse,
parseRepositoryListResponse, parseRepositoryListResponse,
} from "$lib/workspace/api/workspace-model.ts"; } from "#lib/workspace/api/workspace-model.ts";
export const REPOSITORY_API_MAX_RESPONSE_BYTES = 2 * 1024 * 1024; export const REPOSITORY_API_MAX_RESPONSE_BYTES = 2 * 1024 * 1024;
@@ -3,7 +3,7 @@ import type {
RuntimeConnectionTestFailureKind, RuntimeConnectionTestFailureKind,
RuntimeConnectionTestResponse, RuntimeConnectionTestResponse,
RuntimeVerificationEvidenceSummary, RuntimeVerificationEvidenceSummary,
} from "$lib/generated/runtime-api"; } from "#lib/generated/runtime-api.ts";
const RESPONSE_KEYS = [ const RESPONSE_KEYS = [
"workspace_id", "workspace_id",
@@ -24,7 +24,7 @@ import type {
WorkspaceRuntimeDetail, WorkspaceRuntimeDetail,
WorkspaceRuntimeListResponse, WorkspaceRuntimeListResponse,
WorkspaceRuntimeResource, WorkspaceRuntimeResource,
} from "$lib/generated/runtime-api.ts"; } from "#lib/generated/runtime-api.ts";
import { workspaceApiPath } from "./http.ts"; import { workspaceApiPath } from "./http.ts";
export type WorkspaceRuntimeList = Omit<WorkspaceRuntimeListResponse, "diagnostics"> & { export type WorkspaceRuntimeList = Omit<WorkspaceRuntimeListResponse, "diagnostics"> & {
@@ -11,7 +11,7 @@ import type {
RuntimeWorkerLifecycleResult, RuntimeWorkerLifecycleResult,
WorkerOperationState, WorkerOperationState,
WorkerRetentionResponse, WorkerRetentionResponse,
} from "$lib/generated/runtime-api"; } from "#lib/generated/runtime-api.ts";
const MAX_STRING_BYTES = 4_096; const MAX_STRING_BYTES = 4_096;
const MAX_CANDIDATES = 1_000; const MAX_CANDIDATES = 1_000;
@@ -38,7 +38,7 @@ import type {
TicketRoleAssignmentRecord, TicketRoleAssignmentRecord,
TicketRoleAssignmentSummary, TicketRoleAssignmentSummary,
TicketTarget, TicketTarget,
} from "$lib/generated/ticket-api.ts"; } from "#lib/generated/ticket-api.ts";
export const TICKET_BROWSER_API_MAX_RESPONSE_BYTES = 4 * 1024 * 1024; export const TICKET_BROWSER_API_MAX_RESPONSE_BYTES = 4 * 1024 * 1024;
export const TICKET_BROWSER_API_LOAD_POLICY = { export const TICKET_BROWSER_API_LOAD_POLICY = {
@@ -21,12 +21,12 @@ import type {
WorkerWorkdirAttachmentSummary, WorkerWorkdirAttachmentSummary,
WorkerWorkspaceSummary, WorkerWorkspaceSummary,
WorkingDirectoryRepositoryOption, WorkingDirectoryRepositoryOption,
} from "$lib/generated/worker-launch-api"; } from "#lib/generated/worker-launch-api.ts";
import type { Segment } from "$lib/generated/protocol"; import type { Segment } from "#lib/generated/protocol.ts";
import { import {
parseExternalWorkdirPermissions, parseExternalWorkdirPermissions,
parseWorkingDirectorySummary, parseWorkingDirectorySummary,
} from "$lib/workspace/api/workdirs"; } from "#lib/workspace/api/workdirs.ts";
const DIAGNOSTIC_SEVERITIES = new Set<DiagnosticSeverity>([ const DIAGNOSTIC_SEVERITIES = new Set<DiagnosticSeverity>([
"info", "info",
@@ -4,8 +4,8 @@ import {
type RepositorySummary, type RepositorySummary,
type WorkspaceCreateResponse, type WorkspaceCreateResponse,
type WorkspaceSummary, type WorkspaceSummary,
} from "$lib/workspace/api/workspace-model"; } from "#lib/workspace/api/workspace-model.ts";
import { loadWorkspaceRepositoryList } from "$lib/workspace/api/repositories.ts"; import { loadWorkspaceRepositoryList } from "#lib/workspace/api/repositories.ts";
export type WorkspaceCatalogRecord = WorkspaceSummary; export type WorkspaceCatalogRecord = WorkspaceSummary;
export type WorkspaceCatalogItem = WorkspaceCatalogRecord & { export type WorkspaceCatalogItem = WorkspaceCatalogRecord & {
@@ -1,4 +1,4 @@
import type { ApiResult } from "$lib/workspace/api/http"; import type { ApiResult } from "#lib/workspace/api/http.ts";
import type { import type {
WorkspaceAuthConfig, WorkspaceAuthConfig,
WorkspaceCatalogListResponse, WorkspaceCatalogListResponse,
@@ -15,7 +15,7 @@ import type {
WorkspaceRepositoryRecord, WorkspaceRepositoryRecord,
WorkspaceResponse, WorkspaceResponse,
WorkspaceSummary, WorkspaceSummary,
} from "$lib/generated/legacy-server-api.ts"; } from "#lib/generated/legacy-server-api.ts";
import type { import type {
CreateWorkspaceRepositoryResponse, CreateWorkspaceRepositoryResponse,
Diagnostic, Diagnostic,
@@ -35,7 +35,7 @@ import type {
RepositorySshConnectionTrustState, RepositorySshConnectionTrustState,
RepositorySshHostKeyCandidate, RepositorySshHostKeyCandidate,
RepositorySummary, RepositorySummary,
} from "$lib/generated/repository-api.ts"; } from "#lib/generated/repository-api.ts";
export type { export type {
WorkspaceCatalogListResponse, WorkspaceCatalogListResponse,
@@ -45,7 +45,7 @@ export type {
WorkspacePermissionSummary, WorkspacePermissionSummary,
WorkspaceResponse, WorkspaceResponse,
WorkspaceSummary, WorkspaceSummary,
} from "$lib/generated/legacy-server-api.ts"; } from "#lib/generated/legacy-server-api.ts";
export type { export type {
CreateWorkspaceRepositoryRequest, CreateWorkspaceRepositoryRequest,
CreateWorkspaceRepositoryResponse, CreateWorkspaceRepositoryResponse,
@@ -63,7 +63,7 @@ export type {
RepositorySshConnectionProbeResponse, RepositorySshConnectionProbeResponse,
RepositorySshHostKeyCandidate, RepositorySshHostKeyCandidate,
RepositorySummary, RepositorySummary,
} from "$lib/generated/repository-api.ts"; } from "#lib/generated/repository-api.ts";
type JsonObject = Record<string, unknown>; type JsonObject = Record<string, unknown>;
+2 -2
View File
@@ -4,7 +4,7 @@ import type {
PasskeyLoginOptionsRequest, PasskeyLoginOptionsRequest,
PasskeyRegistrationCompleteRequest, PasskeyRegistrationCompleteRequest,
PasskeyRegistrationOptionsRequest, PasskeyRegistrationOptionsRequest,
} from "$lib/generated/auth-api.ts"; } from "#lib/generated/auth-api.ts";
import { import {
authenticationCredentialToJson, authenticationCredentialToJson,
type AuthUser, type AuthUser,
@@ -17,7 +17,7 @@ import {
prepareRegistrationOptions, prepareRegistrationOptions,
registrationCredentialToJson, registrationCredentialToJson,
type WhoamiResponse, type WhoamiResponse,
} from "$lib/workspace/auth/model"; } from "#lib/workspace/auth/model.ts";
const MAX_AUTH_RESPONSE_BYTES = 256 * 1024; const MAX_AUTH_RESPONSE_BYTES = 256 * 1024;
@@ -12,7 +12,7 @@ import type {
PasskeyRegistrationOptionsResponse, PasskeyRegistrationOptionsResponse,
RequestActor, RequestActor,
WhoamiResponse, WhoamiResponse,
} from "$lib/generated/auth-api.ts"; } from "#lib/generated/auth-api.ts";
export type AuthUser = AuthenticatedUser; export type AuthUser = AuthenticatedUser;
export type PasskeyUserResponse = AuthUserResponse; export type PasskeyUserResponse = AuthUserResponse;
@@ -9,7 +9,7 @@ import type {
DiagnosticSeverity, DiagnosticSeverity,
WorkspaceWorkerDiscoveryItem, WorkspaceWorkerDiscoveryItem,
WorkspaceWorkerSubject, WorkspaceWorkerSubject,
} from "$lib/generated/companion-api"; } from "#lib/generated/companion-api.ts";
const MAX_TRANSCRIPT_ITEMS = 200; const MAX_TRANSCRIPT_ITEMS = 200;
const MAX_DIAGNOSTICS = 100; const MAX_DIAGNOSTICS = 100;
@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { onMount } from "svelte"; import { onMount } from "svelte";
import DecodalSourceEditor from "$lib/workspace/settings/DecodalSourceEditor.svelte"; import DecodalSourceEditor from "#lib/workspace/settings/DecodalSourceEditor.svelte";
import { import {
commitConfigTree, commitConfigTree,
fetchConfigTree, fetchConfigTree,
@@ -10,7 +10,7 @@ export type {
ToolchainContract, ToolchainContract,
WorkspaceConfigSchemaBundle, WorkspaceConfigSchemaBundle,
WorkspaceConfigTreeResponse, WorkspaceConfigTreeResponse,
} from "$lib/generated/legacy-server-api.ts"; } from "#lib/generated/legacy-server-api.ts";
// Browser-local Decodal/WASM projections remain owned by config-source. // Browser-local Decodal/WASM projections remain owned by config-source.
export type { ConfigDiagnostic } from "./generated/types/ConfigDiagnostic.ts"; export type { ConfigDiagnostic } from "./generated/types/ConfigDiagnostic.ts";
@@ -22,12 +22,12 @@
isolateHistory, isolateHistory,
} from "@codemirror/commands"; } from "@codemirror/commands";
import { onMount } from "svelte"; import { onMount } from "svelte";
import type { Segment } from "$lib/generated/protocol.ts"; import type { Segment } from "#lib/generated/protocol.ts";
import { import {
handleComposerImagePaste, handleComposerImagePaste,
measureComposerPaste, measureComposerPaste,
type ComposerPasteMeasurement, type ComposerPasteMeasurement,
} from "$lib/workspace/console/composer-paste.ts"; } from "#lib/workspace/console/composer-paste.ts";
import { import {
composerDeletionRange, composerDeletionRange,
composerPasteAtoms, composerPasteAtoms,
@@ -37,7 +37,7 @@
type ComposerDraftSnapshot, type ComposerDraftSnapshot,
type ComposerPaste, type ComposerPaste,
type ComposerTextPaste, type ComposerTextPaste,
} from "$lib/workspace/console/composer-draft.ts"; } from "#lib/workspace/console/composer-draft.ts";
import { import {
ComposerHistory, ComposerHistory,
loadComposerHistory, loadComposerHistory,
@@ -45,9 +45,9 @@
shouldBrowseComposerHistory, shouldBrowseComposerHistory,
type ComposerHistoryDirection, type ComposerHistoryDirection,
type ComposerHistoryEntry, type ComposerHistoryEntry,
} from "$lib/workspace/console/composer-history.ts"; } from "#lib/workspace/console/composer-history.ts";
import { applyCompletion, completionSelection, completionTokenAt, localCommandCompletions, type ComposerCompletionEntry, type ComposerCompletionToken } from "./composer-completion"; import { applyCompletion, completionSelection, completionTokenAt, localCommandCompletions, type ComposerCompletionEntry, type ComposerCompletionToken } from "./composer-completion";
import { shouldSubmitChatKey } from "$lib/workspace/console/chat-submit.ts"; import { shouldSubmitChatKey } from "#lib/workspace/console/chat-submit.ts";
interface Props { interface Props {
disabled?: boolean; disabled?: boolean;
@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import AnsiText from '$lib/workspace/console/AnsiText.svelte'; import AnsiText from '#lib/workspace/console/AnsiText.svelte';
import RichMarkdown from '$lib/workspace/console/RichMarkdown.svelte'; import RichMarkdown from '#lib/workspace/console/RichMarkdown.svelte';
import type { ConsoleLine } from '$lib/workspace/console/model'; import type { ConsoleLine } from '#lib/workspace/console/model.ts';
type Props = { type Props = {
item: ConsoleLine; item: ConsoleLine;
@@ -22,7 +22,7 @@
<script lang="ts"> <script lang="ts">
import type { Renderers } from "@humanspeak/svelte-markdown"; import type { Renderers } from "@humanspeak/svelte-markdown";
import { ShikiCode } from "@humanspeak/svelte-markdown/extensions/shiki"; import { ShikiCode } from "@humanspeak/svelte-markdown/extensions/shiki";
import SafeMarkdown from "$lib/workspace/markdown/SafeMarkdown.svelte"; import SafeMarkdown from "#lib/workspace/markdown/SafeMarkdown.svelte";
type Props = { type Props = {
text: string; text: string;
@@ -2,7 +2,7 @@
import type { import type {
InFlightCompaction, InFlightCompaction,
WorkerStateSnapshot, WorkerStateSnapshot,
} from "$lib/generated/protocol.ts"; } from "#lib/generated/protocol.ts";
import Spinner from "./Spinner.svelte"; import Spinner from "./Spinner.svelte";
import { import {
formatRunElapsed, formatRunElapsed,
@@ -1,8 +1,8 @@
import type { import type {
AttachmentUploadGrantResponse, AttachmentUploadGrantResponse,
WorkerFileUploadResponse, WorkerFileUploadResponse,
} from "$lib/generated/runtime-api.ts"; } from "#lib/generated/runtime-api.ts";
import type { UploadedFileRef } from "$lib/generated/protocol.ts"; import type { UploadedFileRef } from "#lib/generated/protocol.ts";
export const MAX_UPLOADED_FILE_BYTES = 10 * 1024 * 1024; export const MAX_UPLOADED_FILE_BYTES = 10 * 1024 * 1024;
export const MAX_FILES_PER_SUBMISSION = 8; export const MAX_FILES_PER_SUBMISSION = 8;
@@ -1,4 +1,4 @@
import type { Segment } from "$lib/generated/protocol"; import type { Segment } from "#lib/generated/protocol.ts";
export type WorkerConsoleInputKind = export type WorkerConsoleInputKind =
| "user" | "user"
@@ -1,13 +1,13 @@
import type { Segment } from "$lib/generated/protocol.ts"; import type { Segment } from "#lib/generated/protocol.ts";
import { import {
composerDeletionRange, composerDeletionRange,
type ComposerPaste, type ComposerPaste,
composerPasteToken, composerPasteToken,
pasteChipLabel, pasteChipLabel,
snapshotComposerDraft, snapshotComposerDraft,
} from "$lib/workspace/console/composer-draft.ts"; } from "#lib/workspace/console/composer-draft.ts";
import { buildComposerSegmentsRequest } from "$lib/workspace/console/composer-command.ts"; import { buildComposerSegmentsRequest } from "#lib/workspace/console/composer-command.ts";
import { measureComposerPaste } from "$lib/workspace/console/composer-paste.ts"; import { measureComposerPaste } from "#lib/workspace/console/composer-paste.ts";
declare const Deno: { declare const Deno: {
test(name: string, fn: () => void): void; test(name: string, fn: () => void): void;
@@ -1,4 +1,4 @@
import type { Segment } from "$lib/generated/protocol.ts"; import type { Segment } from "#lib/generated/protocol.ts";
const PASTE_TOKEN_PREFIX = "\uFFF9"; const PASTE_TOKEN_PREFIX = "\uFFF9";
const PASTE_TOKEN_SUFFIX = "\uFFFB"; const PASTE_TOKEN_SUFFIX = "\uFFFB";
@@ -1,4 +1,4 @@
import type { Segment } from "$lib/generated/protocol"; import type { Segment } from "#lib/generated/protocol.ts";
export const COMPOSER_HISTORY_LIMIT = 30; export const COMPOSER_HISTORY_LIMIT = 30;
const COMPOSER_HISTORY_VERSION = 1; const COMPOSER_HISTORY_VERSION = 1;
@@ -2,7 +2,7 @@ import type {
SessionConversationTurn, SessionConversationTurn,
SessionHistoryPage, SessionHistoryPage,
SessionSnapshotEntry, SessionSnapshotEntry,
} from "$lib/generated/protocol"; } from "#lib/generated/protocol.ts";
import { import {
applyConsoleHistoryPage, applyConsoleHistoryPage,
beginConsoleHistoryRequest, beginConsoleHistoryRequest,
@@ -3,7 +3,7 @@ import type {
SessionConversationTurn, SessionConversationTurn,
SessionHistoryPage, SessionHistoryPage,
SessionSnapshotEntry, SessionSnapshotEntry,
} from "$lib/generated/protocol"; } from "#lib/generated/protocol.ts";
export const CONSOLE_HISTORY_PAGE_TURNS = 5; export const CONSOLE_HISTORY_PAGE_TURNS = 5;
@@ -3,7 +3,7 @@ import type {
SessionSnapshotEntry, SessionSnapshotEntry,
WorkerStateSnapshot, WorkerStateSnapshot,
WorkerStatus, WorkerStatus,
} from "$lib/generated/protocol"; } from "#lib/generated/protocol.ts";
import { import {
type ConsoleEventInput, type ConsoleEventInput,
type ConsoleLine, type ConsoleLine,
@@ -14,7 +14,7 @@ import type {
WorkerState, WorkerState,
WorkerStateSnapshot, WorkerStateSnapshot,
WorkerStatus, WorkerStatus,
} from "$lib/generated/protocol"; } from "#lib/generated/protocol.ts";
import { stringify as stringifyYaml } from "yaml"; import { stringify as stringifyYaml } from "yaml";
import { import {
applyRunActivityEvent, applyRunActivityEvent,
@@ -2,7 +2,7 @@ import type {
Event as ProtocolEvent, Event as ProtocolEvent,
InFlightCompaction, InFlightCompaction,
WorkerStateSnapshot, WorkerStateSnapshot,
} from "$lib/generated/protocol"; } from "#lib/generated/protocol.ts";
export type RunActivityStats = { export type RunActivityStats = {
startedAtMs: number | null; startedAtMs: number | null;
@@ -35,7 +35,7 @@ export function consoleTurns(lines: readonly ConsoleLine[]): ConsoleTurn[] {
return turns; return turns;
} }
import type { SessionConversationTurn } from "$lib/generated/protocol"; import type { SessionConversationTurn } from "#lib/generated/protocol.ts";
import { type ConsoleTurnPreview, conversationTurnPreviews } from "./history"; import { type ConsoleTurnPreview, conversationTurnPreviews } from "./history";
export type TurnNavigationItem = ConsoleTurnPreview; export type TurnNavigationItem = ConsoleTurnPreview;
@@ -69,11 +69,11 @@ Deno.test("workspace feature css is owned outside app css", async () => {
"app.css should not own workspace, worker, or settings page implementation classes", "app.css should not own workspace, worker, or settings page implementation classes",
); );
assert( assert(
workspaceLayout.includes("$lib/workspace/styles/workspace-pages.css") && workspaceLayout.includes("#lib/workspace/styles/workspace-pages.css") &&
workspaceLayout.includes("$lib/workspace/styles/workers.css") && workspaceLayout.includes("#lib/workspace/styles/workers.css") &&
settingsLayout.includes("$lib/workspace/styles/settings.css") && settingsLayout.includes("#lib/workspace/styles/settings.css") &&
accountPage.includes("$lib/workspace/styles/settings.css") && accountPage.includes("#lib/workspace/styles/settings.css") &&
deviceLoginPage.includes("$lib/workspace/styles/settings.css"), deviceLoginPage.includes("#lib/workspace/styles/settings.css"),
"feature-owned CSS should be imported by the layouts/pages that need it", "feature-owned CSS should be imported by the layouts/pages that need it",
); );
}); });
@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import { page } from "$app/state"; import { page } from "$app/state";
import WorkspaceSwitcher from "$lib/workspace/sidebar/WorkspaceSwitcher.svelte"; import WorkspaceSwitcher from "#lib/workspace/sidebar/WorkspaceSwitcher.svelte";
import type { WorkspaceResponse } from "$lib/workspace/sidebar/types"; import type { WorkspaceResponse } from "#lib/workspace/sidebar/types.ts";
import { buildWorkspaceBreadcrumbs } from "./breadcrumb-model"; import { buildWorkspaceBreadcrumbs } from "./breadcrumb-model";
type Props = { type Props = {
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import BevelLine from '$lib/workspace/ui/BevelLine.svelte'; import BevelLine from '#lib/workspace/ui/BevelLine.svelte';
import type { DashboardFeed } from './dashboard'; import type { DashboardFeed } from './dashboard';
let { id, title, empty, result }: { id: string; title: string; empty: string; result: Promise<DashboardFeed> } = $props(); let { id, title, empty, result }: { id: string; title: string; empty: string; result: Promise<DashboardFeed> } = $props();
@@ -1,14 +1,14 @@
import type { TicketListItemSummary } from "$lib/generated/ticket-api"; import type { TicketListItemSummary } from "#lib/generated/ticket-api.ts";
import { loadJson, workspaceApiPath } from "$lib/workspace/api/http"; import { loadJson, workspaceApiPath } from "#lib/workspace/api/http.ts";
import { import {
parseMergeRequestListResponse, parseMergeRequestListResponse,
parseObjectiveListResponse, parseObjectiveListResponse,
parseTicketDetail, parseTicketDetail,
parseTicketListResponse, parseTicketListResponse,
TICKET_BROWSER_API_LOAD_POLICY, TICKET_BROWSER_API_LOAD_POLICY,
} from "$lib/workspace/api/ticket-browser"; } from "#lib/workspace/api/ticket-browser.ts";
import { mergeRequestPagePath } from "$lib/workspace/api/merge-requests"; import { mergeRequestPagePath } from "#lib/workspace/api/merge-requests.ts";
import { objectiveHref, ticketHref } from "$lib/workspace/resource-links"; import { objectiveHref, ticketHref } from "#lib/workspace/resource-links.ts";
export const HOME_LIMIT = 5; export const HOME_LIMIT = 5;
export type DashboardRow = { export type DashboardRow = {
@@ -4,7 +4,7 @@
type Renderers, type Renderers,
type SvelteMarkdownProps, type SvelteMarkdownProps,
} from "@humanspeak/svelte-markdown"; } from "@humanspeak/svelte-markdown";
import MarkdownLink from "$lib/workspace/markdown/MarkdownLink.svelte"; import MarkdownLink from "#lib/workspace/markdown/MarkdownLink.svelte";
type Props = { type Props = {
text: string; text: string;
@@ -1,4 +1,4 @@
import { MEMORY_API_LIMITS } from "$lib/generated/memory-api"; import { MEMORY_API_LIMITS } from "#lib/generated/memory-api.ts";
import type { import type {
Diagnostic, Diagnostic,
DiagnosticSeverity, DiagnosticSeverity,
@@ -12,7 +12,7 @@ import type {
MemoryStagingEvidence, MemoryStagingEvidence,
MemoryStagingListResponse, MemoryStagingListResponse,
MemoryStagingRecord, MemoryStagingRecord,
} from "$lib/generated/memory-api"; } from "#lib/generated/memory-api.ts";
const MAX_STAGING_ITEMS = MEMORY_API_LIMITS.maxCollectionItems; const MAX_STAGING_ITEMS = MEMORY_API_LIMITS.maxCollectionItems;
const MAX_EVIDENCE_PER_RECORD = MEMORY_API_LIMITS.maxCollectionItems; const MAX_EVIDENCE_PER_RECORD = MEMORY_API_LIMITS.maxCollectionItems;
@@ -1,15 +1,15 @@
import { browser } from '$app/environment'; import { browser } from '$app/env';
import type { import type {
EventSubscriptionSelector, EventSubscriptionSelector,
Method, Method,
SubscriptionFrame, SubscriptionFrame,
SubscriptionId, SubscriptionId,
} from '$lib/generated/protocol'; } from '#lib/generated/protocol.ts';
import { import {
decodeSubscriptionFrame, decodeSubscriptionFrame,
subscriptionFrameMatchesSelector, subscriptionFrameMatchesSelector,
} from '$lib/generated/protocol-validator'; } from '#lib/generated/protocol-validator.ts';
import { workspaceApiPath } from '$lib/workspace/api/http'; import { workspaceApiPath } from '#lib/workspace/api/http.ts';
type Listener = { type Listener = {
onFrame(frame: SubscriptionFrame): void; onFrame(frame: SubscriptionFrame): void;
@@ -1,10 +1,10 @@
import type { EventSubscriptionSelector, SubscriptionFrame } from '$lib/generated/protocol'; import type { EventSubscriptionSelector, SubscriptionFrame } from '#lib/generated/protocol.ts';
import { import {
decodeSubscriptionFrame, decodeSubscriptionFrame,
MAX_SUBSCRIPTION_STRING_BYTES, MAX_SUBSCRIPTION_STRING_BYTES,
RUST_SERIALIZED_SUBSCRIPTION_FRAME_FIXTURES, RUST_SERIALIZED_SUBSCRIPTION_FRAME_FIXTURES,
subscriptionFrameMatchesSelector, subscriptionFrameMatchesSelector,
} from '$lib/generated/protocol-validator'; } from '#lib/generated/protocol-validator.ts';
declare const Deno: { declare const Deno: {
test(name: string, fn: () => void | Promise<void>): void; test(name: string, fn: () => void | Promise<void>): void;
@@ -1,4 +1,4 @@
import type { WorkspaceRuntimeResource } from "$lib/generated/runtime-api"; import type { WorkspaceRuntimeResource } from "#lib/generated/runtime-api.ts";
export type RepositorySshProbeSelection<T> = Readonly<{ export type RepositorySshProbeSelection<T> = Readonly<{
changed: boolean; changed: boolean;
@@ -5,7 +5,7 @@ import {
type WorkerSessionRequestIdentity, type WorkerSessionRequestIdentity,
workerSessionRequestInit, workerSessionRequestInit,
} from "./session-observation"; } from "./session-observation";
import type { SessionSnapshot } from "$lib/generated/protocol"; import type { SessionSnapshot } from "#lib/generated/protocol.ts";
declare const Deno: { declare const Deno: {
test(name: string, fn: () => Promise<void> | void): void; test(name: string, fn: () => Promise<void> | void): void;
@@ -1,4 +1,4 @@
import type { SessionSnapshot } from "$lib/generated/protocol"; import type { SessionSnapshot } from "#lib/generated/protocol.ts";
export type WorkerSessionObservation = export type WorkerSessionObservation =
| { availability: "live_protocol" } | { availability: "live_protocol" }
@@ -14,11 +14,11 @@
import { EditorView, keymap, lineNumbers, highlightActiveLine, drawSelection, type ViewUpdate } from '@codemirror/view'; import { EditorView, keymap, lineNumbers, highlightActiveLine, drawSelection, type ViewUpdate } from '@codemirror/view';
import { tags } from '@lezer/highlight'; import { tags } from '@lezer/highlight';
import { decodal } from 'decodal-codemirror'; import { decodal } from 'decodal-codemirror';
import { shouldStartCompletionAfterTyping } from '$lib/workspace/config-source/completion.ts'; import { shouldStartCompletionAfterTyping } from '#lib/workspace/config-source/completion.ts';
import { import {
fixedSchemaWrapperExtension, fixedSchemaWrapperExtension,
moveSelectionIntoFixedWrapper, moveSelectionIntoFixedWrapper,
} from '$lib/workspace/config-source/fixed-schema-wrapper.ts'; } from '#lib/workspace/config-source/fixed-schema-wrapper.ts';
let { let {
value = '', value = '',
@@ -4,13 +4,13 @@
import type { import type {
Diagnostic, WorkspaceMetadataSettingsResponse, WorkspaceSigningIdentityResponse, Diagnostic, WorkspaceMetadataSettingsResponse, WorkspaceSigningIdentityResponse,
WorkspaceDeletionPreflightResponse, WorkspaceDeletionOperationResponse, WorkspaceDeletionRequest, WorkspaceDeletionPreflightResponse, WorkspaceDeletionOperationResponse, WorkspaceDeletionRequest,
} from '$lib/generated/legacy-server-api'; } from '#lib/generated/legacy-server-api.ts';
import { workspaceApiPath } from '$lib/workspace/api/http'; import { workspaceApiPath } from '#lib/workspace/api/http.ts';
import { disposeWorkspaceMultiplexer } from '$lib/workspace/multiplexer'; import { disposeWorkspaceMultiplexer } from '#lib/workspace/multiplexer.ts';
import { disposeWorkspaceWorkersStore } from '$lib/workspace/sidebar/worker-subscription'; import { disposeWorkspaceWorkersStore } from '#lib/workspace/sidebar/worker-subscription.ts';
import { fetchWorkspaceMetadata, updateWorkspaceMetadata, fetchWorkspaceSigningIdentity, provisionWorkspaceSigningIdentity } from './profile-api'; import { fetchWorkspaceMetadata, updateWorkspaceMetadata, fetchWorkspaceSigningIdentity, provisionWorkspaceSigningIdentity } from './profile-api';
import { preflightWorkspaceDeletion, startWorkspaceDeletion, getWorkspaceDeletion } from './workspace-deletion-api'; import { preflightWorkspaceDeletion, startWorkspaceDeletion, getWorkspaceDeletion } from './workspace-deletion-api';
import BevelLine from '$lib/workspace/ui/BevelLine.svelte'; import BevelLine from '#lib/workspace/ui/BevelLine.svelte';
// The route keys this component by Workspace and owner permission. Requests from // The route keys this component by Workspace and owner permission. Requests from
// a disposed scope must not publish state, focus, or navigation into a new one. // a disposed scope must not publish state, focus, or navigation into a new one.
@@ -1,4 +1,4 @@
import type { Diagnostic as ServerApiDiagnostic } from "$lib/generated/legacy-server-api"; import type { Diagnostic as ServerApiDiagnostic } from "#lib/generated/legacy-server-api.ts";
export type Diagnostic = ServerApiDiagnostic; export type Diagnostic = ServerApiDiagnostic;
@@ -12,8 +12,8 @@ import type {
WorkspaceSigningIdentityPublic, WorkspaceSigningIdentityPublic,
WorkspaceSigningIdentityResponse, WorkspaceSigningIdentityResponse,
WorkspaceSigningIdentityState, WorkspaceSigningIdentityState,
} from "$lib/generated/legacy-server-api"; } from "#lib/generated/legacy-server-api.ts";
import { readBoundedJson } from "$lib/workspace/api/http.ts"; import { readBoundedJson } from "#lib/workspace/api/http.ts";
const MAX_PROFILE_RESPONSE_BYTES = 4 * 1024 * 1024; const MAX_PROFILE_RESPONSE_BYTES = 4 * 1024 * 1024;
const MAX_PROFILE_ERROR_BYTES = 4 * 1024; const MAX_PROFILE_ERROR_BYTES = 4 * 1024;
@@ -1,4 +1,4 @@
import type { ExternalWorkdirPermissions } from "$lib/generated/workdir-api"; import type { ExternalWorkdirPermissions } from "#lib/generated/workdir-api.ts";
/** Render an effective attachment/session capability intersection without widening it. */ /** Render an effective attachment/session capability intersection without widening it. */
export function formatWorkdirPermissions( export function formatWorkdirPermissions(
@@ -2,12 +2,12 @@ import type {
WorkspaceDeletionOperationResponse, WorkspaceDeletionOperationResponse,
WorkspaceDeletionPreflightResponse, WorkspaceDeletionPreflightResponse,
WorkspaceDeletionRequest, WorkspaceDeletionRequest,
} from "$lib/generated/legacy-server-api"; } from "#lib/generated/legacy-server-api.ts";
import { loadJson } from "$lib/workspace/api/http"; import { loadJson } from "#lib/workspace/api/http.ts";
import { import {
parseWorkspaceDeletionOperationResponse, parseWorkspaceDeletionOperationResponse,
parseWorkspaceDeletionPreflightResponse, parseWorkspaceDeletionPreflightResponse,
} from "$lib/workspace/api/workspace-model"; } from "#lib/workspace/api/workspace-model.ts";
const deletionResponsePolicy = { const deletionResponsePolicy = {
maxResponseBytes: 2 * 1024 * 1024, maxResponseBytes: 2 * 1024 * 1024,
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import type { WorkspaceCatalogRecord } from "$lib/workspace/api/workspace-catalog"; import type { WorkspaceCatalogRecord } from "#lib/workspace/api/workspace-catalog.ts";
type Props = { type Props = {
currentPath: string; currentPath: string;
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { workspaceRoute } from "$lib/workspace/api/http"; import { workspaceRoute } from "#lib/workspace/api/http.ts";
type Props = { type Props = {
currentPath?: string; currentPath?: string;
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { mergeRequestPagePath } from "$lib/workspace/api/merge-requests"; import { mergeRequestPagePath } from "#lib/workspace/api/merge-requests.ts";
type Props = { type Props = {
currentPath?: string; currentPath?: string;
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { workspaceRoute } from '$lib/workspace/api/http'; import { workspaceRoute } from '#lib/workspace/api/http.ts';
type Props = { type Props = {
currentPath?: string; currentPath?: string;
@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import { workspaceRoute } from '$lib/workspace/api/http'; import { workspaceRoute } from '#lib/workspace/api/http.ts';
import { SETTINGS_SECTIONS, settingsSectionHref } from '$lib/workspace/settings/model'; import { SETTINGS_SECTIONS, settingsSectionHref } from '#lib/workspace/settings/model.ts';
import type { SettingsSectionId } from '$lib/workspace/settings/model'; import type { SettingsSectionId } from '#lib/workspace/settings/model.ts';
import type { SidebarSnippet } from './context'; import type { SidebarSnippet } from './context';
let { let {
@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { onDestroy, type Snippet } from 'svelte'; import { onDestroy, type Snippet } from 'svelte';
import Bevel from '$lib/workspace/ui/Bevel.svelte'; import Bevel from '#lib/workspace/ui/Bevel.svelte';
import SidebarToggleIcon from './SidebarToggleIcon.svelte'; import SidebarToggleIcon from './SidebarToggleIcon.svelte';
import './sidebar.css'; import './sidebar.css';
@@ -93,6 +93,7 @@
<div class="sidebar-frame__surface"> <div class="sidebar-frame__surface">
<div <div
class="sidebar-hover-region" class="sidebar-hover-region"
role="presentation"
onpointerenter={enter} onpointerenter={enter}
onpointerleave={leave} onpointerleave={leave}
onpointercancel={leave} onpointercancel={leave}
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { workspaceRoute } from '$lib/workspace/api/http'; import { workspaceRoute } from '#lib/workspace/api/http.ts';
type Props = { type Props = {
currentPath?: string; currentPath?: string;
@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import Spinner from '$lib/workspace/console/Spinner.svelte'; import Spinner from '#lib/workspace/console/Spinner.svelte';
import { workerConsoleHref } from '$lib/workspace/resource-links'; import { workerConsoleHref } from '#lib/workspace/resource-links.ts';
import { pushWorkspaceAlert } from '$lib/workspace/alerts/store'; import { pushWorkspaceAlert } from '#lib/workspace/alerts/store.ts';
import { import {
canStopSidebarWorker, canStopSidebarWorker,
canDeleteSidebarWorker, canDeleteSidebarWorker,
@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import type { Snippet } from 'svelte'; import type { Snippet } from 'svelte';
import './sidebar.css'; import './sidebar.css';
import { workspaceRoute } from '$lib/workspace/api/http'; import { workspaceRoute } from '#lib/workspace/api/http.ts';
import { ownsRoutePath } from './route-ownership'; import { ownsRoutePath } from './route-ownership';
import ObjectivesNavSection from './ObjectivesNavSection.svelte'; import ObjectivesNavSection from './ObjectivesNavSection.svelte';
import MemoryNavSection from './MemoryNavSection.svelte'; import MemoryNavSection from './MemoryNavSection.svelte';
@@ -3,7 +3,7 @@
import { import {
listWorkspaces, listWorkspaces,
type WorkspaceCatalogRecord, type WorkspaceCatalogRecord,
} from "$lib/workspace/api/workspace-catalog"; } from "#lib/workspace/api/workspace-catalog.ts";
let { let {
currentWorkspaceId, currentWorkspaceId,
@@ -4,7 +4,7 @@ import type {
CleanupWorkerCandidate, CleanupWorkerCandidate,
RuntimeCleanupExecutionResponse, RuntimeCleanupExecutionResponse,
RuntimeCleanupPlanResponse, RuntimeCleanupPlanResponse,
} from "$lib/generated/runtime-api"; } from "#lib/generated/runtime-api.ts";
import type { import type {
BrowserCreateWorkerResponse as SharedBrowserCreateWorkerResponse, BrowserCreateWorkerResponse as SharedBrowserCreateWorkerResponse,
BrowserWorkerWorkingDirectorySelection BrowserWorkerWorkingDirectorySelection
@@ -17,7 +17,7 @@ import type {
WorkerSummary as SharedWorkerSummary, WorkerSummary as SharedWorkerSummary,
WorkerWorkdirAttachmentSummary as SharedWorkerWorkdirAttachmentSummary, WorkerWorkdirAttachmentSummary as SharedWorkerWorkdirAttachmentSummary,
WorkingDirectoryRepositoryOption as SharedWorkingDirectoryRepositoryOption, WorkingDirectoryRepositoryOption as SharedWorkingDirectoryRepositoryOption,
} from "$lib/generated/worker-launch-api"; } from "#lib/generated/worker-launch-api.ts";
import type { import type {
WorkingDirectoryCreateRequest, WorkingDirectoryCreateRequest,
WorkingDirectoryCreateResponse, WorkingDirectoryCreateResponse,
@@ -25,14 +25,14 @@ import type {
WorkingDirectoryListResponse, WorkingDirectoryListResponse,
WorkingDirectoryOccupancy, WorkingDirectoryOccupancy,
WorkingDirectorySummary, WorkingDirectorySummary,
} from "$lib/generated/workdir-api"; } from "#lib/generated/workdir-api.ts";
import type { import type {
Event as PodProtocolEvent, Event as PodProtocolEvent,
Method as PodProtocolMethod, Method as PodProtocolMethod,
Segment as PodProtocolSegment, Segment as PodProtocolSegment,
SubscriptionWorkerJob, SubscriptionWorkerJob,
WorkerStateSnapshot, WorkerStateSnapshot,
} from "$lib/generated/protocol"; } from "#lib/generated/protocol.ts";
import type { import type {
GitCommitSummary as SharedGitCommitSummary, GitCommitSummary as SharedGitCommitSummary,
GitRemoteSummary as SharedGitRemoteSummary, GitRemoteSummary as SharedGitRemoteSummary,
@@ -42,7 +42,7 @@ import type {
RepositoryLogResponse as SharedRepositoryLogResponse, RepositoryLogResponse as SharedRepositoryLogResponse,
RepositorySummary as SharedRepositorySummary, RepositorySummary as SharedRepositorySummary,
WorkspaceResponse as SharedWorkspaceResponse, WorkspaceResponse as SharedWorkspaceResponse,
} from "$lib/workspace/api/workspace-model"; } from "#lib/workspace/api/workspace-model.ts";
export type { export type {
PodProtocolEvent, PodProtocolEvent,
@@ -157,7 +157,7 @@ export type {
TicketDetail, TicketDetail,
TicketEventDetail, TicketEventDetail,
TicketListResponse, TicketListResponse,
} from "$lib/generated/ticket-api"; } from "#lib/generated/ticket-api.ts";
export type { export type {
TicketDetailDerivedRelation as DerivedTicketRelation, TicketDetailDerivedRelation as DerivedTicketRelation,
TicketDetailRelation as TicketRelation, TicketDetailRelation as TicketRelation,
@@ -165,7 +165,7 @@ export type {
TicketDetailRelationNotice as TicketRelationNotice, TicketDetailRelationNotice as TicketRelationNotice,
TicketDetailRelationView as TicketRelationView, TicketDetailRelationView as TicketRelationView,
TicketListItemSummary as TicketSummary, TicketListItemSummary as TicketSummary,
} from "$lib/generated/ticket-api"; } from "#lib/generated/ticket-api.ts";
export type { export type {
CompanionCancelRequest, CompanionCancelRequest,
@@ -178,4 +178,4 @@ export type {
CompanionTranscriptProjection, CompanionTranscriptProjection,
CompanionTranscriptRole, CompanionTranscriptRole,
CompanionTransportSummary, CompanionTransportSummary,
} from "$lib/generated/companion-api"; } from "#lib/generated/companion-api.ts";
@@ -1,9 +1,9 @@
import { workspaceApiPath } from "$lib/workspace/api/http"; import { workspaceApiPath } from "#lib/workspace/api/http.ts";
import { import {
parseRuntimeCleanupExecution, parseRuntimeCleanupExecution,
parseRuntimeCleanupPlan, parseRuntimeCleanupPlan,
parseRuntimeWorkerLifecycleResult, parseRuntimeWorkerLifecycleResult,
} from "$lib/workspace/api/runtime-workers"; } from "#lib/workspace/api/runtime-workers.ts";
import type { Diagnostic, Worker } from "./types"; import type { Diagnostic, Worker } from "./types";
type FetchFn = typeof fetch; type FetchFn = typeof fetch;
@@ -1,8 +1,8 @@
import type { import type {
BrowserWorkerWorkingDirectorySelection, BrowserWorkerWorkingDirectorySelection,
CreateWorkspaceWorkerRequest, CreateWorkspaceWorkerRequest,
} from "$lib/generated/worker-launch-api"; } from "#lib/generated/worker-launch-api.ts";
import { parseCreateWorkspaceWorkerRequest } from "$lib/workspace/api/workers"; import { parseCreateWorkspaceWorkerRequest } from "#lib/workspace/api/workers.ts";
import type { WorkerLaunchOptionsResponse } from "./types"; import type { WorkerLaunchOptionsResponse } from "./types";
@@ -1,4 +1,4 @@
import type { WorkerStateSnapshot } from "$lib/generated/protocol"; import type { WorkerStateSnapshot } from "#lib/generated/protocol.ts";
export function liveWorkerState(worker: { export function liveWorkerState(worker: {
state: string; state: string;
@@ -11,7 +11,7 @@ import { afterEach, expect, test, vi } from "vitest";
import type { import type {
SubscriptionFrame, SubscriptionFrame,
SubscriptionWorker, SubscriptionWorker,
} from "$lib/generated/protocol"; } from "#lib/generated/protocol.ts";
import WorkersNavSection from "./WorkersNavSection.svelte"; import WorkersNavSection from "./WorkersNavSection.svelte";
import { disposeWorkspaceWorkersStore } from "./worker-subscription"; import { disposeWorkspaceWorkersStore } from "./worker-subscription";
@@ -19,7 +19,7 @@ const transport = vi.hoisted(() => ({
listener: null as { onFrame(frame: SubscriptionFrame): void } | null, listener: null as { onFrame(frame: SubscriptionFrame): void } | null,
close: vi.fn(), close: vi.fn(),
})); }));
vi.mock("$lib/workspace/multiplexer", () => ({ vi.mock("#lib/workspace/multiplexer.ts", () => ({
workspaceMultiplexer: () => ({ workspaceMultiplexer: () => ({
subscribe: ( subscribe: (
_selector: unknown, _selector: unknown,
@@ -2,7 +2,7 @@ import type {
SubscriptionEventPayload, SubscriptionEventPayload,
SubscriptionFrame, SubscriptionFrame,
SubscriptionWorker, SubscriptionWorker,
} from '$lib/generated/protocol'; } from '#lib/generated/protocol.ts';
export type WorkspaceWorkersProjection = { export type WorkspaceWorkersProjection = {
workers: Map<string, SubscriptionWorker>; workers: Map<string, SubscriptionWorker>;
@@ -1,4 +1,4 @@
import type { SubscriptionFrame, SubscriptionWorker } from '$lib/generated/protocol'; import type { SubscriptionFrame, SubscriptionWorker } from '#lib/generated/protocol.ts';
function assertEquals(actual: unknown, expected: unknown): void { function assertEquals(actual: unknown, expected: unknown): void {
if (JSON.stringify(actual) !== JSON.stringify(expected)) { if (JSON.stringify(actual) !== JSON.stringify(expected)) {
@@ -1,9 +1,9 @@
import { type Readable, readable } from "svelte/store"; import { type Readable, readable } from "svelte/store";
import type { WorkingDirectorySummary } from "$lib/generated/workdir-api"; import type { WorkingDirectorySummary } from "#lib/generated/workdir-api.ts";
import type { SubscriptionWorker } from "$lib/generated/protocol"; import type { SubscriptionWorker } from "#lib/generated/protocol.ts";
import { loadJson, workspaceApiPath } from "$lib/workspace/api/http"; import { loadJson, workspaceApiPath } from "#lib/workspace/api/http.ts";
import { parseWorkingDirectoryListResponse } from "$lib/workspace/api/workdirs"; import { parseWorkingDirectoryListResponse } from "#lib/workspace/api/workdirs.ts";
import { workspaceMultiplexer } from "$lib/workspace/multiplexer"; import { workspaceMultiplexer } from "#lib/workspace/multiplexer.ts";
import { import {
applyWorkspaceWorkersFrame, applyWorkspaceWorkersFrame,
createWorkspaceWorkersProjection, createWorkspaceWorkersProjection,
@@ -1,4 +1,4 @@
import type { WorkingDirectorySummary } from "$lib/generated/workdir-api"; import type { WorkingDirectorySummary } from "#lib/generated/workdir-api.ts";
import { import {
type SidebarWorkdirAttachment, type SidebarWorkdirAttachment,
sidebarWorkdirMeta, sidebarWorkdirMeta,
@@ -1,5 +1,5 @@
import type { WorkingDirectorySummary } from "$lib/generated/workdir-api"; import type { WorkingDirectorySummary } from "#lib/generated/workdir-api.ts";
import type { SubscriptionWorkerWorkdirAttachment } from "$lib/generated/protocol"; import type { SubscriptionWorkerWorkdirAttachment } from "#lib/generated/protocol.ts";
const SHORT_REFERENCE_LENGTH = 12; const SHORT_REFERENCE_LENGTH = 12;
@@ -12,7 +12,7 @@ import {
type SkillProvenance, type SkillProvenance,
type SkillResourceRef, type SkillResourceRef,
type SkillSourceKind, type SkillSourceKind,
} from "$lib/generated/skill-api.ts"; } from "#lib/generated/skill-api.ts";
export class SkillApiContractError extends Error { export class SkillApiContractError extends Error {
constructor(message: string) { constructor(message: string) {
@@ -1,8 +1,8 @@
import type { BrowserWorkspaceOrchestratorResponse } from "$lib/generated/worker-launch-api"; import type { BrowserWorkspaceOrchestratorResponse } from "#lib/generated/worker-launch-api.ts";
import type { import type {
TicketDetail, TicketDetail,
TicketListItemSummary, TicketListItemSummary,
} from "$lib/generated/ticket-api"; } from "#lib/generated/ticket-api.ts";
export const TICKET_STATES = [ export const TICKET_STATES = [
"planning", "planning",
@@ -118,6 +118,7 @@
<span <span
class="tooltip-root" class="tooltip-root"
role="presentation"
bind:this={rootElement} bind:this={rootElement}
onpointerenter={showAfterDelay} onpointerenter={showAfterDelay}
onpointerleave={handlePointerLeave} onpointerleave={handlePointerLeave}
+8 -8
View File
@@ -2,18 +2,18 @@
import { page } from '$app/state'; import { page } from '$app/state';
import { setContext } from 'svelte'; import { setContext } from 'svelte';
import { MediaQuery } from 'svelte/reactivity'; import { MediaQuery } from 'svelte/reactivity';
import WorkspaceAlerts from '$lib/workspace/alerts/WorkspaceAlerts.svelte'; import WorkspaceAlerts from '#lib/workspace/alerts/WorkspaceAlerts.svelte';
import Bevel from '$lib/workspace/ui/Bevel.svelte'; import Bevel from '#lib/workspace/ui/Bevel.svelte';
import { import {
provideHeaderController, provideHeaderController,
type HeaderController, type HeaderController,
type HeaderSnippet, type HeaderSnippet,
} from '$lib/workspace/header/context'; } from '#lib/workspace/header/context.ts';
import GlobalSidebar from '$lib/workspace/sidebar/GlobalSidebar.svelte'; import GlobalSidebar from '#lib/workspace/sidebar/GlobalSidebar.svelte';
import SidebarFrame from '$lib/workspace/sidebar/SidebarFrame.svelte'; import SidebarFrame from '#lib/workspace/sidebar/SidebarFrame.svelte';
import SidebarToggleIcon from '$lib/workspace/sidebar/SidebarToggleIcon.svelte'; import SidebarToggleIcon from '#lib/workspace/sidebar/SidebarToggleIcon.svelte';
import { SIDEBAR_CONTEXT, type SidebarController, type SidebarSnippet } from '$lib/workspace/sidebar/context'; import { SIDEBAR_CONTEXT, type SidebarController, type SidebarSnippet } from '#lib/workspace/sidebar/context.ts';
import { createOverrideStack } from '$lib/workspace/sidebar/override-stack'; import { createOverrideStack } from '#lib/workspace/sidebar/override-stack.ts';
import '../app.css'; import '../app.css';
import type { LayoutProps } from './$types'; import type { LayoutProps } from './$types';
+4 -4
View File
@@ -1,9 +1,9 @@
import { listWorkspaces } from "$lib/workspace/api/workspace-catalog"; import { listWorkspaces } from "#lib/workspace/api/workspace-catalog.ts";
import type { LayoutLoad } from "./$types"; import type { Load } from "@sveltejs/kit";
export const ssr = false; export const ssr = false;
export const load: LayoutLoad = async ({ fetch }) => { export const load = (async ({ fetch }) => {
try { try {
return { return {
accessibleWorkspaces: await listWorkspaces(fetch), accessibleWorkspaces: await listWorkspaces(fetch),
@@ -17,4 +17,4 @@ export const load: LayoutLoad = async ({ fetch }) => {
: "Unable to load Workspaces", : "Unable to load Workspaces",
}; };
} }
}; }) satisfies Load;
+2 -2
View File
@@ -7,8 +7,8 @@
loadWorkspaceCatalog, loadWorkspaceCatalog,
type CreateWorkspaceRequest, type CreateWorkspaceRequest,
type WorkspaceCatalogItem, type WorkspaceCatalogItem,
} from "$lib/workspace/api/workspace-catalog"; } from "#lib/workspace/api/workspace-catalog.ts";
import "$lib/workspace/styles/workspace-catalog.css"; import "#lib/workspace/styles/workspace-catalog.css";
let { data } = $props(); let { data } = $props();
let workspaces = $state<WorkspaceCatalogItem[]>([]); let workspaces = $state<WorkspaceCatalogItem[]>([]);
+1 -1
View File
@@ -1,5 +1,5 @@
import type { PageLoad } from "./$types"; import type { PageLoad } from "./$types";
import { loadWorkspaceCatalog } from "$lib/workspace/api/workspace-catalog"; import { loadWorkspaceCatalog } from "#lib/workspace/api/workspace-catalog.ts";
export const load: PageLoad = async ({ fetch }) => { export const load: PageLoad = async ({ fetch }) => {
try { try {
@@ -5,9 +5,9 @@
loginWithPasskey, loginWithPasskey,
logout, logout,
registerPasskey, registerPasskey,
} from '$lib/workspace/auth/api'; } from '#lib/workspace/auth/api.ts';
import '$lib/workspace/styles/settings.css'; import '#lib/workspace/styles/settings.css';
import type { RequestActor } from '$lib/workspace/auth/model'; import type { RequestActor } from '#lib/workspace/auth/model.ts';
let actor = $state<RequestActor | null>(null); let actor = $state<RequestActor | null>(null);
let handle = $state('local'); let handle = $state('local');
@@ -1,16 +1,16 @@
<script lang="ts"> <script lang="ts">
import { page } from '$app/state'; import { page } from '$app/state';
import { setContext } from 'svelte'; import { setContext } from 'svelte';
import HeaderOverride from '$lib/workspace/header/HeaderOverride.svelte'; import HeaderOverride from '#lib/workspace/header/HeaderOverride.svelte';
import SidebarOverride from '$lib/workspace/sidebar/SidebarOverride.svelte'; import SidebarOverride from '#lib/workspace/sidebar/SidebarOverride.svelte';
import { import {
getSidebarController, getSidebarController,
SIDEBAR_CONTEXT, SIDEBAR_CONTEXT,
type SidebarController, type SidebarController,
type SidebarSnippet, type SidebarSnippet,
} from '$lib/workspace/sidebar/context'; } from '#lib/workspace/sidebar/context.ts';
import { createOverrideStack } from '$lib/workspace/sidebar/override-stack'; import { createOverrideStack } from '#lib/workspace/sidebar/override-stack.ts';
import { ownsRoutePath } from '$lib/workspace/sidebar/route-ownership'; import { ownsRoutePath } from '#lib/workspace/sidebar/route-ownership.ts';
import WorkspaceSidebarFixture from './WorkspaceSidebarFixture.svelte'; import WorkspaceSidebarFixture from './WorkspaceSidebarFixture.svelte';
import { designLabBasePath } from './workspace-navigation'; import { designLabBasePath } from './workspace-navigation';
import './showroom.css'; import './showroom.css';
@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import Bevel from '$lib/workspace/ui/Bevel.svelte'; import Bevel from '#lib/workspace/ui/Bevel.svelte';
import BevelLine from '$lib/workspace/ui/BevelLine.svelte'; import BevelLine from '#lib/workspace/ui/BevelLine.svelte';
import Tooltip from '$lib/workspace/ui/Tooltip.svelte'; import Tooltip from '#lib/workspace/ui/Tooltip.svelte';
</script> </script>
<div class="showroom"> <div class="showroom">
@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import type { Snippet } from 'svelte'; import type { Snippet } from 'svelte';
import { ownsRoutePath } from '$lib/workspace/sidebar/route-ownership'; import { ownsRoutePath } from '#lib/workspace/sidebar/route-ownership.ts';
import { designLabBasePath, workspaceNavigation, workspaceWorkers } from './workspace-navigation'; import { designLabBasePath, workspaceNavigation, workspaceWorkers } from './workspace-navigation';
let { let {
@@ -1,15 +1,15 @@
<script lang="ts"> <script lang="ts">
import { page } from '$app/state'; import { page } from '$app/state';
import { setContext } from 'svelte'; import { setContext } from 'svelte';
import SidebarOverride from '$lib/workspace/sidebar/SidebarOverride.svelte'; import SidebarOverride from '#lib/workspace/sidebar/SidebarOverride.svelte';
import { import {
getSidebarController, getSidebarController,
SIDEBAR_CONTEXT, SIDEBAR_CONTEXT,
type SidebarController, type SidebarController,
type SidebarSnippet, type SidebarSnippet,
} from '$lib/workspace/sidebar/context'; } from '#lib/workspace/sidebar/context.ts';
import { createOverrideStack } from '$lib/workspace/sidebar/override-stack'; import { createOverrideStack } from '#lib/workspace/sidebar/override-stack.ts';
import { ownsRoutePath } from '$lib/workspace/sidebar/route-ownership'; import { ownsRoutePath } from '#lib/workspace/sidebar/route-ownership.ts';
import SettingsSidebarFixture from './SettingsSidebarFixture.svelte'; import SettingsSidebarFixture from './SettingsSidebarFixture.svelte';
import { designLabBasePath } from '../workspace-navigation'; import { designLabBasePath } from '../workspace-navigation';
import type { LayoutProps } from './$types'; import type { LayoutProps } from './$types';
@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import Bevel from '$lib/workspace/ui/Bevel.svelte'; import Bevel from '#lib/workspace/ui/Bevel.svelte';
import BevelLine from '$lib/workspace/ui/BevelLine.svelte'; import BevelLine from '#lib/workspace/ui/BevelLine.svelte';
import Tooltip from '$lib/workspace/ui/Tooltip.svelte'; import Tooltip from '#lib/workspace/ui/Tooltip.svelte';
function keepSampleFormLocal(event: SubmitEvent) { function keepSampleFormLocal(event: SubmitEvent) {
event.preventDefault(); event.preventDefault();
@@ -5,9 +5,9 @@
approveDeviceLogin, approveDeviceLogin,
loadWhoami, loadWhoami,
loginWithPasskey, loginWithPasskey,
} from '$lib/workspace/auth/api'; } from '#lib/workspace/auth/api.ts';
import '$lib/workspace/styles/settings.css'; import '#lib/workspace/styles/settings.css';
import type { RequestActor } from '$lib/workspace/auth/model'; import type { RequestActor } from '#lib/workspace/auth/model.ts';
let actor = $state<RequestActor | null>(null); let actor = $state<RequestActor | null>(null);
let handle = $state('local'); let handle = $state('local');
@@ -3,7 +3,7 @@
import { cleanup, fireEvent, render, screen } from "@testing-library/svelte"; import { cleanup, fireEvent, render, screen } from "@testing-library/svelte";
import { afterEach, beforeEach, expect, test, vi } from "vitest"; import { afterEach, beforeEach, expect, test, vi } from "vitest";
import { createRawSnippet, tick } from "svelte"; import { createRawSnippet, tick } from "svelte";
import { logout } from "$lib/workspace/auth/api"; import { logout } from "#lib/workspace/auth/api.ts";
import Layout from "./+layout.svelte"; import Layout from "./+layout.svelte";
vi.mock("$app/state", () => ({ page: { url: new URL("https://example.test/") } })); vi.mock("$app/state", () => ({ page: { url: new URL("https://example.test/") } }));
@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { page } from "$app/state"; import { page } from "$app/state";
import "$lib/workspace/styles/workspace-catalog.css"; import "#lib/workspace/styles/workspace-catalog.css";
const workspaceId = $derived(page.params.workspaceId ?? "unknown"); const workspaceId = $derived(page.params.workspaceId ?? "unknown");
</script> </script>
@@ -1,24 +1,24 @@
<script lang="ts"> <script lang="ts">
import { setContext } from 'svelte'; import { setContext } from 'svelte';
import { page } from '$app/state'; import { page } from '$app/state';
import HeaderOverride from '$lib/workspace/header/HeaderOverride.svelte'; import HeaderOverride from '#lib/workspace/header/HeaderOverride.svelte';
import WorkspaceBreadcrumbs from '$lib/workspace/header/WorkspaceBreadcrumbs.svelte'; import WorkspaceBreadcrumbs from '#lib/workspace/header/WorkspaceBreadcrumbs.svelte';
import SidebarOverride from '$lib/workspace/sidebar/SidebarOverride.svelte'; import SidebarOverride from '#lib/workspace/sidebar/SidebarOverride.svelte';
import { import {
getSidebarController, getSidebarController,
SIDEBAR_CONTEXT, SIDEBAR_CONTEXT,
type SidebarController, type SidebarController,
type SidebarSnippet, type SidebarSnippet,
} from '$lib/workspace/sidebar/context'; } from '#lib/workspace/sidebar/context.ts';
import { createOverrideStack } from '$lib/workspace/sidebar/override-stack'; import { createOverrideStack } from '#lib/workspace/sidebar/override-stack.ts';
import { ownsRoutePath } from '$lib/workspace/sidebar/route-ownership'; import { ownsRoutePath } from '#lib/workspace/sidebar/route-ownership.ts';
import { workspaceRoute } from '$lib/workspace/api/http'; import { workspaceRoute } from '#lib/workspace/api/http.ts';
import { disposeWorkspaceMultiplexer } from '$lib/workspace/multiplexer'; import { disposeWorkspaceMultiplexer } from '#lib/workspace/multiplexer.ts';
import { disposeWorkspaceWorkersStore } from '$lib/workspace/sidebar/worker-subscription'; import { disposeWorkspaceWorkersStore } from '#lib/workspace/sidebar/worker-subscription.ts';
import WorkspaceSidebar from '$lib/workspace/sidebar/WorkspaceSidebar.svelte'; import WorkspaceSidebar from '#lib/workspace/sidebar/WorkspaceSidebar.svelte';
import '$lib/workspace/styles/workspace-pages.css'; import '#lib/workspace/styles/workspace-pages.css';
import '$lib/workspace/styles/tickets.css'; import '#lib/workspace/styles/tickets.css';
import '$lib/workspace/styles/workers.css'; import '#lib/workspace/styles/workers.css';
import type { LayoutProps } from './$types'; import type { LayoutProps } from './$types';
let { data, children }: LayoutProps = $props(); let { data, children }: LayoutProps = $props();
@@ -1,7 +1,7 @@
import { error } from "@sveltejs/kit"; import { error } from "@sveltejs/kit";
import { loadJson, workspaceApiPath } from "$lib/workspace/api/http"; import { loadJson, workspaceApiPath } from "#lib/workspace/api/http.ts";
import { loadWorkspaceRepositoryList } from "$lib/workspace/api/repositories"; import { loadWorkspaceRepositoryList } from "#lib/workspace/api/repositories.ts";
import { parseWorkspaceResponse } from "$lib/workspace/api/workspace-model"; import { parseWorkspaceResponse } from "#lib/workspace/api/workspace-model.ts";
import type { LayoutLoad } from "./$types"; import type { LayoutLoad } from "./$types";
export const load: LayoutLoad = async ({ fetch, params }) => { export const load: LayoutLoad = async ({ fetch, params }) => {
@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { invalidate } from '$app/navigation'; import { invalidate } from '$app/navigation';
import DashboardSection from '$lib/workspace/home/DashboardSection.svelte'; import DashboardSection from '#lib/workspace/home/DashboardSection.svelte';
import type { PageProps } from './$types'; import type { PageProps } from './$types';
let { data }: PageProps = $props(); let { data }: PageProps = $props();
@@ -1,4 +1,4 @@
import { loadDashboard } from "$lib/workspace/home/dashboard"; import { loadDashboard } from "#lib/workspace/home/dashboard.ts";
import type { PageLoad } from "./$types"; import type { PageLoad } from "./$types";
export const load: PageLoad = ({ fetch, params, depends }) => { export const load: PageLoad = ({ fetch, params, depends }) => {
@@ -16,11 +16,11 @@ import {
type DashboardFeed, type DashboardFeed,
loadDashboard, loadDashboard,
recentRows, recentRows,
} from "$lib/workspace/home/dashboard"; } from "#lib/workspace/home/dashboard.ts";
import { import {
dashboardFixture, dashboardFixture,
fixtureDetail, fixtureDetail,
} from "$lib/workspace/home/dashboard.test-fixtures"; } from "#lib/workspace/home/dashboard.test-fixtures.ts";
vi.mock("$app/navigation", () => ({ invalidate: vi.fn(async () => {}) })); vi.mock("$app/navigation", () => ({ invalidate: vi.fn(async () => {}) }));
type Data = ComponentProps<typeof Home>["data"]; type Data = ComponentProps<typeof Home>["data"];
@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import DocumentMarkdown from '$lib/workspace/markdown/DocumentMarkdown.svelte'; import DocumentMarkdown from '#lib/workspace/markdown/DocumentMarkdown.svelte';
import { formatDate } from '$lib/workspace/api/http'; import { formatDate } from '#lib/workspace/api/http.ts';
import type { PageProps } from './$types'; import type { PageProps } from './$types';
let { data }: PageProps = $props(); let { data }: PageProps = $props();
@@ -1,6 +1,6 @@
import { MEMORY_API_LIMITS } from "$lib/generated/memory-api"; import { MEMORY_API_LIMITS } from "#lib/generated/memory-api.ts";
import { loadJson, workspaceApiPath } from "$lib/workspace/api/http"; import { loadJson, workspaceApiPath } from "#lib/workspace/api/http.ts";
import { parseMemoryDocumentResponse } from "$lib/workspace/memory/api"; import { parseMemoryDocumentResponse } from "#lib/workspace/memory/api.ts";
import type { PageLoad } from "./$types"; import type { PageLoad } from "./$types";
export const load: PageLoad = async ({ fetch, params }) => { export const load: PageLoad = async ({ fetch, params }) => {
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import type { MemoryStagingEntry, MemoryStagingRecord } from '$lib/generated/memory-api'; import type { MemoryStagingEntry, MemoryStagingRecord } from '#lib/generated/memory-api.ts';
import type { PageProps } from './$types'; import type { PageProps } from './$types';
let { data }: PageProps = $props(); let { data }: PageProps = $props();
@@ -1,6 +1,6 @@
import { MEMORY_API_LIMITS } from "$lib/generated/memory-api"; import { MEMORY_API_LIMITS } from "#lib/generated/memory-api.ts";
import { loadJson, workspaceApiPath } from "$lib/workspace/api/http"; import { loadJson, workspaceApiPath } from "#lib/workspace/api/http.ts";
import { parseMemoryStagingListResponse } from "$lib/workspace/memory/api"; import { parseMemoryStagingListResponse } from "#lib/workspace/memory/api.ts";
import type { PageLoad } from "./$types"; import type { PageLoad } from "./$types";
export const load: PageLoad = async ({ fetch, params }) => { export const load: PageLoad = async ({ fetch, params }) => {
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { mergeRequestPagePath } from "$lib/workspace/api/merge-requests"; import { mergeRequestPagePath } from "#lib/workspace/api/merge-requests.ts";
import type { PageData } from "./$types"; import type { PageData } from "./$types";
let { data }: { data: PageData } = $props(); let { data }: { data: PageData } = $props();

Some files were not shown because too many files have changed in this diff Show More