@selvakumaresra/specship 0.1.1 → 0.1.3
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.
- package/package.json +8 -7
- package/scripts/sync-shim-version.mjs +64 -0
- package/dist/bin/node-version-check.d.ts +0 -37
- package/dist/bin/node-version-check.d.ts.map +0 -1
- package/dist/bin/node-version-check.js +0 -79
- package/dist/bin/node-version-check.js.map +0 -1
- package/dist/bin/specship.d.ts +0 -25
- package/dist/bin/specship.d.ts.map +0 -1
- package/dist/bin/specship.js +0 -2018
- package/dist/bin/specship.js.map +0 -1
- package/dist/bin/uninstall.d.ts +0 -13
- package/dist/bin/uninstall.d.ts.map +0 -1
- package/dist/bin/uninstall.js +0 -35
- package/dist/bin/uninstall.js.map +0 -1
- package/dist/context/formatter.d.ts +0 -30
- package/dist/context/formatter.d.ts.map +0 -1
- package/dist/context/formatter.js +0 -263
- package/dist/context/formatter.js.map +0 -1
- package/dist/context/index.d.ts +0 -119
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -1289
- package/dist/context/index.js.map +0 -1
- package/dist/context/markers.d.ts +0 -19
- package/dist/context/markers.d.ts.map +0 -1
- package/dist/context/markers.js +0 -22
- package/dist/context/markers.js.map +0 -1
- package/dist/db/index.d.ts +0 -101
- package/dist/db/index.d.ts.map +0 -1
- package/dist/db/index.js +0 -276
- package/dist/db/index.js.map +0 -1
- package/dist/db/migrations.d.ts +0 -44
- package/dist/db/migrations.d.ts.map +0 -1
- package/dist/db/migrations.js +0 -427
- package/dist/db/migrations.js.map +0 -1
- package/dist/db/queries.d.ts +0 -357
- package/dist/db/queries.d.ts.map +0 -1
- package/dist/db/queries.js +0 -1504
- package/dist/db/queries.js.map +0 -1
- package/dist/db/schema.sql +0 -410
- package/dist/db/spec-queries.d.ts +0 -101
- package/dist/db/spec-queries.d.ts.map +0 -1
- package/dist/db/spec-queries.js +0 -675
- package/dist/db/spec-queries.js.map +0 -1
- package/dist/db/sqlite-adapter.d.ts +0 -65
- package/dist/db/sqlite-adapter.d.ts.map +0 -1
- package/dist/db/sqlite-adapter.js +0 -214
- package/dist/db/sqlite-adapter.js.map +0 -1
- package/dist/directory.d.ts +0 -57
- package/dist/directory.d.ts.map +0 -1
- package/dist/directory.js +0 -253
- package/dist/directory.js.map +0 -1
- package/dist/errors.d.ts +0 -136
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -219
- package/dist/errors.js.map +0 -1
- package/dist/extraction/dfm-extractor.d.ts +0 -31
- package/dist/extraction/dfm-extractor.d.ts.map +0 -1
- package/dist/extraction/dfm-extractor.js +0 -151
- package/dist/extraction/dfm-extractor.js.map +0 -1
- package/dist/extraction/generated-detection.d.ts +0 -30
- package/dist/extraction/generated-detection.d.ts.map +0 -1
- package/dist/extraction/generated-detection.js +0 -80
- package/dist/extraction/generated-detection.js.map +0 -1
- package/dist/extraction/grammars.d.ts +0 -100
- package/dist/extraction/grammars.d.ts.map +0 -1
- package/dist/extraction/grammars.js +0 -426
- package/dist/extraction/grammars.js.map +0 -1
- package/dist/extraction/index.d.ts +0 -138
- package/dist/extraction/index.d.ts.map +0 -1
- package/dist/extraction/index.js +0 -1394
- package/dist/extraction/index.js.map +0 -1
- package/dist/extraction/languages/c-cpp.d.ts +0 -4
- package/dist/extraction/languages/c-cpp.d.ts.map +0 -1
- package/dist/extraction/languages/c-cpp.js +0 -171
- package/dist/extraction/languages/c-cpp.js.map +0 -1
- package/dist/extraction/languages/csharp.d.ts +0 -3
- package/dist/extraction/languages/csharp.d.ts.map +0 -1
- package/dist/extraction/languages/csharp.js +0 -73
- package/dist/extraction/languages/csharp.js.map +0 -1
- package/dist/extraction/languages/dart.d.ts +0 -3
- package/dist/extraction/languages/dart.d.ts.map +0 -1
- package/dist/extraction/languages/dart.js +0 -192
- package/dist/extraction/languages/dart.js.map +0 -1
- package/dist/extraction/languages/go.d.ts +0 -3
- package/dist/extraction/languages/go.d.ts.map +0 -1
- package/dist/extraction/languages/go.js +0 -74
- package/dist/extraction/languages/go.js.map +0 -1
- package/dist/extraction/languages/index.d.ts +0 -10
- package/dist/extraction/languages/index.d.ts.map +0 -1
- package/dist/extraction/languages/index.js +0 -51
- package/dist/extraction/languages/index.js.map +0 -1
- package/dist/extraction/languages/java.d.ts +0 -3
- package/dist/extraction/languages/java.d.ts.map +0 -1
- package/dist/extraction/languages/java.js +0 -70
- package/dist/extraction/languages/java.js.map +0 -1
- package/dist/extraction/languages/javascript.d.ts +0 -3
- package/dist/extraction/languages/javascript.d.ts.map +0 -1
- package/dist/extraction/languages/javascript.js +0 -90
- package/dist/extraction/languages/javascript.js.map +0 -1
- package/dist/extraction/languages/kotlin.d.ts +0 -3
- package/dist/extraction/languages/kotlin.d.ts.map +0 -1
- package/dist/extraction/languages/kotlin.js +0 -259
- package/dist/extraction/languages/kotlin.js.map +0 -1
- package/dist/extraction/languages/lua.d.ts +0 -3
- package/dist/extraction/languages/lua.d.ts.map +0 -1
- package/dist/extraction/languages/lua.js +0 -150
- package/dist/extraction/languages/lua.js.map +0 -1
- package/dist/extraction/languages/luau.d.ts +0 -3
- package/dist/extraction/languages/luau.d.ts.map +0 -1
- package/dist/extraction/languages/luau.js +0 -37
- package/dist/extraction/languages/luau.js.map +0 -1
- package/dist/extraction/languages/objc.d.ts +0 -3
- package/dist/extraction/languages/objc.d.ts.map +0 -1
- package/dist/extraction/languages/objc.js +0 -133
- package/dist/extraction/languages/objc.js.map +0 -1
- package/dist/extraction/languages/pascal.d.ts +0 -3
- package/dist/extraction/languages/pascal.d.ts.map +0 -1
- package/dist/extraction/languages/pascal.js +0 -66
- package/dist/extraction/languages/pascal.js.map +0 -1
- package/dist/extraction/languages/php.d.ts +0 -3
- package/dist/extraction/languages/php.d.ts.map +0 -1
- package/dist/extraction/languages/php.js +0 -107
- package/dist/extraction/languages/php.js.map +0 -1
- package/dist/extraction/languages/python.d.ts +0 -3
- package/dist/extraction/languages/python.d.ts.map +0 -1
- package/dist/extraction/languages/python.js +0 -56
- package/dist/extraction/languages/python.js.map +0 -1
- package/dist/extraction/languages/ruby.d.ts +0 -3
- package/dist/extraction/languages/ruby.d.ts.map +0 -1
- package/dist/extraction/languages/ruby.js +0 -114
- package/dist/extraction/languages/ruby.js.map +0 -1
- package/dist/extraction/languages/rust.d.ts +0 -3
- package/dist/extraction/languages/rust.d.ts.map +0 -1
- package/dist/extraction/languages/rust.js +0 -109
- package/dist/extraction/languages/rust.js.map +0 -1
- package/dist/extraction/languages/scala.d.ts +0 -3
- package/dist/extraction/languages/scala.d.ts.map +0 -1
- package/dist/extraction/languages/scala.js +0 -139
- package/dist/extraction/languages/scala.js.map +0 -1
- package/dist/extraction/languages/swift.d.ts +0 -3
- package/dist/extraction/languages/swift.d.ts.map +0 -1
- package/dist/extraction/languages/swift.js +0 -91
- package/dist/extraction/languages/swift.js.map +0 -1
- package/dist/extraction/languages/typescript.d.ts +0 -3
- package/dist/extraction/languages/typescript.d.ts.map +0 -1
- package/dist/extraction/languages/typescript.js +0 -129
- package/dist/extraction/languages/typescript.js.map +0 -1
- package/dist/extraction/liquid-extractor.d.ts +0 -52
- package/dist/extraction/liquid-extractor.d.ts.map +0 -1
- package/dist/extraction/liquid-extractor.js +0 -313
- package/dist/extraction/liquid-extractor.js.map +0 -1
- package/dist/extraction/mybatis-extractor.d.ts +0 -48
- package/dist/extraction/mybatis-extractor.d.ts.map +0 -1
- package/dist/extraction/mybatis-extractor.js +0 -198
- package/dist/extraction/mybatis-extractor.js.map +0 -1
- package/dist/extraction/parse-worker.d.ts +0 -8
- package/dist/extraction/parse-worker.d.ts.map +0 -1
- package/dist/extraction/parse-worker.js +0 -94
- package/dist/extraction/parse-worker.js.map +0 -1
- package/dist/extraction/specs/markdown-spec-extractor.d.ts +0 -59
- package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +0 -1
- package/dist/extraction/specs/markdown-spec-extractor.js +0 -327
- package/dist/extraction/specs/markdown-spec-extractor.js.map +0 -1
- package/dist/extraction/specs/types.d.ts +0 -39
- package/dist/extraction/specs/types.d.ts.map +0 -1
- package/dist/extraction/specs/types.js +0 -8
- package/dist/extraction/specs/types.js.map +0 -1
- package/dist/extraction/svelte-extractor.d.ts +0 -56
- package/dist/extraction/svelte-extractor.d.ts.map +0 -1
- package/dist/extraction/svelte-extractor.js +0 -272
- package/dist/extraction/svelte-extractor.js.map +0 -1
- package/dist/extraction/tree-sitter-helpers.d.ts +0 -28
- package/dist/extraction/tree-sitter-helpers.d.ts.map +0 -1
- package/dist/extraction/tree-sitter-helpers.js +0 -103
- package/dist/extraction/tree-sitter-helpers.js.map +0 -1
- package/dist/extraction/tree-sitter-types.d.ts +0 -193
- package/dist/extraction/tree-sitter-types.d.ts.map +0 -1
- package/dist/extraction/tree-sitter-types.js +0 -10
- package/dist/extraction/tree-sitter-types.js.map +0 -1
- package/dist/extraction/tree-sitter.d.ts +0 -317
- package/dist/extraction/tree-sitter.d.ts.map +0 -1
- package/dist/extraction/tree-sitter.js +0 -3092
- package/dist/extraction/tree-sitter.js.map +0 -1
- package/dist/extraction/vue-extractor.d.ts +0 -51
- package/dist/extraction/vue-extractor.d.ts.map +0 -1
- package/dist/extraction/vue-extractor.js +0 -251
- package/dist/extraction/vue-extractor.js.map +0 -1
- package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +0 -38
- package/dist/extraction/wasm-runtime-flags.d.ts.map +0 -1
- package/dist/extraction/wasm-runtime-flags.js +0 -106
- package/dist/extraction/wasm-runtime-flags.js.map +0 -1
- package/dist/graph/index.d.ts +0 -8
- package/dist/graph/index.d.ts.map +0 -1
- package/dist/graph/index.js +0 -13
- package/dist/graph/index.js.map +0 -1
- package/dist/graph/queries.d.ts +0 -106
- package/dist/graph/queries.d.ts.map +0 -1
- package/dist/graph/queries.js +0 -366
- package/dist/graph/queries.js.map +0 -1
- package/dist/graph/traversal.d.ts +0 -127
- package/dist/graph/traversal.d.ts.map +0 -1
- package/dist/graph/traversal.js +0 -531
- package/dist/graph/traversal.js.map +0 -1
- package/dist/index.d.ts +0 -551
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -1165
- package/dist/index.js.map +0 -1
- package/dist/installer/config-writer.d.ts +0 -28
- package/dist/installer/config-writer.d.ts.map +0 -1
- package/dist/installer/config-writer.js +0 -91
- package/dist/installer/config-writer.js.map +0 -1
- package/dist/installer/index.d.ts +0 -87
- package/dist/installer/index.d.ts.map +0 -1
- package/dist/installer/index.js +0 -409
- package/dist/installer/index.js.map +0 -1
- package/dist/installer/instructions-template.d.ts +0 -18
- package/dist/installer/instructions-template.d.ts.map +0 -1
- package/dist/installer/instructions-template.js +0 -21
- package/dist/installer/instructions-template.js.map +0 -1
- package/dist/installer/targets/claude.d.ts +0 -88
- package/dist/installer/targets/claude.d.ts.map +0 -1
- package/dist/installer/targets/claude.js +0 -582
- package/dist/installer/targets/claude.js.map +0 -1
- package/dist/installer/targets/registry.d.ts +0 -19
- package/dist/installer/targets/registry.d.ts.map +0 -1
- package/dist/installer/targets/registry.js +0 -31
- package/dist/installer/targets/registry.js.map +0 -1
- package/dist/installer/targets/shared.d.ts +0 -62
- package/dist/installer/targets/shared.d.ts.map +0 -1
- package/dist/installer/targets/shared.js +0 -207
- package/dist/installer/targets/shared.js.map +0 -1
- package/dist/installer/targets/types.d.ts +0 -76
- package/dist/installer/targets/types.d.ts.map +0 -1
- package/dist/installer/targets/types.js +0 -12
- package/dist/installer/targets/types.js.map +0 -1
- package/dist/isolation/worktree.d.ts +0 -65
- package/dist/isolation/worktree.d.ts.map +0 -1
- package/dist/isolation/worktree.js +0 -231
- package/dist/isolation/worktree.js.map +0 -1
- package/dist/mcp/daemon-paths.d.ts +0 -46
- package/dist/mcp/daemon-paths.d.ts.map +0 -1
- package/dist/mcp/daemon-paths.js +0 -125
- package/dist/mcp/daemon-paths.js.map +0 -1
- package/dist/mcp/daemon.d.ts +0 -161
- package/dist/mcp/daemon.d.ts.map +0 -1
- package/dist/mcp/daemon.js +0 -403
- package/dist/mcp/daemon.js.map +0 -1
- package/dist/mcp/engine.d.ts +0 -105
- package/dist/mcp/engine.d.ts.map +0 -1
- package/dist/mcp/engine.js +0 -270
- package/dist/mcp/engine.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -112
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -477
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/proxy.d.ts +0 -81
- package/dist/mcp/proxy.d.ts.map +0 -1
- package/dist/mcp/proxy.js +0 -510
- package/dist/mcp/proxy.js.map +0 -1
- package/dist/mcp/server-instructions.d.ts +0 -18
- package/dist/mcp/server-instructions.d.ts.map +0 -1
- package/dist/mcp/server-instructions.js +0 -77
- package/dist/mcp/server-instructions.js.map +0 -1
- package/dist/mcp/session.d.ts +0 -77
- package/dist/mcp/session.d.ts.map +0 -1
- package/dist/mcp/session.js +0 -294
- package/dist/mcp/session.js.map +0 -1
- package/dist/mcp/spec-tools.d.ts +0 -39
- package/dist/mcp/spec-tools.d.ts.map +0 -1
- package/dist/mcp/spec-tools.js +0 -326
- package/dist/mcp/spec-tools.js.map +0 -1
- package/dist/mcp/tools.d.ts +0 -404
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js +0 -3066
- package/dist/mcp/tools.js.map +0 -1
- package/dist/mcp/transport.d.ts +0 -188
- package/dist/mcp/transport.d.ts.map +0 -1
- package/dist/mcp/transport.js +0 -343
- package/dist/mcp/transport.js.map +0 -1
- package/dist/mcp/version.d.ts +0 -19
- package/dist/mcp/version.d.ts.map +0 -1
- package/dist/mcp/version.js +0 -71
- package/dist/mcp/version.js.map +0 -1
- package/dist/resolution/callback-synthesizer.d.ts +0 -10
- package/dist/resolution/callback-synthesizer.d.ts.map +0 -1
- package/dist/resolution/callback-synthesizer.js +0 -1300
- package/dist/resolution/callback-synthesizer.js.map +0 -1
- package/dist/resolution/frameworks/cargo-workspace.d.ts +0 -18
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +0 -1
- package/dist/resolution/frameworks/cargo-workspace.js +0 -225
- package/dist/resolution/frameworks/cargo-workspace.js.map +0 -1
- package/dist/resolution/frameworks/csharp.d.ts +0 -8
- package/dist/resolution/frameworks/csharp.d.ts.map +0 -1
- package/dist/resolution/frameworks/csharp.js +0 -241
- package/dist/resolution/frameworks/csharp.js.map +0 -1
- package/dist/resolution/frameworks/drupal.d.ts +0 -51
- package/dist/resolution/frameworks/drupal.d.ts.map +0 -1
- package/dist/resolution/frameworks/drupal.js +0 -367
- package/dist/resolution/frameworks/drupal.js.map +0 -1
- package/dist/resolution/frameworks/expo-modules.d.ts +0 -3
- package/dist/resolution/frameworks/expo-modules.d.ts.map +0 -1
- package/dist/resolution/frameworks/expo-modules.js +0 -143
- package/dist/resolution/frameworks/expo-modules.js.map +0 -1
- package/dist/resolution/frameworks/express.d.ts +0 -8
- package/dist/resolution/frameworks/express.d.ts.map +0 -1
- package/dist/resolution/frameworks/express.js +0 -308
- package/dist/resolution/frameworks/express.js.map +0 -1
- package/dist/resolution/frameworks/fabric.d.ts +0 -3
- package/dist/resolution/frameworks/fabric.d.ts.map +0 -1
- package/dist/resolution/frameworks/fabric.js +0 -354
- package/dist/resolution/frameworks/fabric.js.map +0 -1
- package/dist/resolution/frameworks/go.d.ts +0 -8
- package/dist/resolution/frameworks/go.d.ts.map +0 -1
- package/dist/resolution/frameworks/go.js +0 -161
- package/dist/resolution/frameworks/go.js.map +0 -1
- package/dist/resolution/frameworks/index.d.ts +0 -48
- package/dist/resolution/frameworks/index.d.ts.map +0 -1
- package/dist/resolution/frameworks/index.js +0 -161
- package/dist/resolution/frameworks/index.js.map +0 -1
- package/dist/resolution/frameworks/java.d.ts +0 -8
- package/dist/resolution/frameworks/java.d.ts.map +0 -1
- package/dist/resolution/frameworks/java.js +0 -504
- package/dist/resolution/frameworks/java.js.map +0 -1
- package/dist/resolution/frameworks/laravel.d.ts +0 -13
- package/dist/resolution/frameworks/laravel.d.ts.map +0 -1
- package/dist/resolution/frameworks/laravel.js +0 -257
- package/dist/resolution/frameworks/laravel.js.map +0 -1
- package/dist/resolution/frameworks/nestjs.d.ts +0 -26
- package/dist/resolution/frameworks/nestjs.d.ts.map +0 -1
- package/dist/resolution/frameworks/nestjs.js +0 -698
- package/dist/resolution/frameworks/nestjs.js.map +0 -1
- package/dist/resolution/frameworks/play.d.ts +0 -19
- package/dist/resolution/frameworks/play.d.ts.map +0 -1
- package/dist/resolution/frameworks/play.js +0 -111
- package/dist/resolution/frameworks/play.js.map +0 -1
- package/dist/resolution/frameworks/python.d.ts +0 -10
- package/dist/resolution/frameworks/python.d.ts.map +0 -1
- package/dist/resolution/frameworks/python.js +0 -396
- package/dist/resolution/frameworks/python.js.map +0 -1
- package/dist/resolution/frameworks/react-native.d.ts +0 -3
- package/dist/resolution/frameworks/react-native.d.ts.map +0 -1
- package/dist/resolution/frameworks/react-native.js +0 -360
- package/dist/resolution/frameworks/react-native.js.map +0 -1
- package/dist/resolution/frameworks/react.d.ts +0 -8
- package/dist/resolution/frameworks/react.d.ts.map +0 -1
- package/dist/resolution/frameworks/react.js +0 -365
- package/dist/resolution/frameworks/react.js.map +0 -1
- package/dist/resolution/frameworks/ruby.d.ts +0 -8
- package/dist/resolution/frameworks/ruby.d.ts.map +0 -1
- package/dist/resolution/frameworks/ruby.js +0 -302
- package/dist/resolution/frameworks/ruby.js.map +0 -1
- package/dist/resolution/frameworks/rust.d.ts +0 -8
- package/dist/resolution/frameworks/rust.d.ts.map +0 -1
- package/dist/resolution/frameworks/rust.js +0 -304
- package/dist/resolution/frameworks/rust.js.map +0 -1
- package/dist/resolution/frameworks/svelte.d.ts +0 -9
- package/dist/resolution/frameworks/svelte.d.ts.map +0 -1
- package/dist/resolution/frameworks/svelte.js +0 -249
- package/dist/resolution/frameworks/svelte.js.map +0 -1
- package/dist/resolution/frameworks/swift-objc.d.ts +0 -37
- package/dist/resolution/frameworks/swift-objc.d.ts.map +0 -1
- package/dist/resolution/frameworks/swift-objc.js +0 -252
- package/dist/resolution/frameworks/swift-objc.js.map +0 -1
- package/dist/resolution/frameworks/swift.d.ts +0 -10
- package/dist/resolution/frameworks/swift.d.ts.map +0 -1
- package/dist/resolution/frameworks/swift.js +0 -400
- package/dist/resolution/frameworks/swift.js.map +0 -1
- package/dist/resolution/frameworks/vue.d.ts +0 -9
- package/dist/resolution/frameworks/vue.d.ts.map +0 -1
- package/dist/resolution/frameworks/vue.js +0 -306
- package/dist/resolution/frameworks/vue.js.map +0 -1
- package/dist/resolution/go-module.d.ts +0 -26
- package/dist/resolution/go-module.d.ts.map +0 -1
- package/dist/resolution/go-module.js +0 -78
- package/dist/resolution/go-module.js.map +0 -1
- package/dist/resolution/import-resolver.d.ts +0 -68
- package/dist/resolution/import-resolver.d.ts.map +0 -1
- package/dist/resolution/import-resolver.js +0 -1275
- package/dist/resolution/import-resolver.js.map +0 -1
- package/dist/resolution/index.d.ts +0 -117
- package/dist/resolution/index.d.ts.map +0 -1
- package/dist/resolution/index.js +0 -895
- package/dist/resolution/index.js.map +0 -1
- package/dist/resolution/lru-cache.d.ts +0 -24
- package/dist/resolution/lru-cache.d.ts.map +0 -1
- package/dist/resolution/lru-cache.js +0 -62
- package/dist/resolution/lru-cache.js.map +0 -1
- package/dist/resolution/name-matcher.d.ts +0 -32
- package/dist/resolution/name-matcher.d.ts.map +0 -1
- package/dist/resolution/name-matcher.js +0 -596
- package/dist/resolution/name-matcher.js.map +0 -1
- package/dist/resolution/path-aliases.d.ts +0 -68
- package/dist/resolution/path-aliases.d.ts.map +0 -1
- package/dist/resolution/path-aliases.js +0 -238
- package/dist/resolution/path-aliases.js.map +0 -1
- package/dist/resolution/spec-link-resolver.d.ts +0 -103
- package/dist/resolution/spec-link-resolver.d.ts.map +0 -1
- package/dist/resolution/spec-link-resolver.js +0 -259
- package/dist/resolution/spec-link-resolver.js.map +0 -1
- package/dist/resolution/strip-comments.d.ts +0 -27
- package/dist/resolution/strip-comments.d.ts.map +0 -1
- package/dist/resolution/strip-comments.js +0 -441
- package/dist/resolution/strip-comments.js.map +0 -1
- package/dist/resolution/swift-objc-bridge.d.ts +0 -134
- package/dist/resolution/swift-objc-bridge.d.ts.map +0 -1
- package/dist/resolution/swift-objc-bridge.js +0 -256
- package/dist/resolution/swift-objc-bridge.js.map +0 -1
- package/dist/resolution/types.d.ts +0 -216
- package/dist/resolution/types.d.ts.map +0 -1
- package/dist/resolution/types.js +0 -8
- package/dist/resolution/types.js.map +0 -1
- package/dist/resolution/workspace-packages.d.ts +0 -48
- package/dist/resolution/workspace-packages.d.ts.map +0 -1
- package/dist/resolution/workspace-packages.js +0 -208
- package/dist/resolution/workspace-packages.js.map +0 -1
- package/dist/search/query-parser.d.ts +0 -57
- package/dist/search/query-parser.d.ts.map +0 -1
- package/dist/search/query-parser.js +0 -177
- package/dist/search/query-parser.js.map +0 -1
- package/dist/search/query-utils.d.ts +0 -71
- package/dist/search/query-utils.d.ts.map +0 -1
- package/dist/search/query-utils.js +0 -380
- package/dist/search/query-utils.js.map +0 -1
- package/dist/server/cli.js +0 -152
- package/dist/server/index.js +0 -12
- package/dist/server/ingest/index.js +0 -18
- package/dist/server/ingest/ingestor.js +0 -406
- package/dist/server/ingest/parser.js +0 -104
- package/dist/server/ingest/pricing.js +0 -78
- package/dist/server/ingest/types.js +0 -9
- package/dist/server/ingest/watcher.js +0 -77
- package/dist/server/package.json +0 -3
- package/dist/server/project-registry.js +0 -101
- package/dist/server/routes/claude.js +0 -480
- package/dist/server/routes/graph.js +0 -149
- package/dist/server/routes/memory.js +0 -272
- package/dist/server/routes/projects.js +0 -197
- package/dist/server/routes/spec.js +0 -105
- package/dist/server/routes/status.js +0 -35
- package/dist/server/routes/workflow.js +0 -184
- package/dist/server/server.js +0 -202
- package/dist/sync/git-hooks.d.ts +0 -45
- package/dist/sync/git-hooks.d.ts.map +0 -1
- package/dist/sync/git-hooks.js +0 -225
- package/dist/sync/git-hooks.js.map +0 -1
- package/dist/sync/index.d.ts +0 -19
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/sync/index.js +0 -35
- package/dist/sync/index.js.map +0 -1
- package/dist/sync/watch-policy.d.ts +0 -48
- package/dist/sync/watch-policy.d.ts.map +0 -1
- package/dist/sync/watch-policy.js +0 -124
- package/dist/sync/watch-policy.js.map +0 -1
- package/dist/sync/watcher.d.ts +0 -283
- package/dist/sync/watcher.d.ts.map +0 -1
- package/dist/sync/watcher.js +0 -606
- package/dist/sync/watcher.js.map +0 -1
- package/dist/sync/worktree.d.ts +0 -54
- package/dist/sync/worktree.d.ts.map +0 -1
- package/dist/sync/worktree.js +0 -137
- package/dist/sync/worktree.js.map +0 -1
- package/dist/types.d.ts +0 -623
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -108
- package/dist/types.js.map +0 -1
- package/dist/ui/glyphs.d.ts +0 -42
- package/dist/ui/glyphs.d.ts.map +0 -1
- package/dist/ui/glyphs.js +0 -78
- package/dist/ui/glyphs.js.map +0 -1
- package/dist/ui/shimmer-progress.d.ts +0 -11
- package/dist/ui/shimmer-progress.d.ts.map +0 -1
- package/dist/ui/shimmer-progress.js +0 -90
- package/dist/ui/shimmer-progress.js.map +0 -1
- package/dist/ui/shimmer-worker.d.ts +0 -2
- package/dist/ui/shimmer-worker.d.ts.map +0 -1
- package/dist/ui/shimmer-worker.js +0 -118
- package/dist/ui/shimmer-worker.js.map +0 -1
- package/dist/ui/types.d.ts +0 -17
- package/dist/ui/types.d.ts.map +0 -1
- package/dist/ui/types.js +0 -3
- package/dist/ui/types.js.map +0 -1
- package/dist/utils.d.ts +0 -205
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -549
- package/dist/utils.js.map +0 -1
- package/dist/web/chunk-2YZXEHZ2.js +0 -1
- package/dist/web/chunk-3GIC555L.js +0 -18
- package/dist/web/chunk-3IIIGRMT.js +0 -1
- package/dist/web/chunk-47QYKLE5.js +0 -1
- package/dist/web/chunk-4LHBWWP7.js +0 -1
- package/dist/web/chunk-4OAZLD5W.js +0 -1
- package/dist/web/chunk-5OQKAJAE.js +0 -1
- package/dist/web/chunk-7B525GKQ.js +0 -1
- package/dist/web/chunk-BPDXCOOZ.js +0 -1
- package/dist/web/chunk-DT37HTZB.js +0 -1
- package/dist/web/chunk-EIMUHJND.js +0 -1
- package/dist/web/chunk-FTESTUEO.js +0 -1
- package/dist/web/chunk-GLJZV6MU.js +0 -1
- package/dist/web/chunk-I7LS67U5.js +0 -1
- package/dist/web/chunk-L4TVIPSR.js +0 -1
- package/dist/web/chunk-MASCULC2.js +0 -1
- package/dist/web/chunk-MW7ICSRM.js +0 -1
- package/dist/web/chunk-OI5VP2A3.js +0 -1
- package/dist/web/chunk-RA6EBF6I.js +0 -1
- package/dist/web/chunk-RP3WU5Y6.js +0 -1
- package/dist/web/chunk-RQDRMTXN.js +0 -1
- package/dist/web/chunk-TQMT6UDU.js +0 -1
- package/dist/web/chunk-U7IYOV7T.js +0 -1
- package/dist/web/chunk-UE227MWF.js +0 -1
- package/dist/web/chunk-WV573J4K.js +0 -1
- package/dist/web/chunk-WVCKOJZL.js +0 -4
- package/dist/web/chunk-XZKLVPHE.js +0 -1
- package/dist/web/chunk-ZABKKHJ3.js +0 -1
- package/dist/web/favicon-16.png +0 -0
- package/dist/web/favicon-180.png +0 -0
- package/dist/web/favicon-32.png +0 -0
- package/dist/web/favicon-512.png +0 -0
- package/dist/web/favicon-small.svg +0 -15
- package/dist/web/favicon.ico +0 -0
- package/dist/web/favicon.svg +0 -20
- package/dist/web/index.html +0 -145
- package/dist/web/main-RI5CO5Z4.js +0 -1
- package/dist/web/styles-CYN7IKT4.css +0 -1
- package/dist/workflows/condition-evaluator.d.ts +0 -75
- package/dist/workflows/condition-evaluator.d.ts.map +0 -1
- package/dist/workflows/condition-evaluator.js +0 -282
- package/dist/workflows/condition-evaluator.js.map +0 -1
- package/dist/workflows/defaults/index.d.ts +0 -26
- package/dist/workflows/defaults/index.d.ts.map +0 -1
- package/dist/workflows/defaults/index.js +0 -94
- package/dist/workflows/defaults/index.js.map +0 -1
- package/dist/workflows/defaults/spec-fix.yaml +0 -110
- package/dist/workflows/defaults/spec-implement.yaml +0 -150
- package/dist/workflows/defaults/spec-relink.yaml +0 -81
- package/dist/workflows/defaults/spec-verify.yaml +0 -51
- package/dist/workflows/discovery.d.ts +0 -46
- package/dist/workflows/discovery.d.ts.map +0 -1
- package/dist/workflows/discovery.js +0 -193
- package/dist/workflows/discovery.js.map +0 -1
- package/dist/workflows/executor.d.ts +0 -83
- package/dist/workflows/executor.d.ts.map +0 -1
- package/dist/workflows/executor.js +0 -623
- package/dist/workflows/executor.js.map +0 -1
- package/dist/workflows/runners/approval.d.ts +0 -18
- package/dist/workflows/runners/approval.d.ts.map +0 -1
- package/dist/workflows/runners/approval.js +0 -34
- package/dist/workflows/runners/approval.js.map +0 -1
- package/dist/workflows/runners/bash.d.ts +0 -13
- package/dist/workflows/runners/bash.d.ts.map +0 -1
- package/dist/workflows/runners/bash.js +0 -143
- package/dist/workflows/runners/bash.js.map +0 -1
- package/dist/workflows/runners/cancel.d.ts +0 -10
- package/dist/workflows/runners/cancel.d.ts.map +0 -1
- package/dist/workflows/runners/cancel.js +0 -19
- package/dist/workflows/runners/cancel.js.map +0 -1
- package/dist/workflows/runners/prompt.d.ts +0 -28
- package/dist/workflows/runners/prompt.d.ts.map +0 -1
- package/dist/workflows/runners/prompt.js +0 -212
- package/dist/workflows/runners/prompt.js.map +0 -1
- package/dist/workflows/runners/script.d.ts +0 -17
- package/dist/workflows/runners/script.d.ts.map +0 -1
- package/dist/workflows/runners/script.js +0 -155
- package/dist/workflows/runners/script.js.map +0 -1
- package/dist/workflows/runners/types.d.ts +0 -51
- package/dist/workflows/runners/types.d.ts.map +0 -1
- package/dist/workflows/runners/types.js +0 -13
- package/dist/workflows/runners/types.js.map +0 -1
- package/dist/workflows/schemas/workflow.d.ts +0 -166
- package/dist/workflows/schemas/workflow.d.ts.map +0 -1
- package/dist/workflows/schemas/workflow.js +0 -437
- package/dist/workflows/schemas/workflow.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as Br}from"./chunk-L4TVIPSR.js";import{d as qr,e as Je}from"./chunk-RP3WU5Y6.js";import{$a as Pr,A as yr,B as k,C as Ge,D as L,E as C,F as Rr,Fa as Pt,G as w,Ga as $,H as Sr,Ha as Ar,Hb as $r,I as T,Ia as Mr,J as We,Ja as Lt,Jb as y,K as h,Ka as Tr,Kb as Ke,L as Cr,La as Ie,Lb as zr,Mb as Hr,N as W,Na as Dr,O,Oa as Nr,Ob as Fr,Pa as _r,Qa as Ur,Qb as Ye,Ra as Or,Sb as Ze,T as wr,V as _t,W as br,X as te,_ as Qe,a as l,aa as R,b as A,c as lr,ca as be,d as dr,da as Ut,e as hr,ea as Ir,f as X,fa as Ot,g as _,h as U,hb as Lr,i as M,j as g,k as fr,kb as xr,l as Tt,lb as jr,m as pr,mb as kr,n as I,o as gr,p as F,q as Dt,r as vr,s as qe,t as ee,u as Be,v as Ve,w as ce,x as mr,xa as Er,y as G,z as Nt}from"./chunk-WVCKOJZL.js";var f="primary",$e=Symbol("RouteTitle"),zt=class{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function ne(t){return new zt(t)}function xt(t,n,e){for(let r=0;r<t.length;r++){let i=t[r],o=n[r];if(i[0]===":")e[i.substring(1)]=o;else if(i!==o.path)return!1}return!0}function Zr(t,n,e){let r=e.path.split("/"),i=r.indexOf("**");if(i===-1){if(r.length>t.length||e.pathMatch==="full"&&(n.hasChildren()||r.length<t.length))return null;let c={},u=t.slice(0,r.length);return xt(r,u,c)?{consumed:u,posParams:c}:null}if(i!==r.lastIndexOf("**"))return null;let o=r.slice(0,i),s=r.slice(i+1);if(o.length+s.length>t.length||e.pathMatch==="full"&&n.hasChildren()&&e.path!=="**")return null;let a={};return!xt(o,t.slice(0,o.length),a)||!xt(s,t.slice(t.length-s.length),a)?null:{consumed:t,posParams:a}}function it(t){return new Promise((n,e)=>{t.pipe(G()).subscribe({next:r=>n(r),error:r=>e(r)})})}function Fn(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;++e)if(!z(t[e],n[e]))return!1;return!0}function z(t,n){let e=t?Ht(t):void 0,r=n?Ht(n):void 0;if(!e||!r||e.length!=r.length)return!1;let i;for(let o=0;o<e.length;o++)if(i=e[o],!Jr(t[i],n[i]))return!1;return!0}function Ht(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function Jr(t,n){if(Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!1;let e=[...t].sort(),r=[...n].sort();return e.every((i,o)=>r[o]===i)}else return t===n}function qn(t){return t.length>0?t[t.length-1]:null}function ae(t){return Tt(t)?t:Nr(t)?M(Promise.resolve(t)):g(t)}function Xr(t){return Tt(t)?it(t):Promise.resolve(t)}var Bn={exact:tn,subset:rn},en={exact:Vn,subset:Gn,ignored:()=>!0},tr={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Ne={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function rr(t,n,e){let r=t instanceof E?t:n.parseUrl(t);return Ke(()=>Ft(n.lastSuccessfulNavigation()?.finalUrl??new E,r,l(l({},Ne),e)))}function Ft(t,n,e){return Bn[e.paths](t.root,n.root,e.matrixParams)&&en[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment==="exact"&&t.fragment!==n.fragment)}function Vn(t,n){return z(t,n)}function tn(t,n,e){if(!re(t.segments,n.segments)||!tt(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!tn(t.children[r],n.children[r],e))return!1;return!0}function Gn(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>Jr(t[e],n[e]))}function rn(t,n,e){return nn(t,n,n.segments,e)}function nn(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!re(i,e)||n.hasChildren()||!tt(i,e,r))}else if(t.segments.length===e.length){if(!re(t.segments,e)||!tt(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!rn(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!re(t.segments,i)||!tt(t.segments,i,r)||!t.children[f]?!1:nn(t.children[f],n,o,r)}}function tt(t,n,e){return n.every((r,i)=>en[e](t[i].parameters,r.parameters))}var E=class{root;queryParams;fragment;_queryParamMap;constructor(n=new v([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=ne(this.queryParams),this._queryParamMap}toString(){return Kn.serialize(this)}},v=class{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return rt(this)}},Q=class{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=ne(this.parameters),this._parameterMap}toString(){return an(this)}};function Wn(t,n){return re(t,n)&&t.every((e,r)=>z(e.parameters,n[r].parameters))}function re(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function Qn(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===f&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==f&&(e=e.concat(n(i,r)))}),e}var me=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:()=>new K,providedIn:"root"})}return t})(),K=class{parse(n){let e=new Bt(n);return new E(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){let e=`/${Ee(n.root,!0)}`,r=Jn(n.queryParams),i=typeof n.fragment=="string"?`#${Yn(n.fragment)}`:"";return`${e}${r}${i}`}},Kn=new K;function rt(t){return t.segments.map(n=>an(n)).join("/")}function Ee(t,n){if(!t.hasChildren())return rt(t);if(n){let e=t.children[f]?Ee(t.children[f],!1):"",r=[];return Object.entries(t.children).forEach(([i,o])=>{i!==f&&r.push(`${i}:${Ee(o,!1)}`)}),r.length>0?`${e}(${r.join("//")})`:e}else{let e=Qn(t,(r,i)=>i===f?[Ee(t.children[f],!1)]:[`${i}:${Ee(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[f]!=null?`${rt(t)}/${e[0]}`:`${rt(t)}/(${e.join("//")})`}}function on(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Xe(t){return on(t).replace(/%3B/gi,";")}function Yn(t){return encodeURI(t)}function qt(t){return on(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function nt(t){return decodeURIComponent(t)}function Vr(t){return nt(t.replace(/\+/g,"%20"))}function an(t){return`${qt(t.path)}${Zn(t.parameters)}`}function Zn(t){return Object.entries(t).map(([n,e])=>`;${qt(n)}=${qt(e)}`).join("")}function Jn(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${Xe(e)}=${Xe(i)}`).join("&"):`${Xe(e)}=${Xe(r)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}var Xn=/^[^\/()?;#]+/;function jt(t){let n=t.match(Xn);return n?n[0]:""}var ei=/^[^\/()?;=#]+/;function ti(t){let n=t.match(ei);return n?n[0]:""}var ri=/^[^=?&#]+/;function ni(t){let n=t.match(ri);return n?n[0]:""}var ii=/^[^&#]+/;function oi(t){let n=t.match(ii);return n?n[0]:""}var Bt=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){for(;this.consumeOptional("/"););return this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new v([],{}):new v([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new C(4010,!1);if(this.remaining==="")return{};this.consumeOptional("/");let e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let r={};this.peekStartsWith("/(")&&(this.capture("/"),r=this.parseParens(!0,n));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1,n)),(e.length>0||Object.keys(r).length>0)&&(i[f]=new v(e,r)),i}parseSegment(){let n=jt(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new C(4009,!1);return this.capture(n),new Q(nt(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let e=ti(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let i=jt(this.remaining);i&&(r=i,this.capture(r))}n[nt(e)]=nt(r)}parseQueryParam(n){let e=ni(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let s=oi(this.remaining);s&&(r=s,this.capture(r))}let i=Vr(e),o=Vr(r);if(n.hasOwnProperty(i)){let s=n[i];Array.isArray(s)||(s=[s],n[i]=s),s.push(o)}else n[i]=o}parseParens(n,e){let r={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let i=jt(this.remaining),o=this.remaining[i.length];if(o!=="/"&&o!==")"&&o!==";")throw new C(4010,!1);let s;i.indexOf(":")>-1?(s=i.slice(0,i.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=f);let a=this.parseChildren(e+1);r[s??f]=Object.keys(a).length===1&&a[f]?a[f]:new v([],a),this.consumeOptional("//")}return r}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new C(4011,!1)}};function sn(t){return t.segments.length>0?new v([],{[f]:t}):t}function cn(t){let n={};for(let[r,i]of Object.entries(t.children)){let o=cn(i);if(r===f&&o.segments.length===0&&o.hasChildren())for(let[s,a]of Object.entries(o.children))n[s]=a;else(o.segments.length>0||o.hasChildren())&&(n[r]=o)}let e=new v(t.segments,n);return ai(e)}function ai(t){if(t.numberOfChildren===1&&t.children[f]){let n=t.children[f];return new v(t.segments.concat(n.segments),n.children)}return t}function Y(t){return t instanceof E}function un(t,n,e=null,r=null,i=new K){let o=ln(t);return dn(o,n,e,r,i)}function ln(t){let n;function e(o){let s={};for(let c of o.children){let u=e(c);s[c.outlet]=u}let a=new v(o.url,s);return o===t&&(n=a),a}let r=e(t.root),i=sn(r);return n??i}function dn(t,n,e,r,i){let o=t;for(;o.parent;)o=o.parent;if(n.length===0)return kt(o,o,o,e,r,i);let s=si(n);if(s.toRoot())return kt(o,o,new v([],{}),e,r,i);let a=ci(s,o,t),c=a.processChildren?Me(a.segmentGroup,a.index,s.commands):fn(a.segmentGroup,a.index,s.commands);return kt(o,a.segmentGroup,c,e,r,i)}function ot(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function _e(t){return typeof t=="object"&&t!=null&&t.outlets}function Gr(t,n,e){t||="\u0275";let r=new E;return r.queryParams={[t]:n},e.parse(e.serialize(r)).queryParams[t]}function kt(t,n,e,r,i,o){let s={};for(let[u,d]of Object.entries(r??{}))s[u]=Array.isArray(d)?d.map(p=>Gr(u,p,o)):Gr(u,d,o);let a;t===n?a=e:a=hn(t,n,e);let c=sn(cn(a));return new E(c,s,i)}function hn(t,n,e){let r={};return Object.entries(t.children).forEach(([i,o])=>{o===n?r[i]=e:r[i]=hn(o,n,e)}),new v(t.segments,r)}var at=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&&ot(r[0]))throw new C(4003,!1);let i=r.find(_e);if(i&&i!==qn(r))throw new C(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function si(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new at(!0,0,t);let n=0,e=!1,r=t.reduce((i,o,s)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let a={};return Object.entries(o.outlets).forEach(([c,u])=>{a[c]=typeof u=="string"?u.split("/"):u}),[...i,{outlets:a}]}if(o.segmentPath)return[...i,o.segmentPath]}return typeof o!="string"?[...i,o]:s===0?(o.split("/").forEach((a,c)=>{c==0&&a==="."||(c==0&&a===""?e=!0:a===".."?n++:a!=""&&i.push(a))}),i):[...i,o]},[]);return new at(e,n,r)}var le=class{segmentGroup;processChildren;index;constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function ci(t,n,e){if(t.isAbsolute)return new le(n,!0,0);if(!e)return new le(n,!1,NaN);if(e.parent===null)return new le(e,!0,0);let r=ot(t.commands[0])?0:1,i=e.segments.length-1+r;return ui(e,i,t.numberOfDoubleDots)}function ui(t,n,e){let r=t,i=n,o=e;for(;o>i;){if(o-=i,r=r.parent,!r)throw new C(4005,!1);i=r.segments.length}return new le(r,!1,i-o)}function li(t){return _e(t[0])?t[0].outlets:{[f]:t}}function fn(t,n,e){if(t??=new v([],{}),t.segments.length===0&&t.hasChildren())return Me(t,n,e);let r=di(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndex<t.segments.length){let o=new v(t.segments.slice(0,r.pathIndex),{});return o.children[f]=new v(t.segments.slice(r.pathIndex),t.children),Me(o,0,i)}else return r.match&&i.length===0?new v(t.segments,{}):r.match&&!t.hasChildren()?Vt(t,n,e):r.match?Me(t,0,i):Vt(t,n,e)}function Me(t,n,e){if(e.length===0)return new v(t.segments,{});{let r=li(e),i={};if(Object.keys(r).some(o=>o!==f)&&t.children[f]&&t.numberOfChildren===1&&t.children[f].segments.length===0){let o=Me(t.children[f],n,e);return new v(t.segments,o.children)}return Object.entries(r).forEach(([o,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(i[o]=fn(t.children[o],n,s))}),Object.entries(t.children).forEach(([o,s])=>{r[o]===void 0&&(i[o]=s)}),new v(t.segments,i)}}function di(t,n,e){let r=0,i=n,o={match:!1,pathIndex:0,commandIndex:0};for(;i<t.segments.length;){if(r>=e.length)return o;let s=t.segments[i],a=e[r];if(_e(a))break;let c=`${a}`,u=r<e.length-1?e[r+1]:null;if(i>0&&c===void 0)break;if(c&&u&&typeof u=="object"&&u.outlets===void 0){if(!Qr(c,u,s))return o;r+=2}else{if(!Qr(c,{},s))return o;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function Vt(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i<e.length;){let o=e[i];if(_e(o)){let c=hi(o.outlets);return new v(r,c)}if(i===0&&ot(e[0])){let c=t.segments[n];r.push(new Q(c.path,Wr(e[0]))),i++;continue}let s=_e(o)?o.outlets[f]:`${o}`,a=i<e.length-1?e[i+1]:null;s&&a&&ot(a)?(r.push(new Q(s,Wr(a))),i+=2):(r.push(new Q(s,{})),i++)}return new v(r,{})}function hi(t){let n={};return Object.entries(t).forEach(([e,r])=>{typeof r=="string"&&(r=[r]),r!==null&&(n[e]=Vt(new v([],{}),0,r))}),n}function Wr(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function Qr(t,n,e){return t==e.path&&z(n,e.parameters)}var Te="imperative",S=(function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t})(S||{}),N=class{id;url;constructor(n,e){this.id=n,this.url=e}},ie=class extends N{type=S.NavigationStart;navigationTrigger;restoredState;constructor(n,e,r="imperative",i=null){super(n,e),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},j=class extends N{urlAfterRedirects;type=S.NavigationEnd;constructor(n,e,r){super(n,e),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},b=(function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t})(b||{}),Ue=(function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t})(Ue||{}),P=class extends N{reason;code;type=S.NavigationCancel;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}};function pn(t){return t instanceof P&&(t.code===b.Redirect||t.code===b.SupersededByNewNavigation)}var B=class extends N{reason;code;type=S.NavigationSkipped;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}},oe=class extends N{error;target;type=S.NavigationError;constructor(n,e,r,i){super(n,e),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},Oe=class extends N{urlAfterRedirects;state;type=S.RoutesRecognized;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},st=class extends N{urlAfterRedirects;state;type=S.GuardsCheckStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},ct=class extends N{urlAfterRedirects;state;shouldActivate;type=S.GuardsCheckEnd;constructor(n,e,r,i,o){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=o}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},ut=class extends N{urlAfterRedirects;state;type=S.ResolveStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},lt=class extends N{urlAfterRedirects;state;type=S.ResolveEnd;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},dt=class{route;type=S.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},ht=class{route;type=S.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},ft=class{snapshot;type=S.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},pt=class{snapshot;type=S.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},gt=class{snapshot;type=S.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},vt=class{snapshot;type=S.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}};var he=class{},Pe=class{},fe=class{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function fi(t){return!(t instanceof he)&&!(t instanceof fe)&&!(t instanceof Pe)}var mt=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new ye(this.rootInjector)}},ye=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new mt(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(r){return new(r||t)(We(W))};static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),yt=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=Gt(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=Gt(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=Wt(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return Wt(n,this._root).map(e=>e.value)}};function Gt(t,n){if(t===n.value)return n;for(let e of n.children){let r=Gt(t,e);if(r)return r}return null}function Wt(t,n){if(t===n.value)return[n];for(let e of n.children){let r=Wt(t,e);if(r.length)return r.unshift(n),r}return[]}var D=class{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function ue(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var Le=class extends yt{snapshot;constructor(n,e){super(n),this.snapshot=e,ir(this,n)}toString(){return this.snapshot.toString()}};function gn(t,n){let e=pi(t,n),r=new _([new Q("",{})]),i=new _({}),o=new _({}),s=new _({}),a=new _(""),c=new V(r,i,s,a,o,f,t,e.root);return c.snapshot=e.root,new Le(new D(c,[]),e)}function pi(t,n){let e={},r={},i={},s=new pe([],e,i,"",r,f,t,null,{},n);return new xe("",new D(s,[]))}var V=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,r,i,o,s,a,c){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=o,this.outlet=s,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe(I(u=>u[$e]))??g(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(I(n=>ne(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(I(n=>ne(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function nr(t,n,e="emptyOnly"){let r,{routeConfig:i}=t;return n!==null&&(e==="always"||i?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:l(l({},n.params),t.params),data:l(l({},n.data),t.data),resolve:l(l(l(l({},t.data),n.data),i?.data),t._resolvedData)}:r={params:l({},t.params),data:l({},t.data),resolve:l(l({},t.data),t._resolvedData??{})},i&&mn(i)&&(r.resolve[$e]=i.title),r}var pe=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;get title(){return this.data?.[$e]}constructor(n,e,r,i,o,s,a,c,u,d){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o,this.outlet=s,this.component=a,this.routeConfig=c,this._resolve=u,this._environmentInjector=d}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=ne(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=ne(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${e}')`}},xe=class extends yt{url;constructor(n,e){super(e),this.url=n,ir(this,e)}toString(){return vn(this._root)}};function ir(t,n){n.value._routerState=t,n.children.forEach(e=>ir(t,e))}function vn(t){let n=t.children.length>0?` { ${t.children.map(vn).join(", ")} } `:"";return`${t.value}${n}`}function $t(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,z(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),z(n.params,e.params)||t.paramsSubject.next(e.params),Fn(n.url,e.url)||t.urlSubject.next(e.url),z(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Qt(t,n){let e=z(t.params,n.params)&&Wn(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||Qt(t.parent,n.parent))}function mn(t){return typeof t.title=="string"||t.title===null}var yn=new T(""),or=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=f;activateEvents=new te;deactivateEvents=new te;attachEvents=new te;detachEvents=new te;routerOutletData=Fr();parentContexts=h(ye);location=h(Ar);changeDetector=h(Ye);inputBinder=h(wt,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new C(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new C(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new C(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new C(4013,!1);this._activatedRoute=e;let i=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new Kt(e,a,i.injector,this.routerOutletData);this.activated=i.createComponent(s,{index:i.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(r){return new(r||t)};static \u0275dir=Ie({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[be]})}return t})(),Kt=class{route;childContexts;parent;outletData;constructor(n,e,r,i){this.route=n,this.childContexts=e,this.parent=r,this.outletData=i}get(n,e){return n===V?this.route:n===ye?this.childContexts:n===yn?this.outletData:this.parent.get(n,e)}},wt=new T("");var ar=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275cmp=Tr({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(r,i){r&1&&Pr(0,"router-outlet")},dependencies:[or],encapsulation:2})}return t})();function sr(t){let n=t.children&&t.children.map(sr),e=n?A(l({},t),{children:n}):l({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==f&&(e.component=ar),e}function gi(t,n,e){let r=je(t,n._root,e?e._root:void 0);return new Le(r,n)}function je(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let r=e.value;r._futureSnapshot=n.value;let i=vi(t,n,e);return new D(r,i)}else{if(t.shouldAttach(n.value)){let o=t.retrieve(n.value);if(o!==null){let s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>je(t,a)),s}}let r=mi(n.value),i=n.children.map(o=>je(t,o));return new D(r,i)}}function vi(t,n,e){return n.children.map(r=>{for(let i of e.children)if(t.shouldReuseRoute(r.value,i.value.snapshot))return je(t,r,i);return je(t,r)})}function mi(t){return new V(new _(t.url),new _(t.params),new _(t.queryParams),new _(t.fragment),new _(t.data),t.outlet,t.component,t)}var ge=class{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}},Rn="ngNavigationCancelingError";function Rt(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=Y(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=Sn(!1,b.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function Sn(t,n){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[Rn]=!0,e.cancellationCode=n,e}function yi(t){return Cn(t)&&Y(t.url)}function Cn(t){return!!t&&t[Rn]}var Yt=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,r,i,o){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=o}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),$t(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=ue(e);n.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,i[s],r),delete i[s]}),Object.values(i).forEach(o=>{this.deactivateRouteAndItsChildren(o,r)})}deactivateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if(i===o)if(i.component){let s=r.getContext(i.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,r);else o&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=ue(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);if(r&&r.outlet){let s=r.outlet.detach(),a=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=ue(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,e,r){let i=ue(e);n.children.forEach(o=>{this.activateRoutes(o,i[o.value.outlet],r),this.forwardEvent(new vt(o.value.snapshot))}),n.children.length&&this.forwardEvent(new pt(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if($t(i),i===o)if(i.component){let s=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let s=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let a=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),$t(a.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=i,s.outlet&&s.outlet.activateWith(i,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,r)}},St=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},de=class{component;route;constructor(n,e){this.component=n,this.route=e}};function Ri(t,n,e){let r=t._root,i=n?n._root:null;return Ae(r,i,e,[r.value])}function Si(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function Re(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t=="function"&&!Sr(t)?t:n.get(t):r}function Ae(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=ue(n);return t.children.forEach(s=>{Ci(s,o[s.value.outlet],e,r.concat([s.value]),i),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,a])=>De(a,e.getContext(s),i)),i}function Ci(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let c=wi(s,o,o.routeConfig.runGuardsAndResolvers);c?i.canActivateChecks.push(new St(r)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?Ae(t,n,a?a.children:null,r,i):Ae(t,n,e,r,i),c&&a&&a.outlet&&a.outlet.isActivated&&i.canDeactivateChecks.push(new de(a.outlet.component,s))}else s&&De(n,a,i),i.canActivateChecks.push(new St(r)),o.component?Ae(t,null,a?a.children:null,r,i):Ae(t,null,e,r,i);return i}function wi(t,n,e){if(typeof e=="function")return O(n._environmentInjector,()=>e(t,n));switch(e){case"pathParamsChange":return!re(t.url,n.url);case"pathParamsOrQueryParamsChange":return!re(t.url,n.url)||!z(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Qt(t,n)||!z(t.queryParams,n.queryParams);default:return!Qt(t,n)}}function De(t,n,e){let r=ue(t),i=t.value;Object.entries(r).forEach(([o,s])=>{i.component?n?De(s,n.children.getContext(o),e):De(s,null,e):De(s,n,e)}),i.component?n&&n.outlet&&n.outlet.isActivated?e.canDeactivateChecks.push(new de(n.outlet.component,i)):e.canDeactivateChecks.push(new de(null,i)):e.canDeactivateChecks.push(new de(null,i))}function ze(t){return typeof t=="function"}function bi(t){return typeof t=="boolean"}function Ii(t){return t&&ze(t.canLoad)}function Ei(t){return t&&ze(t.canActivate)}function Ai(t){return t&&ze(t.canActivateChild)}function Mi(t){return t&&ze(t.canDeactivate)}function Ti(t){return t&&ze(t.canMatch)}function wn(t){return t instanceof pr||t?.name==="EmptyError"}var et=Symbol("INITIAL_VALUE");function ve(){return k(t=>gr(t.map(n=>n.pipe(ce(1),yr(et)))).pipe(I(n=>{for(let e of n)if(e!==!0){if(e===et)return et;if(e===!1||Di(e))return e}return!0}),ee(n=>n!==et),ce(1)))}function Di(t){return Y(t)||t instanceof ge}function bn(t){return t.aborted?g(void 0).pipe(ce(1)):new hr(n=>{let e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function In(t){return Ge(bn(t))}function Ni(t){return F(n=>{let{targetSnapshot:e,currentSnapshot:r,guards:{canActivateChecks:i,canDeactivateChecks:o}}=n;return o.length===0&&i.length===0?g(A(l({},n),{guardsResult:!0})):_i(o,e,r).pipe(F(s=>s&&bi(s)?Ui(e,i,t):g(s)),I(s=>A(l({},n),{guardsResult:s})))})}function _i(t,n,e){return M(t).pipe(F(r=>ji(r.component,r.route,e,n)),G(r=>r!==!0,!0))}function Ui(t,n,e){return M(n).pipe(Ve(r=>vr(Pi(r.route.parent,e),Oi(r.route,e),xi(t,r.path),Li(t,r.route))),G(r=>r!==!0,!0))}function Oi(t,n){return t!==null&&n&&n(new gt(t)),g(!0)}function Pi(t,n){return t!==null&&n&&n(new ft(t)),g(!0)}function Li(t,n){let e=n.routeConfig?n.routeConfig.canActivate:null;if(!e||e.length===0)return g(!0);let r=e.map(i=>qe(()=>{let o=n._environmentInjector,s=Re(i,o),a=Ei(s)?s.canActivate(n,t):O(o,()=>s(n,t));return ae(a).pipe(G())}));return g(r).pipe(ve())}function xi(t,n){let e=n[n.length-1],i=n.slice(0,n.length-1).reverse().map(o=>Si(o)).filter(o=>o!==null).map(o=>qe(()=>{let s=o.guards.map(a=>{let c=o.node._environmentInjector,u=Re(a,c),d=Ai(u)?u.canActivateChild(e,t):O(c,()=>u(e,t));return ae(d).pipe(G())});return g(s).pipe(ve())}));return g(i).pipe(ve())}function ji(t,n,e,r){let i=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!i||i.length===0)return g(!0);let o=i.map(s=>{let a=n._environmentInjector,c=Re(s,a),u=Mi(c)?c.canDeactivate(t,n,e,r):O(a,()=>c(t,n,e,r));return ae(u).pipe(G())});return g(o).pipe(ve())}function ki(t,n,e,r,i){let o=n.canLoad;if(o===void 0||o.length===0)return g(!0);let s=o.map(a=>{let c=Re(a,t),u=Ii(c)?c.canLoad(n,e):O(t,()=>c(n,e)),d=ae(u);return i?d.pipe(In(i)):d});return g(s).pipe(ve(),En(r))}function En(t){return dr(L(n=>{if(typeof n!="boolean")throw Rt(t,n)}),I(n=>n===!0))}function $i(t,n,e,r,i,o){let s=n.canMatch;if(!s||s.length===0)return g(!0);let a=s.map(c=>{let u=Re(c,t),d=Ti(u)?u.canMatch(n,e,i):O(t,()=>u(n,e,i));return ae(d).pipe(In(o))});return g(a).pipe(ve(),En(r))}var q=class t extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,t.prototype)}},ke=class t extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,t.prototype)}};function zi(t){throw new C(4e3,!1)}function Hi(t){throw Sn(!1,b.GuardRejected)}var Zt=class{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}async lineralizeSegments(n,e){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return r;if(i.numberOfChildren>1||!i.children[f])throw zi(`${n.redirectTo}`);i=i.children[f]}}async applyRedirectCommands(n,e,r,i,o){let s=await Fi(e,i,o);if(s instanceof E)throw new ke(s);let a=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),n,r);if(s[0]==="/")throw new ke(a);return a}applyRedirectCreateUrlTree(n,e,r,i){let o=this.createSegmentGroup(n,e.root,r,i);return new E(o,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,o])=>{if(typeof o=="string"&&o[0]===":"){let a=o.substring(1);r[i]=e[a]}else r[i]=o}),r}createSegmentGroup(n,e,r,i){let o=this.createSegments(n,e.segments,r,i),s={};return Object.entries(e.children).forEach(([a,c])=>{s[a]=this.createSegmentGroup(n,c,r,i)}),new v(o,s)}createSegments(n,e,r,i){return e.map(o=>o.path[0]===":"?this.findPosParam(n,o,i):this.findOrReturn(o,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new C(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}};function Fi(t,n,e){if(typeof t=="string")return Promise.resolve(t);let r=t;return it(ae(O(e,()=>r(n))))}function qi(t,n){return t.providers&&!t._injector&&(t._injector=Lt(t.providers,n,`Route: ${t.path}`)),t._injector??n}function x(t){return t.outlet||f}function Bi(t,n){let e=t.filter(r=>x(r)===n);return e.push(...t.filter(r=>x(r)!==n)),e}var Jt={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function An(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function Vi(t,n,e,r,i,o,s){let a=Mn(t,n,e);if(!a.matched)return g(a);let c=An(o(a));return r=qi(n,r),$i(r,n,e,i,c,s).pipe(I(u=>u===!0?a:l({},Jt)))}function Mn(t,n,e){if(n.path==="")return n.pathMatch==="full"&&(t.hasChildren()||e.length>0)?l({},Jt):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||Zr)(e,t,n);if(!i)return l({},Jt);let o={};Object.entries(i.posParams??{}).forEach(([a,c])=>{o[a]=c.path});let s=i.consumed.length>0?l(l({},o),i.consumed[i.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:s,positionalParamSegments:i.posParams??{}}}function Kr(t,n,e,r,i){return e.length>0&&Qi(t,e,r,i)?{segmentGroup:new v(n,Wi(r,new v(e,t.children))),slicedSegments:[]}:e.length===0&&Ki(t,e,r)?{segmentGroup:new v(t.segments,Gi(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new v(t.segments,t.children),slicedSegments:e}}function Gi(t,n,e,r){let i={};for(let o of e)if(bt(t,n,o)&&!r[x(o)]){let s=new v([],{});i[x(o)]=s}return l(l({},r),i)}function Wi(t,n){let e={};e[f]=n;for(let r of t)if(r.path===""&&x(r)!==f){let i=new v([],{});e[x(r)]=i}return e}function Qi(t,n,e,r){return e.some(i=>!bt(t,n,i)||!(x(i)!==f)?!1:!(r!==void 0&&x(i)===r))}function Ki(t,n,e){return e.some(r=>bt(t,n,r))}function bt(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch==="full"?!1:e.path===""}function Yi(t,n,e){return n.length===0&&!t.children[e]}var Xt=class{};async function Zi(t,n,e,r,i,o,s="emptyOnly",a){return new er(t,n,e,r,i,s,o,a).recognize()}var Ji=31,er=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,r,i,o,s,a,c){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.abortSignal=c,this.applyRedirects=new Zt(this.urlSerializer,this.urlTree)}noMatchError(n){return new C(4002,`'${n.segmentGroup}'`)}async recognize(){let n=Kr(this.urlTree.root,[],[],this.config).segmentGroup,{children:e,rootSnapshot:r}=await this.match(n),i=new D(r,e),o=new xe("",i),s=un(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),{state:o,tree:s}}async match(n){let e=new pe([],Object.freeze({}),Object.freeze(l({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),f,this.rootComponentType,null,{},this.injector);try{return{children:await this.processSegmentGroup(this.injector,this.config,n,f,e),rootSnapshot:e}}catch(r){if(r instanceof ke)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof q?this.noMatchError(r):r}}async processSegmentGroup(n,e,r,i,o){if(r.segments.length===0&&r.hasChildren())return this.processChildren(n,e,r,o);let s=await this.processSegment(n,e,r,r.segments,i,!0,o);return s instanceof D?[s]:[]}async processChildren(n,e,r,i){let o=[];for(let c of Object.keys(r.children))c==="primary"?o.unshift(c):o.push(c);let s=[];for(let c of o){let u=r.children[c],d=Bi(e,c),p=await this.processSegmentGroup(n,d,u,c,i);s.push(...p)}let a=Tn(s);return Xi(a),a}async processSegment(n,e,r,i,o,s,a){for(let c of e)try{return await this.processSegmentAgainstRoute(c._injector??n,e,c,r,i,o,s,a)}catch(u){if(u instanceof q||wn(u))continue;throw u}if(Yi(r,i,o))return new Xt;throw new q(r)}async processSegmentAgainstRoute(n,e,r,i,o,s,a,c){if(x(r)!==s&&(s===f||!bt(i,o,r)))throw new q(i);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(n,i,r,o,s,c);if(this.allowRedirects&&a)return this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,o,s,c);throw new q(i)}async expandSegmentAgainstRouteUsingRedirect(n,e,r,i,o,s,a){let{matched:c,parameters:u,consumedSegments:d,positionalParamSegments:p,remainingSegments:m}=Mn(e,i,o);if(!c)throw new q(e);typeof i.redirectTo=="string"&&i.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>Ji&&(this.allowRedirects=!1));let Z=this.createSnapshot(n,i,o,u,a);if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let H=await this.applyRedirects.applyRedirectCommands(d,i.redirectTo,p,An(Z),n),J=await this.applyRedirects.lineralizeSegments(i,H);return this.processSegment(n,r,e,J.concat(m),s,!1,a)}createSnapshot(n,e,r,i,o){let s=new pe(r,i,Object.freeze(l({},this.urlTree.queryParams)),this.urlTree.fragment,to(e),x(e),e.component??e._loadedComponent??null,e,ro(e),n),a=nr(s,o,this.paramsInheritanceStrategy);return s.params=Object.freeze(a.params),s.data=Object.freeze(a.data),s}async matchSegmentAgainstRoute(n,e,r,i,o,s){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let a=Fe=>this.createSnapshot(n,r,Fe.consumedSegments,Fe.parameters,s),c=await it(Vi(e,r,i,n,this.urlSerializer,a,this.abortSignal));if(r.path==="**"&&(e.children={}),!c?.matched)throw new q(e);n=r._injector??n;let{routes:u}=await this.getChildConfig(n,r,i),d=r._loadedInjector??n,{parameters:p,consumedSegments:m,remainingSegments:Z}=c,H=this.createSnapshot(n,r,m,p,s),{segmentGroup:J,slicedSegments:Ce}=Kr(e,m,Z,u,o);if(Ce.length===0&&J.hasChildren()){let Fe=await this.processChildren(d,u,J,H);return new D(H,Fe)}if(u.length===0&&Ce.length===0)return new D(H,[]);let Mt=x(r)===o,we=await this.processSegment(d,u,J,Ce,Mt?f:o,!0,H);return new D(H,we instanceof D?[we]:[])}async getChildConfig(n,e,r){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(e._loadedRoutes!==void 0){let o=e._loadedNgModuleFactory;return o&&!e._loadedInjector&&(e._loadedInjector=o.create(n).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(await it(ki(n,e,r,this.urlSerializer,this.abortSignal))){let o=await this.configLoader.loadChildren(n,e);return e._loadedRoutes=o.routes,e._loadedInjector=o.injector,e._loadedNgModuleFactory=o.factory,o}throw Hi(e)}return{routes:[],injector:n}}};function Xi(t){t.sort((n,e)=>n.value.outlet===f?-1:e.value.outlet===f?1:n.value.outlet.localeCompare(e.value.outlet))}function eo(t){let n=t.value.routeConfig;return n&&n.path===""}function Tn(t){let n=[],e=new Set;for(let r of t){if(!eo(r)){n.push(r);continue}let i=n.find(o=>r.value.routeConfig===o.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=Tn(r.children);n.push(new D(r.value,i))}return n.filter(r=>!e.has(r))}function to(t){return t.data||{}}function ro(t){return t.resolve||{}}function no(t,n,e,r,i,o,s){return F(async a=>{let{state:c,tree:u}=await Zi(t,n,e,r,a.extractedUrl,i,o,s);return A(l({},a),{targetSnapshot:c,urlAfterRedirects:u})})}function io(t){return F(n=>{let{targetSnapshot:e,guards:{canActivateChecks:r}}=n;if(!r.length)return g(n);let i=new Set(r.map(a=>a.route)),o=new Set;for(let a of i)if(!o.has(a))for(let c of Dn(a))o.add(c);let s=0;return M(o).pipe(Ve(a=>i.has(a)?oo(a,e,t):(a.data=nr(a,a.parent,t).resolve,g(void 0))),L(()=>s++),Nt(1),F(a=>s===o.size?g(n):U))})}function Dn(t){let n=t.children.map(e=>Dn(e)).flat();return[t,...n]}function oo(t,n,e){let r=t.routeConfig,i=t._resolve;return r?.title!==void 0&&!mn(r)&&(i[$e]=r.title),qe(()=>(t.data=nr(t,t.parent,e).resolve,ao(i,t,n).pipe(I(o=>(t._resolvedData=o,t.data=l(l({},t.data),o),null)))))}function ao(t,n,e){let r=Ht(t);if(r.length===0)return g({});let i={};return M(r).pipe(F(o=>so(t[o],n,e).pipe(G(),L(s=>{if(s instanceof ge)throw Rt(new K,s);i[o]=s}))),Nt(1),I(()=>i),Be(o=>wn(o)?U:fr(o)))}function so(t,n,e){let r=n._environmentInjector,i=Re(t,r),o=i.resolve?i.resolve(n,e):O(r,()=>i(n,e));return ae(o)}function Yr(t){return k(n=>{let e=t(n);return e?M(e).pipe(I(()=>n)):g(n)})}var cr=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(o=>o.outlet===f);return r}getResolvedTitleForRoute(e){return e.data[$e]}static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:()=>h(Nn),providedIn:"root"})}return t})(),Nn=(()=>{class t extends cr{title;constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static \u0275fac=function(r){return new(r||t)(We(Br))};static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Se=new T("",{factory:()=>({})}),He=new T(""),_n=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=h($r);async loadComponent(e,r){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=(async()=>{try{let o=await Xr(O(e,()=>r.loadComponent())),s=await Pn(On(o));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=s,s}finally{this.componentLoaders.delete(r)}})();return this.componentLoaders.set(r,i),i}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=(async()=>{try{let o=await Un(r,this.compiler,e,this.onLoadEndListener);return r._loadedRoutes=o.routes,r._loadedInjector=o.injector,r._loadedNgModuleFactory=o.factory,o}finally{this.childrenLoaders.delete(r)}})();return this.childrenLoaders.set(r,i),i}static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();async function Un(t,n,e,r){let i=await Xr(O(e,()=>t.loadChildren())),o=await Pn(On(i)),s;o instanceof Mr||Array.isArray(o)?s=o:s=await n.compileModuleAsync(o),r&&r(t);let a,c,u=!1,d;return Array.isArray(s)?(c=s,u=!0):(a=s.create(e).injector,d=s,c=a.get(He,[],{optional:!0,self:!0}).flat()),{routes:c.map(sr),injector:a,factory:d}}function co(t){return t&&typeof t=="object"&&"default"in t}function On(t){return co(t)?t.default:t}async function Pn(t){return t}var It=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:()=>h(uo),providedIn:"root"})}return t})(),uo=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ln=new T("");var lo=()=>{},xn=new T(""),jn=(()=>{class t{currentNavigation=R(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=R(null);events=new X;transitionAbortWithErrorSubject=new X;configLoader=h(_n);environmentInjector=h(W);destroyRef=h(_t);urlSerializer=h(me);rootContexts=h(ye);location=h(Je);inputBindingEnabled=h(wt,{optional:!0})!==null;titleStrategy=h(cr);options=h(Se,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=h(It);createViewTransition=h(Ln,{optional:!0});navigationErrorHandler=h(xn,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>g(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=i=>this.events.next(new dt(i)),r=i=>this.events.next(new ht(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;y(()=>{this.transitions?.next(A(l({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r,routesRecognizeHandler:{},beforeActivateHandler:{}}))})}setupNavigations(e){return this.transitions=new _(null),this.transitions.pipe(ee(r=>r!==null),k(r=>{let i=!1,o=new AbortController,s=()=>!i&&this.currentTransition?.id===r.id;return g(r).pipe(k(a=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",b.SupersededByNewNavigation),U;this.currentTransition=r;let c=this.lastSuccessfulNavigation();this.currentNavigation.set({id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:typeof a.extras.browserUrl=="string"?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:c?A(l({},c),{previousNavigation:null}):null,abort:()=>o.abort(),routesRecognizeHandler:a.routesRecognizeHandler,beforeActivateHandler:a.beforeActivateHandler});let u=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),d=a.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!u&&d!=="reload")return this.events.next(new B(a.id,this.urlSerializer.serialize(a.rawUrl),"",Ue.IgnoredSameUrlNavigation)),a.resolve(!1),U;if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return g(a).pipe(k(p=>(this.events.next(new ie(p.id,this.urlSerializer.serialize(p.extractedUrl),p.source,p.restoredState)),p.id!==this.navigationId?U:Promise.resolve(p))),no(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,o.signal),L(p=>{r.targetSnapshot=p.targetSnapshot,r.urlAfterRedirects=p.urlAfterRedirects,this.currentNavigation.update(m=>(m.finalUrl=p.urlAfterRedirects,m)),this.events.next(new Pe)}),k(p=>M(r.routesRecognizeHandler.deferredHandle??g(void 0)).pipe(I(()=>p))),L(()=>{let p=new Oe(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(p)}));if(u&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){let{id:p,extractedUrl:m,source:Z,restoredState:H,extras:J}=a,Ce=new ie(p,this.urlSerializer.serialize(m),Z,H);this.events.next(Ce);let Mt=gn(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=r=A(l({},a),{targetSnapshot:Mt,urlAfterRedirects:m,extras:A(l({},J),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(we=>(we.finalUrl=m,we)),g(r)}else return this.events.next(new B(a.id,this.urlSerializer.serialize(a.extractedUrl),"",Ue.IgnoredByUrlHandlingStrategy)),a.resolve(!1),U}),I(a=>{let c=new st(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);return this.events.next(c),this.currentTransition=r=A(l({},a),{guards:Ri(a.targetSnapshot,a.currentSnapshot,this.rootContexts)}),r}),Ni(a=>this.events.next(a)),k(a=>{if(r.guardsResult=a.guardsResult,a.guardsResult&&typeof a.guardsResult!="boolean")throw Rt(this.urlSerializer,a.guardsResult);let c=new ct(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);if(this.events.next(c),!s())return U;if(!a.guardsResult)return this.cancelNavigationTransition(a,"",b.GuardRejected),U;if(a.guards.canActivateChecks.length===0)return g(a);let u=new ut(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);if(this.events.next(u),!s())return U;let d=!1;return g(a).pipe(io(this.paramsInheritanceStrategy),L({next:()=>{d=!0;let p=new lt(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(p)},complete:()=>{d||this.cancelNavigationTransition(a,"",b.NoDataFromResolver)}}))}),Yr(a=>{let c=d=>{let p=[];if(d.routeConfig?._loadedComponent)d.component=d.routeConfig?._loadedComponent;else if(d.routeConfig?.loadComponent){let m=d._environmentInjector;p.push(this.configLoader.loadComponent(m,d.routeConfig).then(Z=>{d.component=Z}))}for(let m of d.children)p.push(...c(m));return p},u=c(a.targetSnapshot.root);return u.length===0?g(a):M(Promise.all(u).then(()=>a))}),Yr(()=>this.afterPreactivation()),k(()=>{let{currentSnapshot:a,targetSnapshot:c}=r,u=this.createViewTransition?.(this.environmentInjector,a.root,c.root);return u?M(u).pipe(I(()=>r)):g(r)}),ce(1),k(a=>{let c=gi(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);this.currentTransition=r=a=A(l({},a),{targetRouterState:c}),this.currentNavigation.update(d=>(d.targetRouterState=c,d)),this.events.next(new he);let u=r.beforeActivateHandler.deferredHandle;return u?M(u.then(()=>a)):g(a)}),L(a=>{new Yt(e.routeReuseStrategy,r.targetRouterState,r.currentRouterState,c=>this.events.next(c),this.inputBindingEnabled).activate(this.rootContexts),s()&&(i=!0,this.currentNavigation.update(c=>(c.abort=lo,c)),this.lastSuccessfulNavigation.set(y(this.currentNavigation)),this.events.next(new j(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0))}),Ge(bn(o.signal).pipe(ee(()=>!i&&!r.targetRouterState),L(()=>{this.cancelNavigationTransition(r,o.signal.reason+"",b.Aborted)}))),L({complete:()=>{i=!0}}),Ge(this.transitionAbortWithErrorSubject.pipe(L(a=>{throw a}))),mr(()=>{o.abort(),i||this.cancelNavigationTransition(r,"",b.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),Be(a=>{if(i=!0,this.destroyed)return r.resolve(!1),U;if(Cn(a))this.events.next(new P(r.id,this.urlSerializer.serialize(r.extractedUrl),a.message,a.cancellationCode)),yi(a)?this.events.next(new fe(a.url,a.navigationBehaviorOptions)):r.resolve(!1);else{let c=new oe(r.id,this.urlSerializer.serialize(r.extractedUrl),a,r.targetSnapshot??void 0);try{let u=O(this.environmentInjector,()=>this.navigationErrorHandler?.(c));if(u instanceof ge){let{message:d,cancellationCode:p}=Rt(this.urlSerializer,u);this.events.next(new P(r.id,this.urlSerializer.serialize(r.extractedUrl),d,p)),this.events.next(new fe(u.redirectTo,u.navigationBehaviorOptions))}else throw this.events.next(c),a}catch(u){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(u)}}return U}))}))}cancelNavigationTransition(e,r,i){let o=new P(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(o),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=y(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return e.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function ho(t){return t!==Te}var kn=new T("");var $n=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:()=>h(fo),providedIn:"root"})}return t})(),Ct=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}shouldDestroyInjector(n){return!0}},fo=(()=>{class t extends Ct{static \u0275fac=(()=>{let e;return function(i){return(e||(e=Ut(t)))(i||t)}})();static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Et=(()=>{class t{urlSerializer=h(me);options=h(Se,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=h(Je);urlHandlingStrategy=h(It);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new E;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:r,targetBrowserUrl:i}){let o=e!==void 0?this.urlHandlingStrategy.merge(e,r):r,s=i??o;return s instanceof E?this.urlSerializer.serialize(s):s}routerUrlState(e){return e?.targetBrowserUrl===void 0||e?.finalUrl===void 0?{}:{\u0275routerUrl:this.urlSerializer.serialize(e.finalUrl)}}commitTransition({targetRouterState:e,finalUrl:r,initialUrl:i}){r&&e?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=e):this.rawUrlTree=i}routerState=gn(null,h(W));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:()=>h(po),providedIn:"root"})}return t})(),po=(()=>{class t extends Et{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type==="popstate"&&setTimeout(()=>{e(r.url,r.state,"popstate",{replaceUrl:!0})})})}handleRouterEvent(e,r){e instanceof ie?this.updateStateMemento():e instanceof B?this.commitTransition(r):e instanceof Oe?this.urlUpdateStrategy==="eager"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof he?(this.commitTransition(r),this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof P&&!pn(e)?this.restoreHistory(r):e instanceof oe?this.restoreHistory(r,!0):e instanceof j&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,r){let{extras:i,id:o}=r,{replaceUrl:s,state:a}=i;if(this.location.isCurrentPathEqualTo(e)||s){let c=this.browserPageId,u=l(l({},a),this.generateNgRouterState(o,c,r));this.location.replaceState(e,"",u)}else{let c=l(l({},a),this.generateNgRouterState(o,this.browserPageId+1,r));this.location.go(e,"",c)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,o=this.currentPageId-i;o!==0?this.location.historyGo(o):this.getCurrentUrlTree()===e.finalUrl&&o===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r,i){return this.canceledNavigationResolution==="computed"?l({navigationId:e,\u0275routerPageId:r},this.routerUrlState(i)):l({navigationId:e},this.routerUrlState(i))}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Ut(t)))(i||t)}})();static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function ur(t,n){t.events.pipe(ee(e=>e instanceof j||e instanceof P||e instanceof oe||e instanceof B),I(e=>e instanceof j||e instanceof B?0:(e instanceof P?e.code===b.Redirect||e.code===b.SupersededByNewNavigation:!1)?2:1),ee(e=>e!==2),ce(1)).subscribe(()=>{n()})}var se=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=h(Dr);stateManager=h(Et);options=h(Se,{optional:!0})||{};pendingTasks=h(br);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=h(jn);urlSerializer=h(me);location=h(Je);urlHandlingStrategy=h(It);injector=h(W);_events=new X;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=h($n);injectorCleanup=h(kn,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=h(He,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!h(wt,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new lr;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,o=y(this.navigationTransitions.currentNavigation);if(i!==null&&o!==null){if(this.stateManager.handleRouterEvent(r,o),r instanceof P&&r.code!==b.Redirect&&r.code!==b.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof j)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(r instanceof fe){let s=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),c=l({scroll:i.extras.scroll,browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy==="eager"||ho(i.source)},s);this.scheduleNavigation(a,Te,null,c,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}fi(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),Te,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r,i,o)=>{this.navigateToSyncWithBrowser(e,i,r,o)})}navigateToSyncWithBrowser(e,r,i,o){let s=i?.navigationId?i:null,a=i?.\u0275routerUrl??e;if(i?.\u0275routerUrl&&(o=A(l({},o),{browserUrl:e})),i){let u=l({},i);delete u.navigationId,delete u.\u0275routerPageId,delete u.\u0275routerUrl,Object.keys(u).length!==0&&(o.state=u)}let c=this.parseUrl(a);this.scheduleNavigation(c,r,s,o).catch(u=>{this.disposed||this.injector.get(Qe)(u)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return y(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(sr),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:o,fragment:s,queryParamsHandling:a,preserveFragment:c}=r,u=c?this.currentUrlTree.fragment:s,d=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":d=l(l({},this.currentUrlTree.queryParams),o);break;case"preserve":d=this.currentUrlTree.queryParams;break;default:d=o||null}d!==null&&(d=this.removeEmptyProps(d));let p;try{let m=i?i.snapshot:this.routerState.snapshot.root;p=ln(m)}catch{(typeof e[0]!="string"||e[0][0]!=="/")&&(e=[]),p=this.currentUrlTree.root}return dn(p,e,d,u??null,this.urlSerializer)}navigateByUrl(e,r={skipLocationChange:!1}){let i=Y(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(o,Te,null,r)}navigate(e,r={skipLocationChange:!1}){return go(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.console.warn(Rr(4018,!1)),this.urlSerializer.parse("/")}}isActive(e,r){let i;if(r===!0?i=l({},tr):r===!1?i=l({},Ne):i=l(l({},Ne),r),Y(e))return Ft(this.currentUrlTree,e,i);let o=this.parseUrl(e);return Ft(this.currentUrlTree,o,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,o])=>(o!=null&&(r[i]=o),r),{})}scheduleNavigation(e,r,i,o,s){if(this.disposed)return Promise.resolve(!1);let a,c,u;s?(a=s.resolve,c=s.reject,u=s.promise):u=new Promise((p,m)=>{a=p,c=m});let d=this.pendingTasks.add();return ur(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(d))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,resolve:a,reject:c,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(Promise.reject.bind(Promise))}static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function go(t){for(let n=0;n<t.length;n++)if(t[n]==null)throw new C(4008,!1)}var mo=(()=>{class t{router=h(se);stateManager=h(Et);fragment=R("");queryParams=R({});path=R("");serializer=h(me);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof j&&this.updateState()})}updateState(){let{fragment:e,root:r,queryParams:i}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(i),this.path.set(this.serializer.serialize(new E(r)))}static \u0275fac=function(r){return new(r||t)};static \u0275prov=w({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),At=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=h(new Hr("href"),{optional:!0});reactiveHref=zr(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return y(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return y(this._target)}_target=R(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return y(this._queryParams)}_queryParams=R(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return y(this._fragment)}_fragment=R(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return y(this._queryParamsHandling)}_queryParamsHandling=R(void 0);set state(e){this._state.set(e)}get state(){return y(this._state)}_state=R(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return y(this._info)}_info=R(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return y(this._relativeTo)}_relativeTo=R(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return y(this._preserveFragment)}_preserveFragment=R(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return y(this._skipLocationChange)}_skipLocationChange=R(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return y(this._replaceUrl)}_replaceUrl=R(!1);isAnchorElement;onChanges=new X;applicationErrorHandler=h(Qe);options=h(Se,{optional:!0});reactiveRouterState=h(mo);constructor(e,r,i,o,s,a){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=o,this.el=s,this.locationStrategy=a;let c=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c==="a"||c==="area"||!!(typeof customElements=="object"&&customElements.get(c)?.observedAttributes?.includes?.("href"))}setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=R(null);set routerLink(e){e==null?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(Y(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,r,i,o,s){let a=this._urlTree();if(a===null||this.isAnchorElement&&(e!==0||r||i||o||s||typeof this.target=="string"&&this.target!="_self"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,c)?.catch(u=>{this.applicationErrorHandler(u)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,r){let i=this.renderer,o=this.el.nativeElement;r!==null?i.setAttribute(o,e,r):i.removeAttribute(o,e)}_urlTree=Ke(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();let e=i=>i==="preserve"||i==="merge";(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();let r=this.routerLinkInput();return r===null||!this.router.createUrlTree?null:Y(r)?r:this.router.createUrlTree(r,{relativeTo:this._relativeTo()!==void 0?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()})},{equal:(e,r)=>this.computeHref(e)===this.computeHref(r)});get urlTree(){return y(this._urlTree)}computeHref(e){return e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null}static \u0275fac=function(r){return new(r||t)($(se),$(V),Ir("tabindex"),$(Pt),$(Ot),$(qr))};static \u0275dir=Ie({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(r,i){r&1&&Lr("click",function(s){return i.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),r&2&&Or("href",i.reactiveHref(),Er)("target",i._target())},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",Ze],skipLocationChange:[2,"skipLocationChange","skipLocationChange",Ze],replaceUrl:[2,"replaceUrl","replaceUrl",Ze],routerLink:"routerLink"},features:[be]})}return t})(),yo=(()=>{class t{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new te;link=h(At,{optional:!0});constructor(e,r,i,o){this.router=e,this.element=r,this.renderer=i,this.cdr=o,this.routerEventsSubscription=e.events.subscribe(s=>{s instanceof j&&this.update()})}ngAfterContentInit(){g(this.links.changes,g(null)).pipe(Dt()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=M(e).pipe(Dt()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){let r=Array.isArray(e)?e:e.split(" ");this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=Ro(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact??!1?l({},tr):l({},Ne);return i=>{let o=i.urlTree;return o?y(rr(o,e,r)):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static \u0275fac=function(r){return new(r||t)($(se),$(Ot),$(Pt),$(Ye))};static \u0275dir=Ie({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(r,i,o){if(r&1&&xr(o,At,5),r&2){let s;jr(s=kr())&&(i.links=s)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],features:[be]})}return t})();function Ro(t){let n=t;return!!(n.paths||n.matrixParams||n.queryParams||n.fragment)}var So=new T("");function Co(t,...n){return Cr([{provide:He,multi:!0,useValue:t},[],{provide:V,useFactory:wo},{provide:_r,multi:!0,useFactory:bo},n.map(e=>e.\u0275providers)])}function wo(){return h(se).routerState.root}function bo(){let t=h(wr);return n=>{let e=t.get(Ur);if(n!==e.components[0])return;let r=t.get(se),i=t.get(Io);t.get(Eo)===1&&r.initialNavigation(),t.get(Ao,null,{optional:!0})?.setUpPreloading(),t.get(So,null,{optional:!0})?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var Io=new T("",{factory:()=>new X}),Eo=new T("",{factory:()=>1});var Ao=new T("");export{V as a,or as b,se as c,At as d,yo as e,Co as f};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as E}from"./chunk-3IIIGRMT.js";import{a as v}from"./chunk-ZABKKHJ3.js";import{Aa as o,K as l,Ka as g,ab as e,bb as n,ib as a,qb as d,sb as t,tb as s,ub as x}from"./chunk-WVCKOJZL.js";var u=class c{api=l(v);theme=l(E);setTheme(m){this.theme.setPref(m)}static \u0275fac=function(r){return new(r||c)};static \u0275cmp=g({type:c,selectors:[["app-settings"]],decls:43,vars:9,consts:[[1,"page","scroll-y"],[1,"page-head"],[1,"title-block"],[1,"title"],[1,"sub"],[1,"setting-card"],[1,"card-title"],[1,"control-row"],[1,"lbl"],[1,"seg"],["type","button",3,"click"],[1,"mono","muted"],[1,"mono","val"],[1,"hint"],[1,"mono"]],template:function(r,i){r&1&&(e(0,"div",0)(1,"header",1)(2,"div",2)(3,"div",3),t(4,"Settings"),n(),e(5,"div",4),t(6,"Theme, API connection, build info"),n()()(),e(7,"section",5)(8,"div",6),t(9,"Appearance"),n(),e(10,"div",7)(11,"span",8),t(12,"Theme"),n(),e(13,"div",9)(14,"button",10),a("click",function(){return i.setTheme("dark")}),t(15,"Dark"),n(),e(16,"button",10),a("click",function(){return i.setTheme("light")}),t(17,"Light"),n(),e(18,"button",10),a("click",function(){return i.setTheme("system")}),t(19,"System"),n()(),e(20,"span",11),t(21),n()()(),e(22,"section",5)(23,"div",6),t(24,"API connection"),n(),e(25,"div",7)(26,"span",8),t(27,"Backend URL"),n(),e(28,"code",12),t(29),n(),e(30,"span",11),t(31),n()(),e(32,"div",13),t(33," Override with "),e(34,"code",14),t(35,"?api=http://host:port"),n(),t(36," in the URL, "),e(37,"code",14),t(38,"localStorage.specship.api"),n(),t(39,", or "),e(40,"code",14),t(41,"window.SPECSHIP_API_URL"),n(),t(42,". "),n()()()),r&2&&(o(14),d("active",i.theme.pref()==="dark"),o(2),d("active",i.theme.pref()==="light"),o(2),d("active",i.theme.pref()==="system"),o(3),x("currently: ",i.theme.effective()),o(8),s(i.api.apiBase??"not configured"),o(2),s(i.api.isConfigured?"\u25CF live":"\u25CF offline"))},styles:["[_nghost-%COMP%]{display:contents}.page[_ngcontent-%COMP%]{flex:1;padding:18px;max-width:760px}.title[_ngcontent-%COMP%]{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em}.sub[_ngcontent-%COMP%]{color:var(--text-secondary);margin-top:2px}.page-head[_ngcontent-%COMP%]{margin-bottom:16px}.muted[_ngcontent-%COMP%]{color:var(--text-muted);font-size:11.5px}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono)}.setting-card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:16px;margin-bottom:12px}.card-title[_ngcontent-%COMP%]{font-weight:600;font-size:13px;margin-bottom:12px}.control-row[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:center}.lbl[_ngcontent-%COMP%]{color:var(--text-secondary);font-size:12.5px;width:110px}.val[_ngcontent-%COMP%]{font-size:12px;color:var(--text-primary)}.seg[_ngcontent-%COMP%]{display:inline-flex;padding:2px;gap:2px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:7px}.seg[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:none;cursor:pointer;padding:4px 11px;font-size:11.5px;background:transparent;color:var(--text-muted);border-radius:5px;font-family:inherit}.seg[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{background:var(--bg-elevated);color:var(--text-primary)}.hint[_ngcontent-%COMP%]{margin-top:10px;color:var(--text-muted);font-size:11.5px;line-height:1.6}.hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:var(--bg-canvas);padding:1px 6px;border-radius:4px;border:1px solid var(--border-subtle)}"],changeDetection:0})};export{u as Settings};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as I}from"./chunk-4LHBWWP7.js";import{a as k}from"./chunk-ZABKKHJ3.js";import{g as j}from"./chunk-RP3WU5Y6.js";import{Aa as a,Eb as x,Gb as v,K as b,Ka as _,Kb as p,P as f,Q as E,Sa as w,Ta as y,Wa as l,Xa as g,aa as C,ab as r,ba as h,bb as o,db as M,ib as P,jb as m,pb as S,qb as u,sb as i,tb as c,ub as O,vb as D}from"./chunk-WVCKOJZL.js";var z=(s,t)=>t.id;function R(s,t){if(s&1){let e=M();r(0,"button",13),P("click",function(){let d=f(e).$implicit,H=m();return E(H.toggle(d.id))}),i(1),o()}if(s&2){let e=t.$implicit,n=m();u("active",n.sel().has(e.id)),a(),c(e.name)}}function F(s,t){if(s&1&&(r(0,"div",7)(1,"span",14),i(2,"\u2728"),o(),r(3,"div",10)(4,"span",15),i(5,"Most efficient:"),o(),r(6,"span",16),i(7),o(),r(8,"span",17),i(9),x(10,"number"),o()()()),s&2){let e=m();a(7),c(e.best().name),a(2),D(" \u2014 ",v(10,3,e.best().cacheHit*100,"1.0-0"),"% cache hit, ",e.fmt$(e.best().avgCost)," avg/session")}}function N(s,t){if(s&1&&(r(0,"div",18)(1,"span",19),i(2),o(),r(3,"span",20),i(4),o(),r(5,"span",20),i(6),o(),r(7,"span",20),i(8),o(),r(9,"span",20),i(10),x(11,"number"),o(),r(12,"span",21),i(13),o()()),s&2){let e,n=t.$implicit,d=m();u("best-row",((e=d.best())==null?null:e.id)===n.id),a(2),c(n.name),a(2),c(d.fmt$(n.cost)),a(2),c(n.sessions),a(2),c(d.fmt$(n.avgCost)),a(),S("color",d.cacheColor(n.cacheHit)),a(),O("",v(11,10,n.cacheHit*100,"1.0-0"),"%"),a(3),c(n.prompts)}}var $=class s{api=b(k);resource=I(this.api,()=>"/api/claude/compare");all=p(()=>(this.resource.state().data?.projects??[]).map(e=>({id:e.path||e.name,name:(e.name||"").split("/").filter(Boolean).pop()||e.name||"?",sessions:e.sessions||0,cost:e.cost||0,avgCost:e.avgCost||0,cacheHit:e.cacheHit||0,prompts:e.prompts||0})));sel=C(new Set);constructor(){h(()=>{let t=this.all();t.length>0&&this.sel().size===0&&this.sel.set(new Set(t.map(e=>e.id)))})}rows=p(()=>{let t=this.sel();return this.all().filter(e=>t.has(e.id))});best=p(()=>[...this.rows()].sort((e,n)=>n.cacheHit-n.avgCost/100-(e.cacheHit-e.avgCost/100))[0]??null);toggle(t){this.sel.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}cacheColor(t){return t>=.7?"var(--success)":t>=.5?"var(--warn)":"var(--error)"}fmt$(t){return"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=_({type:s,selectors:[["app-compare"]],decls:27,vars:1,consts:[[1,"page","scroll-y"],[1,"page-head"],[1,"title-block"],[1,"title"],[1,"sub"],[1,"chip-row"],["type","button",1,"chip",3,"active"],[1,"best-card"],[1,"card","list"],[1,"header-row"],[1,"grow"],[1,"num"],[1,"data-row",3,"best-row"],["type","button",1,"chip",3,"click"],[1,"best-icon"],[1,"bold"],[1,"mono","best-name"],[1,"secondary"],[1,"data-row"],[1,"mono","grow","project-name"],[1,"mono","num"],[1,"mono","num","muted"]],template:function(e,n){e&1&&(r(0,"div",0)(1,"header",1)(2,"div",2)(3,"div",3),i(4,"Compare projects"),o(),r(5,"div",4),i(6,"Which projects are cost-efficient vs hungry"),o()()(),r(7,"div",5),l(8,R,2,3,"button",6,z),o(),w(10,F,11,6,"div",7),r(11,"div",8)(12,"div",9)(13,"span",10),i(14,"Project"),o(),r(15,"span",11),i(16,"Cost"),o(),r(17,"span",11),i(18,"Sessions"),o(),r(19,"span",11),i(20,"Avg"),o(),r(21,"span",11),i(22,"Cache"),o(),r(23,"span",11),i(24,"Prompts"),o()(),l(25,N,14,13,"div",12,z),o()()),e&2&&(a(8),g(n.all()),a(2),y(n.best()?10:-1),a(15),g(n.rows()))},dependencies:[j],styles:["[_nghost-%COMP%]{display:contents}.page[_ngcontent-%COMP%]{flex:1;padding:18px}.page-head[_ngcontent-%COMP%]{margin-bottom:14px}.title[_ngcontent-%COMP%]{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em}.sub[_ngcontent-%COMP%]{color:var(--text-secondary);margin-top:2px}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono)}.grow[_ngcontent-%COMP%]{flex:1}.chip-row[_ngcontent-%COMP%]{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.chip[_ngcontent-%COMP%]{height:28px;padding:0 12px;border-radius:999px;font-size:12px;font-family:var(--font-mono);cursor:pointer;border:1px solid var(--border-subtle);background:var(--bg-panel);color:var(--text-muted)}.chip.active[_ngcontent-%COMP%]{background:var(--accent-soft);color:var(--accent);border-color:transparent}.best-card[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:center;padding:12px 14px;margin-bottom:14px;border:1px solid rgba(70,194,107,.3);border-radius:var(--r-lg);background:var(--success-soft)}.best-icon[_ngcontent-%COMP%]{color:var(--success);font-size:18px}.bold[_ngcontent-%COMP%]{font-weight:600;font-size:13px}.best-name[_ngcontent-%COMP%]{color:var(--success);margin:0 4px}.secondary[_ngcontent-%COMP%]{color:var(--text-secondary);font-size:12.5px}.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:hidden}.list[_ngcontent-%COMP%]{display:flex;flex-direction:column}.header-row[_ngcontent-%COMP%], .data-row[_ngcontent-%COMP%]{display:flex;gap:14px;padding:9px 14px;align-items:center}.header-row[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600;border-bottom:1px solid var(--border-subtle)}.data-row[_ngcontent-%COMP%]{border-top:1px solid var(--border-subtle)}.data-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.data-row.best-row[_ngcontent-%COMP%] .project-name[_ngcontent-%COMP%]{color:var(--success)}.project-name[_ngcontent-%COMP%]{font-size:12.5px}.num[_ngcontent-%COMP%]{width:70px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums}"],changeDetection:0})};export{$ as Compare};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as C,G as p,Ga as W,I,Ib as Z,J as y,K as F,Ma as B,U as A,f as H,fb as N,gb as S}from"./chunk-WVCKOJZL.js";var K=null;function L(){return K}function re(e){K??=e}var k=class{},M=(()=>{class e{historyGo(t){throw new Error("")}static \u0275fac=function(n){return new(n||e)};static \u0275prov=p({token:e,factory:()=>F(X),providedIn:"platform"})}return e})();var X=(()=>{class e extends M{_location;_history;_doc=F(A);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return L().getBaseHref(this._doc)}onPopState(t){let n=L().getGlobalEventTarget(this._doc,"window");return n.addEventListener("popstate",t,!1),()=>n.removeEventListener("popstate",t)}onHashChange(t){let n=L().getGlobalEventTarget(this._doc,"window");return n.addEventListener("hashchange",t,!1),()=>n.removeEventListener("hashchange",t)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(t){this._location.pathname=t}pushState(t,n,r){this._history.pushState(t,n,r)}replaceState(t,n,r){this._history.replaceState(t,n,r)}forward(){this._history.forward()}back(){this._history.back()}historyGo(t=0){this._history.go(t)}getState(){return this._history.state}static \u0275fac=function(n){return new(n||e)};static \u0275prov=p({token:e,factory:()=>new e,providedIn:"platform"})}return e})();function Q(e,i){return e?i?e.endsWith("/")?i.startsWith("/")?e+i.slice(1):e+i:i.startsWith("/")?e+i:`${e}/${i}`:e:i}function q(e){let i=e.search(/#|\?|$/);return e[i-1]==="/"?e.slice(0,i-1)+e.slice(i):e}function m(e){return e&&e[0]!=="?"?`?${e}`:e}var T=(()=>{class e{historyGo(t){throw new Error("")}static \u0275fac=function(n){return new(n||e)};static \u0275prov=p({token:e,factory:()=>F(oe),providedIn:"root"})}return e})(),se=new I(""),oe=(()=>{class e extends T{_platformLocation;_baseHref;_removeListenerFns=[];constructor(t,n){super(),this._platformLocation=t,this._baseHref=n??this._platformLocation.getBaseHrefFromDOM()??F(A).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return Q(this._baseHref,t)}path(t=!1){let n=this._platformLocation.pathname+m(this._platformLocation.search),r=this._platformLocation.hash;return r&&t?`${n}${r}`:n}pushState(t,n,r,s){let a=this.prepareExternalUrl(r+m(s));this._platformLocation.pushState(t,n,a)}replaceState(t,n,r,s){let a=this.prepareExternalUrl(r+m(s));this._platformLocation.replaceState(t,n,a)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}static \u0275fac=function(n){return new(n||e)(y(M),y(se,8))};static \u0275prov=p({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var ee=(()=>{class e{_subject=new H;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(t){this._locationStrategy=t;let n=this._locationStrategy.getBaseHref();this._basePath=ce(q(J(n))),this._locationStrategy.onPopState(r=>{this._subject.next({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(t=!1){return this.normalize(this._locationStrategy.path(t))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(t,n=""){return this.path()==this.normalize(t+m(n))}normalize(t){return e.stripTrailingSlash(ue(this._basePath,J(t)))}prepareExternalUrl(t){return t&&t[0]!=="/"&&(t="/"+t),this._locationStrategy.prepareExternalUrl(t)}go(t,n="",r=null){this._locationStrategy.pushState(r,"",t,n),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+m(n)),r)}replaceState(t,n="",r=null){this._locationStrategy.replaceState(r,"",t,n),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+m(n)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(t=0){this._locationStrategy.historyGo?.(t)}onUrlChange(t){return this._urlChangeListeners.push(t),this._urlChangeSubscription??=this.subscribe(n=>{this._notifyUrlChangeListeners(n.url,n.state)}),()=>{let n=this._urlChangeListeners.indexOf(t);this._urlChangeListeners.splice(n,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(t="",n){this._urlChangeListeners.forEach(r=>r(t,n))}subscribe(t,n,r){return this._subject.subscribe({next:t,error:n??void 0,complete:r??void 0})}static normalizeQueryParams=m;static joinWithSlash=Q;static stripTrailingSlash=q;static \u0275fac=function(n){return new(n||e)(y(T))};static \u0275prov=p({token:e,factory:()=>ae(),providedIn:"root"})}return e})();function ae(){return new ee(y(T))}function ue(e,i){if(!e||!i.startsWith(e))return i;let t=i.substring(e.length);return t===""||["/",";","?","#"].includes(t[0])?t:i}function J(e){return e.replace(/\/index\.html$/,"")}function ce(e){if(new RegExp("^(https?:)?//").test(e)){let[,t]=e.split(/\/\/[^\/]+/);return t}return e}var U=(function(e){return e[e.Decimal=0]="Decimal",e[e.Percent=1]="Percent",e[e.Currency=2]="Currency",e[e.Scientific=3]="Scientific",e})(U||{});var g={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function w(e,i){let t=N(e),n=t[S.NumberSymbols][i];if(typeof n>"u"){if(i===g.CurrencyDecimal)return t[S.NumberSymbols][g.Decimal];if(i===g.CurrencyGroup)return t[S.NumberSymbols][g.Group]}return n}function ne(e,i){return N(e)[S.NumberFormats][i]}var de=/^(\d+)?\.((\d+)(-(\d+))?)?$/,te=22,R=".",_="0",le=";",fe=",",x="#";function he(e,i,t,n,r,s,a=!1){let u="",D=!1;if(!isFinite(e))u=w(t,g.Infinity);else{let d=pe(e);a&&(d=De(d));let l=i.minInt,o=i.minFrac,f=i.maxFrac;if(s){let E=s.match(de);if(E===null)throw new C(2306,!1);let V=E[1],O=E[3],G=E[5];V!=null&&(l=$(V)),O!=null&&(o=$(O)),G!=null?f=$(G):O!=null&&o>f&&(f=o);let P=100;if(l>P||o>P||f>P)throw new C(2306,!1)}me(d,o,f);let c=d.digits,h=d.integerLen,z=d.exponent,v=[];for(D=c.every(E=>!E);h<l;h++)c.unshift(0);for(;h<0;h++)c.unshift(0);h>0?v=c.splice(h,c.length):(v=c,c=[0]);let b=[];for(c.length>=i.lgSize&&b.unshift(c.splice(-i.lgSize,c.length).join(""));c.length>i.gSize;)b.unshift(c.splice(-i.gSize,c.length).join(""));c.length&&b.unshift(c.join("")),u=b.join(w(t,n)),v.length&&(u+=w(t,r)+v.join("")),z&&(u+=w(t,g.Exponential)+"+"+z)}return e<0&&!D?u=i.negPre+u+i.negSuf:u=i.posPre+u+i.posSuf,u}function ie(e,i,t){let n=ne(i,U.Decimal),r=ge(n,w(i,g.MinusSign));return he(e,r,i,g.Group,g.Decimal,t)}function ge(e,i="-"){let t={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},n=e.split(le),r=n[0],s=n[1],a=r.indexOf(R)!==-1?r.split(R):[r.substring(0,r.lastIndexOf(_)+1),r.substring(r.lastIndexOf(_)+1)],u=a[0],D=a[1]||"";t.posPre=u.substring(0,u.indexOf(x));for(let l=0;l<D.length;l++){let o=D.charAt(l);o===_?t.minFrac=t.maxFrac=l+1:o===x?t.maxFrac=l+1:t.posSuf+=o}let d=u.split(fe);if(t.gSize=d[1]?d[1].length:0,t.lgSize=d[2]||d[1]?(d[2]||d[1]).length:0,s){let l=r.length-t.posPre.length-t.posSuf.length,o=s.indexOf(x);t.negPre=s.substring(0,o).replace(/'/g,""),t.negSuf=s.slice(o+l).replace(/'/g,"")}else t.negPre=i+t.posPre,t.negSuf=t.posSuf;return t}function De(e){if(e.digits[0]===0)return e;let i=e.digits.length-e.integerLen;return e.exponent?e.exponent+=2:(i===0?e.digits.push(0,0):i===1&&e.digits.push(0),e.integerLen+=2),e}function pe(e){let i=Math.abs(e)+"",t=0,n,r,s,a,u;for((r=i.indexOf(R))>-1&&(i=i.replace(R,"")),(s=i.search(/e/i))>0?(r<0&&(r=s),r+=+i.slice(s+1),i=i.substring(0,s)):r<0&&(r=i.length),s=0;i.charAt(s)===_;s++);if(s===(u=i.length))n=[0],r=1;else{for(u--;i.charAt(u)===_;)u--;for(r-=s,n=[],a=0;s<=u;s++,a++)n[a]=Number(i.charAt(s))}return r>te&&(n=n.splice(0,te-1),t=r-1,r=1),{digits:n,exponent:t,integerLen:r}}function me(e,i,t){if(i>t)throw new C(2307,!1);let n=e.digits,r=n.length-e.integerLen,s=Math.min(Math.max(i,r),t),a=s+e.integerLen,u=n[a];if(a>0){n.splice(Math.max(e.integerLen,a));for(let o=a;o<n.length;o++)n[o]=0}else{r=Math.max(0,r),e.integerLen=1,n.length=Math.max(1,a=s+1),n[0]=0;for(let o=1;o<a;o++)n[o]=0}if(u>=5)if(a-1<0){for(let o=0;o>a;o--)n.unshift(0),e.integerLen++;n.unshift(1),e.integerLen++}else n[a-1]++;for(;r<Math.max(0,s);r++)n.push(0);let D=s!==0,d=i+e.integerLen,l=n.reduceRight(function(o,f,c,h){return f=f+o,h[c]=f<10?f:f-10,D&&(h[c]===0&&c>=d?h.pop():D=!1),f>=10?1:0},0);l&&(n.unshift(l),e.integerLen++)}function $(e){let i=parseInt(e);if(isNaN(i))throw new C(2305,!1);return i}function Ce(e,i){return new C(2100,!1)}var ye=(()=>{class e{transform(t){return JSON.stringify(t,null,2)}static \u0275fac=function(n){return new(n||e)};static \u0275pipe=B({name:"json",type:e,pure:!1})}return e})();var Fe=(()=>{class e{_locale;constructor(t){this._locale=t}transform(t,n,r){if(!Ee(t))return null;r||=this._locale;try{let s=we(t);return ie(s,r,n)}catch(s){throw Ce(e,s.message)}}static \u0275fac=function(n){return new(n||e)(W(Z,16))};static \u0275pipe=B({name:"number",type:e,pure:!0})}return e})();function Ee(e){return!(e==null||e===""||e!==e)}function we(e){if(typeof e=="string"&&!isNaN(Number(e)-parseFloat(e)))return Number(e);if(typeof e!="number")throw new C(2309,!1);return e}function Ae(e,i){i=encodeURIComponent(i);for(let t of e.split(";")){let n=t.indexOf("="),[r,s]=n==-1?[t,""]:[t.slice(0,n),t.slice(n+1)];if(r.trim()===i)return decodeURIComponent(s)}return null}var j=class{};var In="browser";export{L as a,re as b,k as c,T as d,ee as e,ye as f,Fe as g,Ae as h,j as i,In as j};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as J}from"./chunk-I7LS67U5.js";import{a as C}from"./chunk-4LHBWWP7.js";import{a as q}from"./chunk-FTESTUEO.js";import{c as V,d as K}from"./chunk-MW7ICSRM.js";import{a as U}from"./chunk-47QYKLE5.js";import{a as Q}from"./chunk-ZABKKHJ3.js";import"./chunk-L4TVIPSR.js";import{g as H}from"./chunk-RP3WU5Y6.js";import{$a as g,Aa as s,Bb as A,Cb as M,Eb as z,Gb as F,K as S,Ka as $,Kb as p,P as D,Q as T,Ra as G,Sa as m,Ta as u,Va as O,Wa as y,Xa as k,Ya as b,Za as a,_a as o,aa as N,db as R,hb as _,jb as l,pb as I,qb as f,sb as r,tb as h,ub as v,vb as w,xb as B,yb as L,zb as j}from"./chunk-WVCKOJZL.js";var E=()=>[],Y=()=>[0,1,2,3],Z=()=>[0,1,2,3,4],ee=(n,e)=>t=>t.severity==="error",X=(n,e)=>e.id,te=(n,e)=>e.path;function ne(n,e){if(n&1){let t=R();a(0,"button",43),_("click",function(){let d=D(t).$implicit,c=l();return T(c.setRange(d))}),r(1),o()}if(n&2){let t=e.$implicit,i=l();f("active",i.range()===t),s(),v(" ",t==="today"?"Today":t==="week"?"This week":t==="month"?"This month":"All time"," ")}}function ie(n,e){if(n&1&&r(0),n&2){let t=l();v(" ",t.fmt$(t.lastSessionCost())," ")}}function ae(n,e){n&1&&r(0," \xA0 ")}function oe(n,e){if(n&1&&r(0),n&2){let t=l();v(" ",t.toolCallCount().toLocaleString()," ")}}function re(n,e){n&1&&r(0," \xA0 ")}function se(n,e){if(n&1&&r(0),n&2){let t=l();v(" ",t.subagentShare(),"% ")}}function de(n,e){n&1&&r(0," \xA0 ")}function le(n,e){if(n&1&&r(0),n&2){let t=l();v(" ",t.driftCount()," ")}}function ce(n,e){n&1&&r(0," \xA0 ")}function pe(n,e){n&1&&(a(0,"span",22),r(1,"seed"),o())}function me(n,e){if(n&1&&(a(0,"span",44),r(1),o()),n&2){l();let t=j(0);s(),v("",t," urgent")}}function ue(n,e){if(n&1&&(B(0),m(1,me,2,1,"span",44)),n&2){let t,i=L((((t=l().tips.state().data)==null?null:t.tips)??M(3,E)).filter(A(1,ee,e)).length);s(),u(i>0?1:-1)}}function ge(n,e){n&1&&g(0,"div",45)}function he(n,e){n&1&&y(0,ge,1,0,"div",45,O),n&2&&k(M(0,Y))}function ve(n,e){n&1&&(a(0,"div",30),r(1,"No tips yet. Run more sessions to populate."),o())}function xe(n,e){if(n&1&&(a(0,"code",51),r(1),o()),n&2){let t=l().$implicit;s(),h(t.fix)}}function be(n,e){if(n&1&&(a(0,"span",53),r(1),o()),n&2){let t=l().$implicit;s(),h(t.saving)}}function _e(n,e){if(n&1&&(a(0,"div",46),g(1,"div",47),a(2,"div",48)(3,"div",49),r(4),o(),a(5,"div",50),m(6,xe,2,1,"code",51),g(7,"span",52),m(8,be,2,1,"span",53),o()()()),n&2){let t=e.$implicit;G("data-sev",t.severity),s(4),h(t.title),s(2),u(t.fix?6:-1),s(2),u(t.saving?8:-1)}}function fe(n,e){if(n&1&&y(0,_e,9,4,"div",46,X),n&2){let t,i=l();k((((t=i.tips.state().data)==null?null:t.tips)??M(0,E)).slice(0,4))}}function Ce(n,e){n&1&&g(0,"div",34)}function ye(n,e){n&1&&(a(0,"div",30),r(1,"No tool calls in the selected window."),o())}function ke(n,e){if(n&1&&(a(0,"div",55)(1,"span",56),r(2),o()()),n&2){let t=e.$implicit,i=l(2);I("background",i.fileBg(t.calls))("color",i.fileColor(t.calls))("flex","1 1 "+(t.path.length*3+40)+"px"),b("title",t.path+" \u2014 "+t.calls+" calls"),s(2),h(t.path)}}function Me(n,e){if(n&1&&(a(0,"div",35),y(1,ke,3,8,"div",54,te),o()),n&2){let t=l();s(),k(t.topFiles())}}function Pe(n,e){n&1&&g(0,"div",57)}function Se(n,e){n&1&&y(0,Pe,1,0,"div",57,O),n&2&&k(M(0,Z))}function Oe(n,e){n&1&&(a(0,"div",30),r(1,"No prompts ingested for this range."),o())}function we(n,e){if(n&1){let t=R();a(0,"div",59),_("click",function(){D(t);let d=l(2);return T(d.go("sessions"))}),a(1,"div",60),r(2),o(),a(3,"div",61),g(4,"div",62),o(),a(5,"div",63)(6,"div",64),r(7),o(),a(8,"div",65),r(9),z(10,"number"),o()()()}if(n&2){let t=e.$implicit,i=l(2);s(2),h(t.text||"(no text)"),s(2),I("width",i.promptFrac(t.cost_usd)*100,"%")("background",i.promptBarColor(t.cost_usd)),s(2),f("expensive",t.cost_usd/i.maxPromptCost()>.7),s(),h(i.fmt$(t.cost_usd)),s(2),w(" ",i.fmtK(i.promptTotalTokens(t))," \xB7 ",F(10,10,i.promptCacheRate(t)*100,"1.0-0"),"% ")}}function Ee(n,e){if(n&1&&y(0,we,11,13,"div",58,X),n&2){let t=l();k(t.topPrompts())}}function De(n,e){n&1&&g(0,"div",41)}function Te(n,e){if(n&1&&(a(0,"div",66)(1,"div",67),r(2),z(3,"number"),o(),a(4,"div",68),r(5,"cache read rate"),o()(),g(6,"div",69),a(7,"div",70)(8,"div",71)(9,"div",72),r(10,"Creation"),o(),a(11,"div",73),r(12),o(),a(13,"div",74),r(14,"ephemeral"),o()(),a(15,"div",71)(16,"div",72),r(17,"Read"),o(),a(18,"div",73),r(19),o(),a(20,"div",74),r(21,"~10% rate"),o()(),a(22,"div",71)(23,"div",72),r(24,"Saved (est.)"),o(),a(25,"div",75),r(26),o(),a(27,"div",74),r(28,"vs no cache"),o()(),a(29,"div",71)(30,"div",72),r(31,"Total spend"),o(),a(32,"div",73),r(33),o(),a(34,"div",74),r(35),o()()()),n&2){let t=l(),i=t.cache.state().data;s(2),v("",F(3,6,i.readRate*100,"1.0-0"),"%"),s(10),h(t.fmtK(i.creationTokens)),s(7),h(t.fmtK(i.readTokens)),s(7),h(t.fmt$(i.dollarsSaved)),s(7),h(t.fmt$(i.totalCost)),s(2),h(t.range())}}var W=class n{api=S(Q);router=S(V);projects=S(U);range=N("week");ranges=["today","week","month","all"];status=C(this.api,()=>`/api/status${this.projects.projectQuery()}`);miniGraphSearch=C(this.api,()=>`/api/graph/search?q=on&limit=18${this.projects.projectQuery("&")}`);tips=C(this.api,()=>"/api/claude/tips");heatmap=C(this.api,()=>`/api/claude/heatmap?range=${this.range()}`);costs=C(this.api,()=>`/api/claude/costs?range=${this.range()}`);cache=C(this.api,()=>`/api/claude/cache?range=${this.range()}`);sessions=C(this.api,()=>`/api/claude/sessions?range=${this.range()}&limit=10`);lastSession=p(()=>(this.sessions.state().data?.sessions??[])[0]??null);lastSessionCost=p(()=>this.lastSession()?.total_cost_usd??0);toolCallCount=p(()=>(this.heatmap.state().data?.tools??[]).reduce((t,i)=>t+(i.calls??0),0));subagentShare=p(()=>{let e=this.heatmap.state().data?.subagents??[],t=e.find(x=>x.type==="subagent"),i=e.find(x=>x.type==="main"),d=t?.cost??0,c=i?.cost??0,P=d+c;return P>0?Math.round(d/P*100):0});driftCount=p(()=>this.status.state().data?.drift??0);nodeCountLabel=p(()=>this.status.state().data?.nodeCount??0);topFiles=p(()=>(this.heatmap.state().data?.files??[]).slice(0,30));maxFileCalls=p(()=>{let e=Math.max(0,...this.topFiles().map(t=>t.calls??0));return e>0?e:1});topPrompts=p(()=>(this.costs.state().data?.topPrompts??[]).slice(0,8));maxPromptCost=p(()=>Math.max(.01,...this.topPrompts().map(t=>t.cost_usd??0)));rangeTotal=p(()=>(this.costs.state().data?.series??[]).reduce((t,i)=>t+(i.cost??0),0));liveSource=p(()=>this.status.state().source==="api"&&this.status.state().data?"live":"mock");setRange(e){this.range.set(e)}go(e){this.router.navigate(["/"+e])}fmt$(e){return"$"+e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}fmtK(e){return e>=1e3?(e/1e3).toFixed(e>=1e4?0:1)+"k":String(e)}promptCacheRate(e){let t=(e.input_tokens??0)+(e.cache_creation_tokens??0)+(e.cache_read_tokens??0);return t>0?(e.cache_read_tokens??0)/t:0}promptTotalTokens(e){return(e.input_tokens??0)+(e.output_tokens??0)+(e.cache_creation_tokens??0)+(e.cache_read_tokens??0)}fileBg(e){let t=e/this.maxFileCalls();return`color-mix(in srgb, var(--warn) ${Math.round(18+t*70)}%, var(--bg-elevated))`}fileColor(e){return e/this.maxFileCalls()>.5?"#fff":"var(--text-secondary)"}promptBarColor(e){return e/this.maxPromptCost()>.7?"var(--error)":"var(--accent)"}promptFrac(e){return Math.max(0,Math.min(1,e/this.maxPromptCost()))}sessionIdShort(e){return(e??"").slice(0,8)}miniGraphSource=p(()=>(this.miniGraphSearch.state().data?.results?.length??0)>0?"api":"seed");miniGraphNodes=p(()=>{let e=this.miniGraphSearch.state().data?.results??[];return e.length>0?ze(e.slice(0,18).map(t=>({id:t.node.id,label:t.node.name,sub:t.node.filePath?.split("/").slice(-2).join("/"),kind:t.node.kind}))):Re});miniGraphEdges=p(()=>{if(this.miniGraphSource()==="api"){let e=this.miniGraphNodes(),t=[];for(let i=1;i<e.length;i++){let d=e[Math.floor(Math.random()*i)],c=e[i];d&&c&&t.push({from:d.id,to:c.id,kind:"calls"})}return t}return Ie});onMiniGraphPick(e){this.router.navigate(["/graph"],{queryParams:{focus:e}})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=$({type:n,selectors:[["app-dashboard"]],decls:102,vars:38,consts:[[1,"scroll-y","dashboard"],[1,"page-head"],[1,"title-block"],[1,"title"],[1,"sub"],[1,"range-selector"],["type","button",1,"range-opt",3,"active"],[1,"stat-grid"],[1,"stat-tile",3,"click"],[1,"stat-head","row","gap-8"],["name","coins",2,"color","var(--accent)",3,"size"],[1,"eyebrow"],[1,"stat-value"],["name","wrench",2,"color","var(--node-spec)",3,"size"],["name","bot",2,"color","var(--node-code)",3,"size"],["name","drift",2,"color","var(--warn)",3,"size"],[1,"center-grid"],[1,"card","graph-card"],[1,"card-head"],[1,"card-title","row","gap-8"],["name","graph",2,"color","var(--accent)",3,"size"],[1,"muted"],["title","No /api/graph/search data yet \u2014 illustrative",1,"pill","seed-pill"],["routerLink","/graph",1,"ghost"],[1,"mini-graph"],[3,"nodeClick","nodes","edges"],[1,"card","tips-card"],[1,"card-title"],["routerLink","/tips",1,"ghost"],[1,"tips-body","scroll-y"],[1,"empty"],[1,"card","card-pad","heatstrip-card"],[1,"card-head",2,"margin-bottom","10px"],["routerLink","/heatmap",1,"ghost"],[1,"skel","heatstrip-skel"],[1,"heatstrip"],[1,"bottom-grid"],[1,"card","card-pad"],[1,"card-head",2,"margin-bottom","6px"],["routerLink","/costs",1,"ghost"],[1,"card","card-pad","cache-card"],[1,"skel","cache-skel"],[1,"dash-footer","mono","muted"],["type","button",1,"range-opt",3,"click"],[1,"pill","pill-error"],[1,"skel","tip-skel"],[1,"tip"],[1,"tip-bar"],[1,"tip-body"],[1,"tip-title"],[1,"tip-meta"],[1,"mono","fix"],[1,"grow"],[1,"saving"],[1,"hot-cell",3,"background","color","flex","title"],[1,"hot-cell",3,"title"],[1,"mono"],[1,"skel","row-skel"],[1,"prompt-row"],[1,"prompt-row",3,"click"],[1,"prompt-text"],[1,"prompt-bar"],[1,"bar-fill"],[1,"prompt-right"],[1,"cost","mono"],[1,"prompt-meta","mono","muted"],[1,"cache-headline"],[1,"cache-rate"],[1,"cache-rate-sub"],[1,"cache-divider"],[1,"cache-kv-grid"],[1,"kv"],[1,"kv-label"],[1,"kv-value","mono"],[1,"kv-sub","mono","muted"],[1,"kv-value","mono","success"]],template:function(t,i){if(t&1&&(a(0,"div",0)(1,"header",1)(2,"div",2)(3,"div",3),r(4,"Dashboard"),o(),a(5,"div",4),r(6),o()(),a(7,"div",5),y(8,ne,2,3,"button",6,O),o()(),a(10,"div",7)(11,"button",8),_("click",function(){return i.go("sessions")}),a(12,"div",9),g(13,"app-icon",10),a(14,"span",11),r(15,"Last session cost"),o()(),a(16,"div",12),m(17,ie,1,1)(18,ae,1,0),o()(),a(19,"button",8),_("click",function(){return i.go("heatmap")}),a(20,"div",9),g(21,"app-icon",13),a(22,"span",11),r(23),o()(),a(24,"div",12),m(25,oe,1,1)(26,re,1,0),o()(),a(27,"button",8),_("click",function(){return i.go("heatmap")}),a(28,"div",9),g(29,"app-icon",14),a(30,"span",11),r(31,"Subagent spend"),o()(),a(32,"div",12),m(33,se,1,1)(34,de,1,0),o()(),a(35,"button",8),_("click",function(){return i.go("drift")}),a(36,"div",9),g(37,"app-icon",15),a(38,"span",11),r(39,"Drift queue"),o()(),a(40,"div",12),m(41,le,1,1)(42,ce,1,0),o()()(),a(43,"div",16)(44,"div",17)(45,"div",18)(46,"div",19),g(47,"app-icon",20),a(48,"span"),r(49,"Recent neighborhood"),o(),a(50,"span",21),r(51,"\xB7 last edited files"),o(),m(52,pe,2,0,"span",22),o(),a(53,"a",23),r(54,"Open graph \u2192"),o()(),a(55,"div",24)(56,"app-graph-canvas",25),_("nodeClick",function(c){return i.onMiniGraphPick(c)}),o()()(),a(57,"div",26)(58,"div",18)(59,"div",27),r(60,"Tips "),m(61,ue,2,4),o(),a(62,"a",28),r(63,"All"),o()(),a(64,"div",29),m(65,he,2,1)(66,ve,2,0,"div",30)(67,fe,2,1),o()()(),a(68,"div",31)(69,"div",32)(70,"div",27),r(71,"Tool-call heatmap "),a(72,"span",21),r(73),o()(),a(74,"a",33),r(75,"Open heatmap \u2192"),o()(),m(76,Ce,1,0,"div",34)(77,ye,2,0,"div",30)(78,Me,3,0,"div",35),o(),a(79,"div",36)(80,"div",37)(81,"div",38)(82,"div",27),r(83,"Recent prompts "),a(84,"span",21),r(85,"\xB7 by cost"),o()(),a(86,"a",39),r(87,"Cost ranking \u2192"),o()(),m(88,Se,2,1)(89,Oe,2,0,"div",30)(90,Ee,2,0),o(),a(91,"div",40)(92,"div",18)(93,"div",27),r(94,"Cache analytics"),o()(),m(95,De,1,0,"div",41)(96,Te,36,9),o()(),a(97,"footer",42),r(98),a(99,"span"),r(100,"\u25CF"),o(),r(101),o()()),t&2){let d,c;s(6),w(" specship \xB7 ",i.nodeCountLabel().toLocaleString()," nodes \xB7 last session ",i.fmt$(i.lastSessionCost())," "),s(2),k(i.ranges),s(5),b("size",13),s(3),f("skel",i.sessions.state().loading),s(),u(i.sessions.state().loading?18:17),s(4),b("size",13),s(2),v("Tool calls \xB7 ",i.range()),s(),f("skel",i.heatmap.state().loading),s(),u(i.heatmap.state().loading?26:25),s(4),b("size",13),s(3),f("skel",i.heatmap.state().loading),s(),u(i.heatmap.state().loading?34:33),s(4),b("size",13),s(3),f("skel",i.status.state().loading),s(),u(i.status.state().loading?42:41),s(6),b("size",14),s(5),u(i.miniGraphSource()==="seed"?52:-1),s(4),b("nodes",i.miniGraphNodes())("edges",i.miniGraphEdges()),s(5),u((((d=i.tips.state().data)==null?null:d.tips)??M(36,E)).length>0?61:-1),s(4),u(i.tips.state().loading?65:(((c=i.tips.state().data)==null?null:c.tips)??M(37,E)).length===0?66:67),s(8),v("\xB7 by file, ",i.range()," window"),s(3),u(i.heatmap.state().loading?76:i.topFiles().length===0?77:78),s(12),u(i.costs.state().loading?88:i.topPrompts().length===0?89:90),s(7),u(i.cache.state().loading?95:i.cache.state().data?96:-1),s(3),w(" ",i.range()," window total: ",i.fmt$(i.rangeTotal())," \xB7 "),s(),f("dot-live",i.liveSource()==="live")("dot-mock",i.liveSource()==="mock"),s(2),v(" ",i.liveSource()," ")}},dependencies:[K,q,J,H],styles:["[_nghost-%COMP%]{display:contents}.dashboard[_ngcontent-%COMP%]{flex:1;padding:18px;color:var(--text-primary);background:var(--bg-canvas)}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px}.title-block[_ngcontent-%COMP%]{flex:1;min-width:0}.title[_ngcontent-%COMP%]{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em}.sub[_ngcontent-%COMP%]{color:var(--text-secondary);margin-top:2px;font-size:var(--fs-base)}.range-selector[_ngcontent-%COMP%]{display:inline-flex;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:7px;padding:2px;gap:2px}.range-opt[_ngcontent-%COMP%]{border:none;cursor:pointer;border-radius:5px;padding:5px 12px;font-size:var(--fs-sm);font-weight:500;font-family:var(--font-ui);background:transparent;color:var(--text-muted);transition:all .1s}.range-opt.active[_ngcontent-%COMP%]{background:var(--bg-elevated);color:var(--text-primary);box-shadow:0 1px 2px #0000004d}.stat-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.stat-tile[_ngcontent-%COMP%]{text-align:left;padding:11px 13px;cursor:pointer;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg);display:flex;flex-direction:column;gap:6px;color:var(--text-primary);font-family:inherit;transition:background .1s,border-color .1s}.stat-tile[_ngcontent-%COMP%]:hover{background:var(--bg-panel-2);border-color:var(--border-strong)}.stat-icon[_ngcontent-%COMP%]{font-size:13px;color:var(--text-muted)}.stat-icon[data-color=accent][_ngcontent-%COMP%]{color:var(--accent)}.stat-icon[data-color=spec][_ngcontent-%COMP%]{color:var(--node-spec)}.stat-icon[data-color=code][_ngcontent-%COMP%]{color:var(--node-code)}.stat-icon[data-color=warn][_ngcontent-%COMP%]{color:var(--warn)}.stat-label[_ngcontent-%COMP%]{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.stat-value[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums;font-size:23px;font-weight:650;letter-spacing:-.02em;line-height:1;min-height:23px}.center-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:2fr 1fr;gap:12px;margin-bottom:14px}.graph-card[_ngcontent-%COMP%], .tips-card[_ngcontent-%COMP%]{height:340px;display:flex;flex-direction:column}.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg)}.card-pad[_ngcontent-%COMP%]{padding:14px}.card-head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:11px 13px;border-bottom:1px solid var(--border-subtle)}.card-pad[_ngcontent-%COMP%] .card-head[_ngcontent-%COMP%]{padding:0;border-bottom:none}.card-title[_ngcontent-%COMP%]{font-weight:600;font-size:12.5px;display:inline-flex;align-items:center;gap:8px}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.ghost[_ngcontent-%COMP%]{color:var(--text-muted);font-size:var(--fs-xs);padding:2px 6px;border-radius:4px;text-decoration:none}.ghost[_ngcontent-%COMP%]:hover{background:var(--bg-hover);color:var(--text-primary)}.graph-placeholder[_ngcontent-%COMP%]{flex:1;min-height:0;background:var(--bg-canvas-2);display:grid;place-items:center;background-image:radial-gradient(circle,var(--dot-grid) 1px,transparent 1px);background-size:16px 16px;font-size:var(--fs-sm);border-bottom-left-radius:var(--r-lg);border-bottom-right-radius:var(--r-lg)}.mini-graph[_ngcontent-%COMP%]{flex:1;min-height:0;overflow:hidden;border-bottom-left-radius:var(--r-lg);border-bottom-right-radius:var(--r-lg)}.mini-graph[_ngcontent-%COMP%] app-graph-canvas[_ngcontent-%COMP%]{display:block;width:100%;height:100%}.seed-pill[_ngcontent-%COMP%]{color:var(--warn);background:var(--warn-soft);font-size:9.5px;font-weight:600;padding:1px 6px}.tips-body[_ngcontent-%COMP%]{flex:1;padding:10px;display:flex;flex-direction:column;gap:8px}.tip-skel[_ngcontent-%COMP%]{height:60px}.tip[_ngcontent-%COMP%]{display:flex;gap:0;background:var(--bg-panel-2);border:1px solid var(--border-subtle);border-radius:var(--r-md);overflow:hidden;animation:_ngcontent-%COMP%_slideInRight .2s ease}.tip-bar[_ngcontent-%COMP%]{width:2.5px;flex-shrink:0}.tip[data-sev=error][_ngcontent-%COMP%] .tip-bar[_ngcontent-%COMP%]{background:var(--error)}.tip[data-sev=warn][_ngcontent-%COMP%] .tip-bar[_ngcontent-%COMP%]{background:var(--warn)}.tip[data-sev=info][_ngcontent-%COMP%] .tip-bar[_ngcontent-%COMP%]{background:var(--info)}.tip-body[_ngcontent-%COMP%]{padding:10px 12px;flex:1;min-width:0}.tip-title[_ngcontent-%COMP%]{font-size:12.5px;font-weight:550;line-height:1.35}.tip-meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin-top:7px;font-size:10px}.fix[_ngcontent-%COMP%]{color:var(--text-secondary);background:var(--bg-canvas);padding:2px 6px;border-radius:4px;border:1px solid var(--border-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.saving[_ngcontent-%COMP%]{color:var(--success)}.grow[_ngcontent-%COMP%]{flex:1}.empty[_ngcontent-%COMP%]{color:var(--text-muted);font-size:12px;text-align:center;padding:12px}.pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill);letter-spacing:.01em}.pill-error[_ngcontent-%COMP%]{color:var(--error);background:var(--error-soft)}.heatstrip-card[_ngcontent-%COMP%]{margin-bottom:14px}.heatstrip[_ngcontent-%COMP%]{display:flex;gap:3px;flex-wrap:wrap}.hot-cell[_ngcontent-%COMP%]{height:30px;min-width:50px;border-radius:5px;border:1px solid rgba(0,0,0,.25);display:flex;align-items:center;padding:0 8px;overflow:hidden;cursor:pointer;font-size:10px}.hot-cell[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.heatstrip-skel[_ngcontent-%COMP%]{height:30px;width:100%}.bottom-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1.4fr 1fr;gap:12px}.prompt-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:center;padding:7px 4px;border-radius:6px;cursor:pointer}.prompt-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.prompt-text[_ngcontent-%COMP%]{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.prompt-bar[_ngcontent-%COMP%]{height:4px;background:#ffffff0f;border-radius:999px;overflow:hidden}.bar-fill[_ngcontent-%COMP%]{height:100%;border-radius:999px}.prompt-right[_ngcontent-%COMP%]{text-align:right}.cost[_ngcontent-%COMP%]{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.cost.expensive[_ngcontent-%COMP%]{color:var(--error)}.prompt-meta[_ngcontent-%COMP%]{font-size:10px}.row-skel[_ngcontent-%COMP%]{height:26px;margin:4px 0}.cache-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.cache-headline[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:10px}.cache-rate[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums;font-size:38px;font-weight:700;letter-spacing:-.03em;line-height:.9;color:var(--node-route)}.cache-rate-sub[_ngcontent-%COMP%]{color:var(--text-muted);font-size:11px;padding-bottom:3px}.cache-divider[_ngcontent-%COMP%]{height:1px;background:var(--border-subtle)}.cache-kv-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.kv-label[_ngcontent-%COMP%]{color:var(--text-muted);font-size:10.5px}.kv-value[_ngcontent-%COMP%]{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.kv-value.success[_ngcontent-%COMP%]{color:var(--success)}.kv-sub[_ngcontent-%COMP%]{font-size:9.5px}.cache-skel[_ngcontent-%COMP%]{height:70px}.dash-footer[_ngcontent-%COMP%]{margin-top:16px;text-align:right;font-size:10px}.dot-live[_ngcontent-%COMP%]{color:var(--success)}.dot-mock[_ngcontent-%COMP%]{color:var(--warn)}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.skel[_ngcontent-%COMP%]{background:var(--bg-elevated);border-radius:5px;animation:_ngcontent-%COMP%_skeleton 1.4s ease-in-out infinite}@keyframes _ngcontent-%COMP%_slideInRight{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes _ngcontent-%COMP%_skeleton{0%,to{opacity:.5}50%{opacity:.9}}"],changeDetection:0})},Re=[{id:"s-1",label:"validateSession",sub:"src/auth.ts",kind:"function",x:0,y:0},{id:"s-2",label:"checkExpiry",sub:"src/auth.ts",kind:"method",x:-180,y:-70},{id:"s-3",label:"signToken",sub:"src/auth.ts",kind:"function",x:-180,y:50},{id:"s-4",label:"AuthRoute",sub:"src/routes/auth.ts",kind:"route",x:200,y:-90},{id:"s-5",label:"login",sub:"src/routes/auth.ts",kind:"function",x:200,y:30},{id:"s-6",label:"logout",sub:"src/routes/auth.ts",kind:"function",x:230,y:110},{id:"s-7",label:"auth.test.ts",sub:"test/auth.test.ts",kind:"test",x:-240,y:140},{id:"s-8",label:"session.test.ts",sub:"test/session.test.ts",kind:"test",x:-100,y:180},{id:"s-9",label:"REQ-AUTH-005",sub:"reject expired tokens",kind:"spec",state:"drifted",x:30,y:-180},{id:"s-10",label:"REQ-AUTH-001",sub:"sign session tokens",kind:"spec",state:"verified",x:-150,y:-190},{id:"s-11",label:"User",sub:"src/types/user.ts",kind:"class",x:-340,y:-10},{id:"s-12",label:"Session",sub:"src/types/session.ts",kind:"class",x:60,y:130},{id:"s-13",label:"jwtSign",sub:"src/lib/jwt.ts",kind:"function",x:-340,y:80},{id:"s-14",label:"jwtVerify",sub:"src/lib/jwt.ts",kind:"function",x:350,y:-10},{id:"s-15",label:"tokenStore",sub:"src/db/tokens.ts",kind:"function",x:350,y:90}],Ie=[{from:"s-1",to:"s-2",kind:"calls"},{from:"s-1",to:"s-3",kind:"calls"},{from:"s-4",to:"s-5",kind:"calls"},{from:"s-4",to:"s-6",kind:"calls"},{from:"s-5",to:"s-1",kind:"calls"},{from:"s-6",to:"s-1",kind:"calls"},{from:"s-3",to:"s-13",kind:"calls"},{from:"s-2",to:"s-14",kind:"calls"},{from:"s-1",to:"s-12",kind:"references"},{from:"s-5",to:"s-11",kind:"references"},{from:"s-9",to:"s-1",kind:"implements"},{from:"s-10",to:"s-3",kind:"implements"},{from:"s-7",to:"s-1",kind:"references"},{from:"s-8",to:"s-12",kind:"references"},{from:"s-14",to:"s-15",kind:"calls"}];function ze(n){if(n.length===0)return[];let e=n[0],t=n.slice(1),i=[{id:e.id,label:e.label,sub:e.sub,kind:e.kind,x:0,y:0}],d=220;for(let c=0;c<t.length;c++){let P=c/t.length*Math.PI*2-Math.PI/2,x=t[c];i.push({id:x.id,label:x.label,sub:x.sub,kind:x.kind,x:Math.cos(P)*d,y:Math.sin(P)*d})}return i}export{W as Dashboard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Aa as d,Ka as g,Ra as m,Ua as u,Wa as f,Xa as x,aa as l,ab as n,bb as a,eb as b,ib as p,sb as i,tb as h}from"./chunk-WVCKOJZL.js";function y(r,e){if(r&1&&(n(0,"div",6)(1,"div",10),i(2),a()()),r&2){let t=e.$implicit;m("data-role",t.role),d(2),h(t.text)}}var v=class r{messages=l([{role:"assistant",text:"Hi \u2014 ask anything about your specs, code, or recent Claude Code sessions. (Backed-by-Claude wiring lands when we plug the SSE channel in.)"}]);draft=l("");setDraft(e){this.draft.set(e)}send(){let e=this.draft().trim();e&&(this.messages.update(t=>[...t,{role:"user",text:e},{role:"assistant",text:"(stub) Chat backend not yet wired. The HTTP API + workflow runners are ready \u2014 this is the next surface to plug in."}]),this.draft.set(""))}onKey(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),this.send())}static \u0275fac=function(t){return new(t||r)};static \u0275cmp=g({type:r,selectors:[["app-chat"]],decls:14,vars:1,consts:[[1,"page"],[1,"page-head"],[1,"title-block"],[1,"title"],[1,"sub"],[1,"thread","scroll-y"],[1,"msg"],[1,"composer"],["placeholder","Ask about specs, code, or recent sessions\u2026",1,"input",3,"input","keydown","value"],["type","button",1,"send",3,"click"],[1,"bubble"]],template:function(t,o){t&1&&(n(0,"div",0)(1,"header",1)(2,"div",2)(3,"div",3),i(4,"Chat"),a(),n(5,"div",4),i(6,"specship-aware companion (wiring to Claude SSE next pass)"),a()()(),n(7,"div",5),f(8,y,3,2,"div",6,u),a(),n(10,"div",7)(11,"textarea",8),p("input",function(s){return o.setDraft(s.target.value)})("keydown",function(s){return o.onKey(s)}),a(),n(12,"button",9),p("click",function(){return o.send()}),i(13,"Send"),a()()()),t&2&&(d(8),x(o.messages()),d(3),b("value",o.draft()))},styles:["[_nghost-%COMP%]{display:contents}.page[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-height:0;padding:16px 18px 0}.title[_ngcontent-%COMP%]{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em}.sub[_ngcontent-%COMP%]{color:var(--text-secondary);margin-top:2px}.page-head[_ngcontent-%COMP%]{margin-bottom:12px}.thread[_ngcontent-%COMP%]{flex:1;padding:12px 0;display:flex;flex-direction:column;gap:12px}.msg[_ngcontent-%COMP%]{display:flex}.msg[data-role=user][_ngcontent-%COMP%]{justify-content:flex-end}.bubble[_ngcontent-%COMP%]{max-width:70%;padding:10px 14px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:12px;font-size:13.5px;line-height:1.55}.msg[data-role=user][_ngcontent-%COMP%] .bubble[_ngcontent-%COMP%]{background:var(--accent-soft);color:var(--text-primary);border-color:var(--accent-line)}.composer[_ngcontent-%COMP%]{display:flex;gap:10px;border-top:1px solid var(--border-subtle);margin:0 -18px;padding:12px 18px 18px}.input[_ngcontent-%COMP%]{flex:1;min-height:60px;max-height:200px;resize:vertical;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-primary);padding:10px 12px;font-family:var(--font-ui);font-size:13.5px}.input[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--border-focus)}.send[_ngcontent-%COMP%]{background:var(--accent-strong);color:#fff;border:none;padding:8px 16px;border-radius:6px;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;align-self:flex-end}.send[_ngcontent-%COMP%]:hover{background:var(--accent)}"],changeDetection:0})};export{v as Chat};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as H}from"./chunk-I7LS67U5.js";import{a as W}from"./chunk-5OQKAJAE.js";import{a as E}from"./chunk-4LHBWWP7.js";import"./chunk-FTESTUEO.js";import{a as q}from"./chunk-47QYKLE5.js";import{a as U}from"./chunk-ZABKKHJ3.js";import"./chunk-L4TVIPSR.js";import"./chunk-RP3WU5Y6.js";import{$a as w,Aa as a,K as G,Ka as Q,Kb as P,P as m,Q as x,Ra as T,Sa as u,Ta as _,Va as A,Wa as y,Xa as k,Ya as I,Za as i,_a as o,a as j,aa as C,b as L,db as b,hb as h,jb as d,qb as D,sb as l,tb as s,ub as f,wb as B}from"./chunk-WVCKOJZL.js";var Z=(n,t)=>t.node.id,K=(n,t)=>t.id;function ee(n,t){n&1&&w(0,"app-pick-project-empty",0)}function te(n,t){n&1&&w(0,"span",6)}function ne(n,t){if(n&1){let e=b();i(0,"button",16),h("click",function(){let p=m(e).$implicit,c=d(3);return x(c.pickResult(p.node))}),w(1,"span",17),i(2,"span",18),l(3),o(),i(4,"span",19),l(5),o(),i(6,"span",20),l(7),o()()}if(n&2){let e=t.$implicit,r=d(3);a(),D("is-spec",e.node.kind==="spec")("is-route",e.node.kind==="route"),a(2),s(e.node.name),a(2),s(e.node.kind),a(2),s(r.shortPath(e.node.filePath))}}function ie(n,t){if(n&1&&(i(0,"div",7),y(1,ne,8,7,"button",15,Z),o()),n&2){let e=d(2);a(),k(e.searchResults.state().data.results)}}function oe(n,t){if(n&1){let e=b();i(0,"button",21),h("click",function(){let p=m(e).$implicit,c=d(2);return x(c.toggleFilter(p))}),w(1,"span",22),l(2),i(3,"span",23),l(4),o()()}if(n&2){let e=t.$implicit,r=d(2);D("is-active",r.isFilterActive(e)),a(),T("data-kind",e),a(),f(" ",r.kindLabel(e)," "),a(2),s(r.countFor(e))}}function ae(n,t){if(n&1){let e=b();i(0,"button",24),h("click",function(){m(e);let p=d(2);return x(p.recenter())}),l(1,"Recenter"),o(),i(2,"button",25),h("click",function(){m(e);let p=d(2);return x(p.clearSelection())}),l(3,"Clear"),o()}}function re(n,t){if(n&1&&(i(0,"p",26),l(1),o()),n&2){let e=t;a(),B("",e.nodeCount.toLocaleString()," nodes \xB7 ",e.edgeCount.toLocaleString()," edges \xB7 ",e.fileCount.toLocaleString()," files")}}function le(n,t){if(n&1&&(i(0,"div",12)(1,"h3"),l(2,"Explore the graph"),o(),i(3,"p"),l(4,"Search for a function, method or class to start. The graph renders the symbol with its callers, callees and any linked specs."),o(),u(5,re,2,3,"p",26),o()),n&2){let e,r=d(2);a(5),_((e=r.status.state().data)?5:-1,e)}}function de(n,t){n&1&&(i(0,"div",12)(1,"p"),l(2,"Loading\u2026"),o()())}function pe(n,t){if(n&1&&(i(0,"div",12)(1,"h3"),l(2,"Couldn't load that symbol"),o(),i(3,"p"),l(4),o()()),n&2){let e=d(2);a(4),s(e.nodeDetail.state().error)}}function ce(n,t){if(n&1&&(i(0,"div",12)(1,"p"),l(2),o()()),n&2){let e=d(2);a(2),f('No match for "',e.selectedSymbol(),'".')}}function se(n,t){if(n&1){let e=b();i(0,"app-graph-canvas",27),h("nodeClick",function(p){m(e);let c=d(2);return x(c.pickFromCanvas(p))}),o()}if(n&2){let e=d(2);I("nodes",e.visibleNodes())("edges",e.visibleEdges())("selectedId",e.selectedDetail().id)("fitKey",e.fitKey())}}function ge(n,t){if(n&1&&(i(0,"section")(1,"div",34),l(2,"Signature"),o(),i(3,"pre",36),l(4),o()()),n&2){let e=d();a(4),s(e.signature)}}function ue(n,t){if(n&1&&(i(0,"div",37)(1,"span",38),l(2),o(),i(3,"span",39),l(4),o(),i(5,"span",40),l(6),o()()),n&2){let e=t.$implicit;a(),T("data-state",e.state),a(),s(e.state),a(2),s(e.specId),a(2),s(e.specTitle||"")}}function _e(n,t){if(n&1&&(i(0,"section")(1,"div",34),l(2),o(),y(3,ue,7,4,"div",37,K),o()),n&2){let e=d();a(2),f("Linked specs (",e.linkedSpecs.length,")"),a(),k(e.linkedSpecs)}}function me(n,t){if(n&1){let e=b();i(0,"button",42),h("click",function(){let p=m(e).$implicit,c=d(4);return x(c.pickResult(p))}),i(1,"span",39),l(2),o(),i(3,"span",40),l(4),o()()}if(n&2){let e=t.$implicit,r=d(4);a(2),s(e.name),a(2),s(r.shortPath(e.filePath))}}function xe(n,t){if(n&1&&y(0,me,5,2,"button",41,K),n&2){let e=d();k(e.callers)}}function he(n,t){n&1&&(i(0,"div",35),l(1,"No callers"),o())}function be(n,t){if(n&1){let e=b();i(0,"button",42),h("click",function(){let p=m(e).$implicit,c=d(4);return x(c.pickResult(p))}),i(1,"span",39),l(2),o(),i(3,"span",40),l(4),o()()}if(n&2){let e=t.$implicit,r=d(4);a(2),s(e.name),a(2),s(r.shortPath(e.filePath))}}function ve(n,t){if(n&1&&y(0,be,5,2,"button",41,K),n&2){let e=d();k(e.callees)}}function fe(n,t){n&1&&(i(0,"div",35),l(1,"No callees"),o())}function Ce(n,t){if(n&1&&(i(0,"aside",14)(1,"header",28)(2,"div",29)(3,"span",30),l(4),o(),i(5,"h3",31),l(6),o()(),i(7,"div",32),l(8),i(9,"span",33),l(10),o()()(),u(11,ge,5,1,"section"),u(12,_e,5,1,"section"),i(13,"section")(14,"div",34),l(15,"Callers "),i(16,"span",33),l(17),o()(),u(18,xe,2,0)(19,he,2,0,"div",35),o(),i(20,"section")(21,"div",34),l(22,"Callees "),i(23,"span",33),l(24),o()(),u(25,ve,2,0)(26,fe,2,0,"div",35),o()()),n&2){let e=t;a(4),s(e.kind),a(2),s(e.name),a(2),s(e.filePath),a(2),f(" \xB7 L",e.startLine),a(),_(e.signature?11:-1),a(),_(e.linkedSpecs.length?12:-1),a(5),f("(",e.callers.length,")"),a(),_(e.callers.length?18:19),a(6),f("(",e.callees.length,")"),a(),_(e.callees.length?25:26)}}function ye(n,t){if(n&1){let e=b();i(0,"div",1)(1,"div",2)(2,"div",3)(3,"div",4)(4,"input",5),h("input",function(p){m(e);let c=d();return x(c.onSearchInput(p.target.value))}),o(),u(5,te,1,0,"span",6),u(6,ie,3,0,"div",7),o(),i(7,"div",8),y(8,oe,5,5,"button",9,A),o(),w(10,"div",10),u(11,ae,4,0),o(),i(12,"div",11),u(13,le,6,1,"div",12)(14,de,3,0,"div",12)(15,pe,5,1,"div",12)(16,ce,3,1,"div",12)(17,se,1,4,"app-graph-canvas",13),o()(),u(18,Ce,27,10,"aside",14),o()}if(n&2){let e,r=d();a(4),I("value",r.searchInput()),a(),_(r.searchResults.state().loading?5:-1),a(),_(r.searchResults.state().data&&r.searchResults.state().data.results.length>0?6:-1),a(2),k(r.kindKeys),a(3),_(r.selectedDetail()?11:-1),a(2),_(r.selectedSymbol()?r.nodeDetail.state().loading?14:r.nodeDetail.state().error?15:r.selectedDetail()?17:16:13),a(5),_((e=r.selectedDetail())?18:-1,e)}}var X=class n{api=G(U);projects=G(q);status=E(this.api,()=>`/api/status${this.projects.projectQuery()}`);searchInput=C("");searchQuery=C("");searchDebounce=null;searchResults=E(this.api,()=>{let t=this.searchQuery().trim();return t.length>=2?`/api/graph/search?q=${encodeURIComponent(t)}&limit=12${this.projects.projectQuery("&")}`:null});selectedSymbol=C(null);nodeDetail=E(this.api,()=>{let t=this.selectedSymbol();return t?`/api/graph/node?symbol=${encodeURIComponent(t)}${this.projects.projectQuery("&")}`:null});selectedDetail=P(()=>this.nodeDetail.state().data?.matches?.[0]??null);filters=C({code:!0,spec:!0,route:!0,test:!0});fitKey=C(0);canvasData=P(()=>{let t=this.selectedDetail();if(!t)return{nodes:[],edges:[]};let e=this.filters(),r=g=>{let v=Y(g);return e[v]},p={id:t.id,label:t.name,sub:N(t.filePath),kind:t.kind,x:0,y:0},c=(t.callers??[]).filter(g=>r(g.kind)),R=(t.callees??[]).filter(g=>r(g.kind)),V=(t.linkedSpecs??[]).filter(()=>e.spec),z=280,F=56,S=[p],O=[];return c.forEach((g,v)=>{let M=(v-(c.length-1)/2)*F;S.push(J(g,-z,M)),O.push({from:g.id,to:t.id,kind:"calls"})}),R.forEach((g,v)=>{let M=(v-(R.length-1)/2)*F;S.push(J(g,z,M)),O.push({from:t.id,to:g.id,kind:"calls"})}),V.forEach((g,v)=>{let M=(v-(V.length-1)/2)*220,$="spec:"+g.specId;S.push({id:$,label:g.specId,sub:g.specTitle??void 0,kind:"spec",state:g.state,x:M,y:-160}),O.push({from:$,to:t.id,kind:"implements"})}),{nodes:S,edges:O}});visibleNodes=P(()=>this.canvasData().nodes);visibleEdges=P(()=>this.canvasData().edges);kindCounts=P(()=>{let t={code:0,spec:0,route:0,test:0};for(let e of this.canvasData().nodes)t[Y(e.kind)]++;return t});kindKeys=["code","spec","route","test"];isFilterActive(t){return this.filters()[t]}countFor(t){return this.kindCounts()[t]}onSearchInput(t){this.searchInput.set(t),this.searchDebounce&&clearTimeout(this.searchDebounce),this.searchDebounce=setTimeout(()=>this.searchQuery.set(t),180)}pickResult(t){this.searchInput.set(t.name),this.searchQuery.set(""),this.selectedSymbol.set(t.name)}pickFromCanvas(t){let e=this.selectedDetail();if(!e||t===e.id)return;let p=[...e.callers??[],...e.callees??[]].find(c=>c.id===t);p&&(this.selectedSymbol.set(p.name),this.fitKey.update(c=>c+1))}toggleFilter(t){this.filters.update(e=>L(j({},e),{[t]:!e[t]})),this.fitKey.update(e=>e+1)}recenter(){this.fitKey.update(t=>t+1)}clearSelection(){this.selectedSymbol.set(null)}shortPath(t){return N(t)}kindLabel(t){return t.charAt(0).toUpperCase()+t.slice(1)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=Q({type:n,selectors:[["app-graph"]],decls:2,vars:1,consts:[["surface","The graph"],[1,"gp-root"],[1,"gp-main"],[1,"gp-toolbar"],[1,"gp-search"],["type","text","placeholder","Search symbol\u2026 (function, class, route)","aria-label","Symbol search",3,"input","value"],["aria-hidden","true",1,"gp-spinner"],["role","listbox",1,"gp-results"],[1,"gp-filters"],["type","button",1,"gp-chip",3,"is-active"],[1,"gp-spacer"],[1,"gp-canvas-wrap"],[1,"gp-empty"],[3,"nodes","edges","selectedId","fitKey"],[1,"gp-panel"],["type","button",1,"gp-result"],["type","button",1,"gp-result",3,"click"],[1,"gp-result-dot"],[1,"gp-result-name","mono"],[1,"gp-result-kind"],[1,"gp-result-path","mono"],["type","button",1,"gp-chip",3,"click"],[1,"gp-chip-dot"],[1,"gp-chip-count"],["type","button",1,"gp-action",3,"click"],["type","button",1,"gp-action","gp-action-ghost",3,"click"],[1,"gp-stats"],[3,"nodeClick","nodes","edges","selectedId","fitKey"],[1,"gp-panel-head"],[1,"gp-panel-title"],[1,"gp-kind-pill"],[1,"mono"],[1,"gp-panel-path","mono"],[1,"muted"],[1,"gp-panel-eyebrow"],[1,"muted","gp-empty-line"],[1,"gp-code","mono"],[1,"gp-row"],[1,"gp-state-pill"],[1,"mono","gp-row-text"],[1,"muted","gp-row-meta"],["type","button",1,"gp-row","gp-row-button"],["type","button",1,"gp-row","gp-row-button",3,"click"]],template:function(e,r){e&1&&u(0,ee,1,0,"app-pick-project-empty",0)(1,ye,19,6,"div",1),e&2&&_(r.status.state().noProject?0:1)},dependencies:[H,W],styles:["[_nghost-%COMP%]{display:contents}.gp-root[_ngcontent-%COMP%]{flex:1;display:flex;min-height:0;min-width:0}.gp-main[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column}.gp-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--border-subtle);background:var(--bg-panel-2, var(--bg-panel));flex-wrap:wrap}.gp-search[_ngcontent-%COMP%]{position:relative;width:280px;flex-shrink:0}.gp-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;height:30px;padding:0 28px 0 10px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:7px;color:var(--text-primary);font-size:12px;font-family:var(--font-mono);outline:none;transition:border-color .1s}.gp-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{border-color:var(--accent)}.gp-spinner[_ngcontent-%COMP%]{position:absolute;right:8px;top:50%;width:12px;height:12px;margin-top:-6px;border:2px solid var(--border-subtle);border-top-color:var(--accent);border-radius:50%;animation:_ngcontent-%COMP%_gp-spin .7s linear infinite}@keyframes _ngcontent-%COMP%_gp-spin{to{transform:rotate(360deg)}}.gp-results[_ngcontent-%COMP%]{position:absolute;top:34px;left:0;right:0;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:8px;box-shadow:var(--shadow-pop, 0 12px 28px rgba(0, 0, 0, .5));padding:5px;z-index:30;max-height:320px;overflow-y:auto}.gp-result[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border-radius:5px;background:transparent;border:none;cursor:pointer;font:inherit;color:var(--text-primary);text-align:left}.gp-result[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.gp-result-dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%;background:var(--node-code);flex-shrink:0}.gp-result-dot.is-spec[_ngcontent-%COMP%]{background:var(--node-spec);border-radius:2px}.gp-result-dot.is-route[_ngcontent-%COMP%]{background:var(--node-route)}.gp-result-name[_ngcontent-%COMP%]{font-size:12px;flex-shrink:0}.gp-result-kind[_ngcontent-%COMP%]{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.gp-result-path[_ngcontent-%COMP%]{flex:1;text-align:right;font-size:10px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gp-filters[_ngcontent-%COMP%]{display:flex;gap:6px}.gp-chip[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:999px;font-size:11.5px;font-weight:500;cursor:pointer;border:1px solid var(--border-subtle);background:var(--bg-panel);color:var(--text-secondary);transition:all .1s}.gp-chip.is-active[_ngcontent-%COMP%]{border-color:transparent;background:var(--accent-soft);color:var(--accent)}.gp-chip-dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%}.gp-chip-dot[data-kind=code][_ngcontent-%COMP%]{background:var(--node-code)}.gp-chip-dot[data-kind=spec][_ngcontent-%COMP%]{background:var(--node-spec);border-radius:2px}.gp-chip-dot[data-kind=route][_ngcontent-%COMP%]{background:var(--node-route)}.gp-chip-dot[data-kind=test][_ngcontent-%COMP%]{background:var(--node-test)}.gp-chip-count[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-muted);font-variant-numeric:tabular-nums}.gp-spacer[_ngcontent-%COMP%]{flex:1}.gp-action[_ngcontent-%COMP%]{height:26px;padding:0 12px;border-radius:7px;border:1px solid var(--border-subtle);background:var(--bg-panel);color:var(--text-primary);font-size:12px;cursor:pointer}.gp-action[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.gp-action-ghost[_ngcontent-%COMP%]{background:transparent;border-color:transparent;color:var(--text-secondary)}.gp-canvas-wrap[_ngcontent-%COMP%]{flex:1;min-height:0;position:relative;display:flex}.gp-canvas-wrap[_ngcontent-%COMP%] app-graph-canvas[_ngcontent-%COMP%]{flex:1;min-height:0}.gp-empty[_ngcontent-%COMP%]{flex:1;display:grid;place-items:center;text-align:center;padding:60px 24px;background:var(--bg-canvas-2, var(--bg-canvas))}.gp-empty[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:18px;font-weight:600;margin:0 0 8px}.gp-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-secondary);font-size:13.5px;line-height:1.6;margin:0;max-width:520px}.gp-stats[_ngcontent-%COMP%]{margin-top:18px!important;font-family:var(--font-mono);font-size:11.5px!important;color:var(--text-muted)!important}.gp-panel[_ngcontent-%COMP%]{width:360px;flex-shrink:0;border-left:1px solid var(--border-subtle);background:var(--bg-panel);overflow-y:auto;padding:0 0 16px}.gp-panel-head[_ngcontent-%COMP%]{padding:14px;border-bottom:1px solid var(--border-subtle)}.gp-panel-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.gp-panel-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:14px;font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gp-kind-pill[_ngcontent-%COMP%]{font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:4px;background:var(--accent-soft);color:var(--accent)}.gp-panel-path[_ngcontent-%COMP%]{margin-top:6px;font-size:11px;color:var(--text-secondary);overflow-wrap:anywhere}.gp-panel[_ngcontent-%COMP%] section[_ngcontent-%COMP%]{padding:14px;border-bottom:1px solid var(--border-subtle)}.gp-panel-eyebrow[_ngcontent-%COMP%]{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px}.gp-code[_ngcontent-%COMP%]{margin:0;font-size:11.5px;line-height:1.6;color:var(--text-secondary);background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:7px;padding:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.gp-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:5px;font-size:11.5px;margin-bottom:4px;border:1px solid transparent}.gp-row-button[_ngcontent-%COMP%]{width:100%;background:transparent;cursor:pointer;text-align:left;color:inherit;font:inherit}.gp-row-button[_ngcontent-%COMP%]:hover{background:var(--bg-hover);border-color:var(--border-subtle)}.gp-row-text[_ngcontent-%COMP%]{flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gp-row-meta[_ngcontent-%COMP%]{flex:1;text-align:right;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gp-state-pill[_ngcontent-%COMP%]{font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:1px 6px;border-radius:999px;background:var(--bg-canvas);color:var(--text-muted);border:1px solid var(--border-subtle)}.gp-state-pill[data-state=verified][_ngcontent-%COMP%], .gp-state-pill[data-state=implemented][_ngcontent-%COMP%]{color:var(--ok, #4caf50);border-color:color-mix(in srgb,var(--ok, #4caf50) 40%,transparent)}.gp-state-pill[data-state=drifted][_ngcontent-%COMP%]{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}.gp-state-pill[data-state=broken][_ngcontent-%COMP%], .gp-state-pill[data-state=orphaned][_ngcontent-%COMP%]{color:var(--error);border-color:color-mix(in srgb,var(--error) 40%,transparent)}.gp-empty-line[_ngcontent-%COMP%]{font-size:12px;padding:4px 8px}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono)}"],changeDetection:0})};function J(n,t,e){return{id:n.id,label:n.name,sub:N(n.filePath),kind:n.kind,x:t,y:e}}function N(n){return n?n.split("/").slice(-2).join("/"):""}function Y(n){return n==="spec"?"spec":n==="route"?"route":n==="test"?"test":"code"}export{X as Graph};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as P}from"./chunk-5OQKAJAE.js";import{a as M}from"./chunk-4LHBWWP7.js";import"./chunk-FTESTUEO.js";import{d as b}from"./chunk-MW7ICSRM.js";import{a as w}from"./chunk-47QYKLE5.js";import{a as y}from"./chunk-ZABKKHJ3.js";import"./chunk-L4TVIPSR.js";import"./chunk-RP3WU5Y6.js";import{$a as v,Aa as s,Db as C,K as d,Ka as m,Kb as h,Ra as f,Sa as p,Ta as u,Wa as g,Xa as x,Ya as _,Za as i,_a as r,jb as l,sb as a,tb as c}from"./chunk-WVCKOJZL.js";var k=e=>["/runs",e],R=(e,o)=>o.id;function S(e,o){e&1&&v(0,"app-pick-project-empty",0)}function E(e,o){e&1&&(i(0,"div",13),a(1,"No runs yet. Start one from the Workflows page."),r())}function j(e,o){if(e&1&&(i(0,"a",14)(1,"span",15),a(2),r(),i(3,"span",16),a(4),r(),i(5,"span",17),a(6),r(),i(7,"span",18),a(8),r(),i(9,"span",19),a(10),r()()),e&2){let t=o.$implicit,n=l(3);_("routerLink",C(7,k,t.id)),s(),f("data-status",t.status),s(),c(t.status),s(2),c(t.workflowName),s(2),c(t.id.slice(0,8)),s(2),c(n.durationOf(t)),s(2),c(n.timeAgo(t))}}function A(e,o){if(e&1&&g(0,j,11,9,"a",14,R),e&2){let t=l(2);x(t.runs())}}function D(e,o){if(e&1&&(i(0,"div",1)(1,"header",2)(2,"div",3)(3,"div",4),a(4,"Runs"),r(),i(5,"div",5),a(6),r()()(),i(7,"div",6)(8,"div",7)(9,"span",8),a(10,"Status"),r(),i(11,"span",9),a(12,"Workflow"),r(),i(13,"span",10),a(14,"Run ID"),r(),i(15,"span",11),a(16,"Duration"),r(),i(17,"span",12),a(18,"When"),r()(),p(19,E,2,0,"div",13)(20,A,2,0),r()()),e&2){let t=l();s(6),c(t.resource.state().loading?"loading\u2026":t.runs().length+" runs"),s(13),u(t.runs().length===0&&!t.resource.state().loading?19:20)}}var O=class e{api=d(y);projects=d(w);resource=M(this.api,()=>`/api/workflows/runs?limit=100${this.projects.projectQuery("&")}`);runs=h(()=>this.resource.state().data?.runs??[]);durationOf(o){if(!o.startedAt)return"\u2014";let n=(o.completedAt??o.lastActivityAt)-o.startedAt;return n>=6e4?Math.round(n/6e4)+"m "+Math.round(n%6e4/1e3)+"s":n>=1e3?Math.round(n/1e3)+"s":n+"ms"}timeAgo(o){let t=o.lastActivityAt;if(!t)return"";let n=Date.now()-t;return n<6e4?"just now":n<36e5?Math.round(n/6e4)+"m ago":n<864e5?Math.round(n/36e5)+"h ago":Math.round(n/864e5)+"d ago"}static \u0275fac=function(t){return new(t||e)};static \u0275cmp=m({type:e,selectors:[["app-runs"]],decls:2,vars:1,consts:[["surface","Runs"],[1,"page"],[1,"page-head"],[1,"title-block"],[1,"title"],[1,"sub"],[1,"card","list","scroll-y"],[1,"header-row"],[1,"col-status"],[1,"col-wf"],[1,"col-id","mono"],[1,"col-dur"],[1,"col-when"],[1,"empty"],[1,"row","row-link",3,"routerLink"],[1,"status-pill"],[1,"col-wf","mono"],[1,"col-id","mono","muted"],[1,"col-dur","mono"],[1,"col-when","muted"]],template:function(t,n){t&1&&p(0,S,1,0,"app-pick-project-empty",0)(1,D,21,2,"div",1),t&2&&u(n.resource.state().noProject?0:1)},dependencies:[b,P],styles:["[_nghost-%COMP%]{display:contents}.page[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-height:0;padding:16px 18px 18px}.title[_ngcontent-%COMP%]{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em}.sub[_ngcontent-%COMP%]{color:var(--text-secondary);margin-top:2px}.page-head[_ngcontent-%COMP%]{margin-bottom:12px}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono)}.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:hidden}.list[_ngcontent-%COMP%]{flex:1;min-height:0}.header-row[_ngcontent-%COMP%], .row[_ngcontent-%COMP%]{display:grid;grid-template-columns:110px 1fr 120px 100px 110px;gap:14px;align-items:center;padding:10px 14px}.header-row[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600;border-bottom:1px solid var(--border-subtle)}.row[_ngcontent-%COMP%]{border-top:1px solid var(--border-subtle);cursor:pointer;font-size:12.5px}.row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.row[_ngcontent-%COMP%]:first-of-type{border-top:none}.row-link[_ngcontent-%COMP%]{text-decoration:none;color:inherit}.status-pill[_ngcontent-%COMP%]{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill);text-transform:capitalize;display:inline-block;width:fit-content}.status-pill[data-status=running][_ngcontent-%COMP%]{color:var(--info);background:var(--info-soft)}.status-pill[data-status=paused][_ngcontent-%COMP%]{color:var(--warn);background:var(--warn-soft)}.status-pill[data-status=completed][_ngcontent-%COMP%]{color:var(--success);background:var(--success-soft)}.status-pill[data-status=failed][_ngcontent-%COMP%]{color:var(--error);background:var(--error-soft)}.status-pill[data-status=cancelled][_ngcontent-%COMP%], .status-pill[data-status=pending][_ngcontent-%COMP%]{color:var(--text-muted);background:#ffffff0d}.col-wf[_ngcontent-%COMP%], .col-id[_ngcontent-%COMP%], .col-dur[_ngcontent-%COMP%], .col-when[_ngcontent-%COMP%]{font-size:12px}.empty[_ngcontent-%COMP%]{padding:40px;text-align:center;color:var(--text-muted)}"],changeDetection:0})};export{O as Runs};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as S}from"./chunk-4LHBWWP7.js";import{a as K}from"./chunk-ZABKKHJ3.js";import{$a as N,Aa as r,K as B,Ka as P,Kb as b,Nb as V,Ob as w,P as f,Q as v,Sa as u,Ta as x,Ua as H,Va as F,Wa as p,Xa as g,Ya as D,Za as a,_a as i,aa as T,ab as h,bb as C,cb as z,db as y,hb as k,ib as $,jb as s,pb as E,qb as O,sb as o,tb as d,ub as _,vb as R}from"./chunk-WVCKOJZL.js";var Y=(n,e)=>e.name;function q(n,e){if(n&1){let t=y();h(0,"button",2),$("click",function(){let c=f(t).$implicit,m=s();return v(m.onClick(c))}),h(1,"span",3),o(2),C(),h(3,"span",4),z(4,"span",5),C(),h(5,"span",6),o(6),C(),h(7,"span",7),o(8,"\u203A"),C()()}if(n&2){let t=e.$implicit,l=s();O("selected",l.selectedKey()===t.name),r(2),d(t.name),r(2),E("width",l.width(t),"%")("background",l.barColor(t)),r(2),d(l.fmtValue(t))}}var I=class n{items=w([]);valueKey=w("calls");selectedKey=w(null);color=w("var(--accent)");fmt=w(e=>String(e));itemClick=V();max=b(()=>{let e=this.items();return Math.max(1e-4,...e.map(t=>Number(t[this.valueKey()]??0)))});barColor(e){let t=this.color();return typeof t=="function"?t(e):t}width(e){return Number(e[this.valueKey()]??0)/this.max()*100}value(e){return Number(e[this.valueKey()]??0)}fmtValue(e){return this.fmt()(this.value(e))}onClick(e){this.itemClick.emit(e)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=P({type:n,selectors:[["app-h-bars"]],inputs:{items:[1,"items"],valueKey:[1,"valueKey"],selectedKey:[1,"selectedKey"],color:[1,"color"],fmt:[1,"fmt"]},outputs:{itemClick:"itemClick"},decls:3,vars:0,consts:[[1,"hbar-list"],["type","button",1,"hbar-row",3,"selected"],["type","button",1,"hbar-row",3,"click"],[1,"bar-label","mono"],[1,"bar-track"],[1,"bar-fill"],[1,"bar-value","mono"],["aria-hidden","true",1,"chev"]],template:function(t,l){t&1&&(h(0,"div",0),p(1,q,9,8,"button",1,Y),C()),t&2&&(r(),g(l.items()))},styles:["[_nghost-%COMP%]{display:block}.hbar-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.hbar-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:130px 1fr 70px 14px;align-items:center;gap:10px;padding:5px 8px;background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;color:var(--text-primary);font-family:inherit;text-align:left}.hbar-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.hbar-row.selected[_ngcontent-%COMP%]{background:var(--bg-active);border-color:var(--border-strong)}.bar-label[_ngcontent-%COMP%]{font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track[_ngcontent-%COMP%]{height:14px;background:#ffffff0d;border-radius:4px;overflow:hidden}.bar-fill[_ngcontent-%COMP%]{display:block;height:100%;border-radius:4px}.bar-value[_ngcontent-%COMP%]{font-size:11px;text-align:right;color:var(--text-secondary);font-variant-numeric:tabular-nums}.chev[_ngcontent-%COMP%]{color:var(--text-muted);font-size:14px}"],changeDetection:0})};var G=(n,e)=>e.path,J=(n,e)=>e.type,j=(n,e)=>e.name,L=(n,e)=>e.session_id;function Q(n,e){if(n&1){let t=y();a(0,"button",18),k("click",function(){let c=f(t).$implicit,m=s();return v(m.setRange(c))}),o(1),i()}if(n&2){let t=e.$implicit,l=s();O("active",l.range()===t),r(),_(" ",t==="today"?"Today":t==="week"?"Week":t==="month"?"Month":"All"," ")}}function X(n,e){n&1&&(a(0,"div",11),o(1,"No file-targeted tool calls in this window."),i())}function Z(n,e){if(n&1){let t=y();a(0,"button",20),k("click",function(){let c=f(t).$implicit,m=s(2);return v(m.openFile(c.path))}),a(1,"span",21),o(2),i(),a(3,"span",22),o(4),i()()}if(n&2){let t=e.$implicit,l=s(2);E("background",l.fileBg(t.calls))("color",l.fileColor(t.calls))("flex","1 1 "+(t.path.length*3+50)+"px"),D("title",t.path+" \u2014 "+t.calls+" calls"),r(2),d(t.path),r(2),_("\xD7",t.calls)}}function ee(n,e){if(n&1&&(a(0,"div",12),p(1,Z,5,9,"button",19,G),i()),n&2){let t=s();r(),g(t.files())}}function te(n,e){n&1&&(a(0,"div",11),o(1,"No prompt data yet."),i())}function ne(n,e){if(n&1&&(a(0,"div",23)(1,"span",24),o(2),i(),a(3,"span",25),o(4),i(),a(5,"span",26),o(6),i(),a(7,"span",27),o(8),i()()),n&2){let t=e.$implicit,l=s(2);r(2),d(t.type),r(2),_("",t.prompts," prompts"),r(2),d(l.fmtTokens(t.tokens)),r(2),_("$",t.cost.toFixed(2))}}function ie(n,e){if(n&1&&(a(0,"div",15),p(1,ne,9,4,"div",23,J),i()),n&2){let t=s();r(),g(t.subagents())}}function ae(n,e){n&1&&(a(0,"div",11),o(1,"No Task tool calls in this window \u2014 the agent hasn't dispatched any subagents."),i())}function oe(n,e){if(n&1){let t=y();a(0,"button",29),k("click",function(){let c=f(t).$implicit,m=s(2);return v(m.openSubagent(c.name))}),a(1,"span",30),o(2),i(),a(3,"div",31),N(4,"div",32),i(),a(5,"span",33),o(6),i(),a(7,"span",34),o(8),i()()}if(n&2){let t=e.$implicit,l=s(2);r(2),d(t.name),r(2),E("width",l.subagentBarFrac(t.calls)*100,"%"),r(2),R("",t.calls," call",t.calls===1?"":"s"),r(2),_("last ",l.timeAgo(t.lastSeen))}}function re(n,e){if(n&1&&(a(0,"div",16),p(1,oe,9,6,"button",28,j),i()),n&2){let t=s();r(),g(t.subagentByName())}}function le(n,e){n&1&&(a(0,"div",39),o(1,"Loading\u2026"),i())}function de(n,e){if(n&1&&(a(0,"div",41)(1,"span",42),o(2),i(),a(3,"span",43),o(4),i(),a(5,"span",44),o(6),i()()),n&2){let t=e.$implicit,l=s(3);r(2),d(t.name),r(2),_("",t.calls,"\xD7"),r(2),d(l.fmtBytes(t.bytes))}}function se(n,e){if(n&1&&(a(0,"div",41)(1,"span",42),o(2),i(),a(3,"span",44),o(4),i(),a(5,"span",43),o(6),i(),a(7,"span",44),o(8),i()()),n&2){let t=e.$implicit,l=s(3);r(2),d(l.shortId(t.session_id)),r(2),d(t.last_model??"\u2014"),r(2),_("",t.calls,"\xD7"),r(2),d(l.timeAgo(t.lastTs))}}function ce(n,e){n&1&&(a(0,"div",39),o(1,"No sessions touched this file in window."),i())}function me(n,e){if(n&1&&(a(0,"section",40)(1,"h4"),o(2,"By tool"),i(),p(3,de,7,3,"div",41,j),i(),a(5,"section",40)(6,"h4"),o(7),i(),p(8,se,9,4,"div",41,L,!1,ce,2,0,"div",39),i()),n&2){let t=e;r(3),g(t.byTool),r(4),_("Sessions (",t.sessions.length,")"),r(),g(t.sessions)}}function pe(n,e){if(n&1&&(a(0,"div",47)(1,"span",48),o(2),i(),a(3,"span",43),o(4),i(),a(5,"span",44),o(6),i()()),n&2){let t=e.$implicit,l=s(3);r(2),d(l.truncate(t.input,140)),r(2),_("",t.calls,"\xD7"),r(2),d(l.fmtBytes(t.bytes))}}function ge(n,e){n&1&&(a(0,"div",39),o(1,"No inputs captured."),i())}function ue(n,e){if(n&1&&(a(0,"div",41)(1,"span",42),o(2),i(),a(3,"span",44),o(4),i(),a(5,"span",43),o(6),i(),a(7,"span",44),o(8),i()()),n&2){let t=e.$implicit,l=s(3);r(2),d(l.shortId(t.session_id)),r(2),d(t.last_model??"\u2014"),r(2),_("",t.calls,"\xD7"),r(2),d(l.timeAgo(t.lastTs))}}function xe(n,e){if(n&1&&(a(0,"section",45)(1,"div")(2,"span",10),o(3,"Total calls"),i(),a(4,"span",46),o(5),i()(),a(6,"div")(7,"span",10),o(8,"Result bytes"),i(),a(9,"span",46),o(10),i()(),a(11,"div")(12,"span",10),o(13,"Sessions"),i(),a(14,"span",46),o(15),i()()(),a(16,"section",40)(17,"h4"),o(18,"Top inputs"),i(),p(19,pe,7,3,"div",47,H,!1,ge,2,0,"div",39),i(),a(22,"section",40)(23,"h4"),o(24,"Recent sessions"),i(),p(25,ue,9,4,"div",41,L),i()),n&2){let t=e,l=s(2);r(5),d(t.totals.calls),r(5),d(l.fmtBytes(t.totals.bytes)),r(5),d(t.totals.sessions),r(4),g(t.inputs),r(6),g(t.recentSessions)}}function _e(n,e){if(n&1&&(a(0,"div",52),o(1),i()),n&2){let t=s().$implicit,l=s(3);r(),d(l.truncate(t.description,160))}}function be(n,e){if(n&1&&(a(0,"div",53),o(1),i()),n&2){let t=s().$implicit,l=s(3);r(),d(l.truncate(t.prompt,200))}}function fe(n,e){if(n&1&&(a(0,"article",49)(1,"header",50)(2,"span",46),o(3),i(),a(4,"span",51),o(5),i()(),u(6,_e,2,1,"div",52),u(7,be,2,1,"div",53),i()),n&2){let t=e.$implicit,l=s(3);r(3),d(l.shortId(t.session_id)),r(2),d(l.timeAgo(t.ts)),r(),x(t.description?6:-1),r(),x(t.prompt?7:-1)}}function ve(n,e){n&1&&(a(0,"div",39),o(1,"No invocations in window."),i())}function he(n,e){if(n&1&&(a(0,"section",45)(1,"div")(2,"span",10),o(3,"Invocations"),i(),a(4,"span",46),o(5),i()(),a(6,"div")(7,"span",10),o(8,"Sessions"),i(),a(9,"span",46),o(10),i()()(),a(11,"section",40)(12,"h4"),o(13,"Invocations"),i(),p(14,fe,8,4,"article",49,H,!1,ve,2,0,"div",39),i()),n&2){let t=e;r(5),d(t.totals.calls),r(5),d(t.totals.sessions),r(4),g(t.invocations)}}function ye(n,e){if(n&1){let t=y();a(0,"aside",17)(1,"header",35)(2,"div")(3,"div",36),o(4),i(),a(5,"div",37),o(6),i()(),a(7,"button",38),k("click",function(){f(t);let c=s();return v(c.closeDrill())}),o(8,"\xD7"),i()(),u(9,le,2,0,"div",39),u(10,me,11,2),u(11,xe,27,4),u(12,he,17,3),i()}if(n&2){let t,l,c,m=e,M=s();r(4),d(m.kind),r(2),d(M.drillTitle()),r(3),x(M.drillLoading()?9:-1),r(),x((t=m.kind==="file"&&M.fileDrill.state().data)?10:-1,t),r(),x((l=m.kind==="tool"&&M.toolDrill.state().data)?11:-1,l),r(),x((c=m.kind==="subagent"&&M.subagentDrill.state().data)?12:-1,c)}}var A=class n{api=B(K);range=T("week");ranges=["today","week","month","all"];resource=S(this.api,()=>`/api/claude/heatmap?range=${this.range()}`);files=b(()=>this.resource.state().data?.files??[]);tools=b(()=>this.resource.state().data?.tools??[]);subagents=b(()=>this.resource.state().data?.subagents??[]);subagentByName=b(()=>this.resource.state().data?.subagentByName??[]);maxFile=b(()=>Math.max(1,...this.files().map(e=>e.calls)));maxSubagentCalls=b(()=>Math.max(1,...this.subagentByName().map(e=>e.calls)));drill=T(null);fileDrill=S(this.api,()=>{let e=this.drill();return e?.kind==="file"?`/api/claude/heatmap/file?path=${encodeURIComponent(e.key)}&range=${this.range()}`:null});toolDrill=S(this.api,()=>{let e=this.drill();return e?.kind==="tool"?`/api/claude/heatmap/tool?name=${encodeURIComponent(e.key)}&range=${this.range()}`:null});subagentDrill=S(this.api,()=>{let e=this.drill();return e?.kind==="subagent"?`/api/claude/heatmap/subagent?type=${encodeURIComponent(e.key)}&range=${this.range()}`:null});drillTitle=b(()=>{let e=this.drill();return e?e.kind==="file"?e.key:e.kind==="tool"?e.key+" calls":e.key+" subagent":""});drillLoading=b(()=>{let e=this.drill();return e?e.kind==="file"?this.fileDrill.state().loading:e.kind==="tool"?this.toolDrill.state().loading:this.subagentDrill.state().loading:!1});setRange(e){this.range.set(e)}openFile(e){this.drill.set({kind:"file",key:e})}openTool(e){this.drill.set({kind:"tool",key:e.name})}openSubagent(e){this.drill.set({kind:"subagent",key:e})}closeDrill(){this.drill.set(null)}fileBg(e){let t=e/this.maxFile();return`color-mix(in srgb, var(--warn) ${Math.round(15+t*72)}%, var(--bg-elevated))`}fileColor(e){return e/this.maxFile()>.5?"#fff":"var(--text-secondary)"}subagentBarFrac(e){return Math.max(0,Math.min(1,e/this.maxSubagentCalls()))}fmtTokens=e=>e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(0)+"k":String(e);fmtBytes(e){return e>=1e6?(e/1e6).toFixed(1)+"MB":e>=1e3?(e/1e3).toFixed(0)+"kB":e+"B"}timeAgo(e){let t=Date.now()-e;return t<6e4?"just now":t<36e5?Math.round(t/6e4)+"m ago":t<864e5?Math.round(t/36e5)+"h ago":Math.round(t/864e5)+"d ago"}shortId(e){return e.slice(0,8)}truncate(e,t=120){return e.length>t?e.slice(0,t)+"\u2026":e}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=P({type:n,selectors:[["app-heatmap"]],decls:40,vars:6,consts:[[1,"hm-root"],[1,"page","scroll-y"],[1,"page-head"],[1,"title-block"],[1,"title"],[1,"sub"],[1,"range-selector"],["type","button",1,"range-opt",3,"active"],[1,"card","card-pad"],[1,"card-title"],[1,"muted"],[1,"empty"],[1,"file-grid"],[1,"bottom-grid"],["valueKey","calls",3,"itemClick","items","fmt"],[1,"agent-bars"],[1,"subagent-list"],[1,"hm-drawer"],["type","button",1,"range-opt",3,"click"],["type","button",1,"file-cell",3,"background","color","flex","title"],["type","button",1,"file-cell",3,"click","title"],[1,"mono","path"],[1,"mono","calls"],[1,"agent-row"],[1,"agent-type"],[1,"agent-count","mono"],[1,"agent-tokens","mono"],[1,"agent-cost","mono"],["type","button",1,"subagent-row"],["type","button",1,"subagent-row",3,"click"],[1,"mono","subagent-name"],[1,"subagent-bar-wrap"],[1,"subagent-bar"],[1,"mono","tabular","subagent-calls"],[1,"mono","muted","subagent-when"],[1,"hm-drawer-head"],[1,"hm-drawer-kind"],[1,"hm-drawer-title","mono"],["type","button","aria-label","Close",1,"hm-close",3,"click"],[1,"muted","hm-pad"],[1,"hm-section"],[1,"hm-row"],[1,"mono","hm-row-key"],[1,"mono","tabular","hm-row-val"],[1,"muted","mono","hm-row-meta"],[1,"hm-summary"],[1,"mono"],[1,"hm-row","hm-row-input"],[1,"mono","hm-row-key","truncate"],[1,"hm-invocation"],[1,"hm-inv-head"],[1,"muted","mono"],[1,"hm-inv-desc"],[1,"hm-inv-prompt","muted","mono"]],template:function(t,l){if(t&1&&(a(0,"div",0)(1,"div",1)(2,"header",2)(3,"div",3)(4,"div",4),o(5,"Heatmap"),i(),a(6,"div",5),o(7,"Which files + tools + subagents are burning tokens"),i()(),a(8,"div",6),p(9,Q,2,3,"button",7,F),i()(),a(11,"div",8)(12,"div",9),o(13,"Files "),a(14,"span",10),o(15,"\xB7 read/edit/write count \xB7 click to drill"),i()(),u(16,X,2,0,"div",11)(17,ee,3,0,"div",12),i(),a(18,"div",13)(19,"div",8)(20,"div",9),o(21,"Tools "),a(22,"span",10),o(23,"\xB7 click for input breakdown"),i()(),a(24,"app-h-bars",14),k("itemClick",function(m){return l.openTool(m)}),i()(),a(25,"div",8)(26,"div",9),o(27,"Main vs subagent "),a(28,"span",10),o(29,"\xB7 token + cost share"),i()(),u(30,te,2,0,"div",11)(31,ie,3,0,"div",15),i()(),a(32,"div",8)(33,"div",9),o(34,"Subagents by name "),a(35,"span",10),o(36,"\xB7 from Task tool calls \xB7 click for invocations"),i()(),u(37,ae,2,0,"div",11)(38,re,3,0,"div",16),i()(),u(39,ye,13,6,"aside",17),i()),t&2){let c;r(9),g(l.ranges),r(7),x(l.files().length===0?16:17),r(8),D("items",l.tools())("fmt",l.fmtTokens),r(6),x(l.subagents().length===0?30:31),r(7),x(l.subagentByName().length===0?37:38),r(2),x((c=l.drill())?39:-1,c)}},dependencies:[I],styles:["[_nghost-%COMP%]{display:contents}.hm-root[_ngcontent-%COMP%]{flex:1;display:flex;min-height:0;min-width:0}.page[_ngcontent-%COMP%]{flex:1;min-width:0;padding:18px}.page-head[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}.title-block[_ngcontent-%COMP%]{flex:1}.title[_ngcontent-%COMP%]{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em}.sub[_ngcontent-%COMP%]{color:var(--text-secondary);margin-top:2px}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono)}.tabular[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}.truncate[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty[_ngcontent-%COMP%]{color:var(--text-muted);padding:18px;text-align:center;font-size:12.5px}.range-selector[_ngcontent-%COMP%]{display:inline-flex;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:7px;padding:2px;gap:2px}.range-opt[_ngcontent-%COMP%]{border:none;cursor:pointer;border-radius:5px;padding:5px 12px;font-size:var(--fs-sm);font-weight:500;font-family:var(--font-ui);background:transparent;color:var(--text-muted)}.range-opt.active[_ngcontent-%COMP%]{background:var(--bg-elevated);color:var(--text-primary)}.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg);margin-bottom:14px}.card-pad[_ngcontent-%COMP%]{padding:14px}.card-title[_ngcontent-%COMP%]{font-weight:600;font-size:12.5px;margin-bottom:12px}.file-grid[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:4px}.file-cell[_ngcontent-%COMP%]{height:38px;min-width:50px;border-radius:6px;border:1px solid rgba(0,0,0,.3);display:flex;flex-direction:column;justify-content:center;padding:0 9px;gap:1px;font-size:10px;overflow:hidden;cursor:pointer;text-align:left;font-family:inherit;transition:transform .1s}.file-cell[_ngcontent-%COMP%]:hover{transform:translateY(-1px)}.path[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px}.calls[_ngcontent-%COMP%]{opacity:.75;font-size:9.5px}.bottom-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:1100px){.bottom-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.agent-bars[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.agent-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 90px 70px 60px;gap:10px;align-items:center;padding:8px 10px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:6px;font-size:12px}.agent-type[_ngcontent-%COMP%]{text-transform:capitalize}.agent-count[_ngcontent-%COMP%], .agent-tokens[_ngcontent-%COMP%]{text-align:right;font-size:11px;color:var(--text-secondary)}.agent-cost[_ngcontent-%COMP%]{text-align:right;font-weight:600}.subagent-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.subagent-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(140px,1fr) 2fr 90px 100px;gap:12px;align-items:center;padding:8px 10px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:6px;font-size:12px;cursor:pointer;font-family:inherit;color:inherit;text-align:left}.subagent-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover);border-color:var(--border-strong)}.subagent-name[_ngcontent-%COMP%]{font-size:12.5px;font-weight:500}.subagent-calls[_ngcontent-%COMP%]{text-align:right;font-size:11.5px}.subagent-when[_ngcontent-%COMP%]{text-align:right;font-size:11px}.subagent-bar-wrap[_ngcontent-%COMP%]{height:10px;border-radius:999px;background:var(--bg-elevated);overflow:hidden}.subagent-bar[_ngcontent-%COMP%]{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-secondary, var(--accent)));border-radius:inherit}.hm-drawer[_ngcontent-%COMP%]{width:380px;flex-shrink:0;border-left:1px solid var(--border-subtle);background:var(--bg-panel);overflow-y:auto;padding:0 0 18px;animation:_ngcontent-%COMP%_hm-slide-in .16s ease-out}@keyframes _ngcontent-%COMP%_hm-slide-in{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.hm-drawer-head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border-subtle);position:sticky;top:0;background:var(--bg-panel);z-index:1}.hm-drawer-kind[_ngcontent-%COMP%]{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:4px}.hm-drawer-title[_ngcontent-%COMP%]{font-size:13px;font-weight:600;overflow-wrap:anywhere}.hm-close[_ngcontent-%COMP%]{width:28px;height:28px;border-radius:6px;border:1px solid var(--border-subtle);background:transparent;color:var(--text-secondary);cursor:pointer;font-size:18px;line-height:1;flex-shrink:0}.hm-close[_ngcontent-%COMP%]:hover{background:var(--bg-hover);color:var(--text-primary)}.hm-section[_ngcontent-%COMP%]{padding:12px 16px;border-bottom:1px solid var(--border-subtle)}.hm-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600;margin:0 0 8px}.hm-pad[_ngcontent-%COMP%]{padding:16px}.hm-summary[_ngcontent-%COMP%]{display:flex;gap:16px;padding:12px 16px;border-bottom:1px solid var(--border-subtle);background:var(--bg-canvas)}.hm-summary[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px}.hm-summary[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%]{font-size:10px;text-transform:uppercase;letter-spacing:.05em}.hm-summary[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%]{font-size:14px;font-weight:600}.hm-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr auto auto auto;gap:8px;align-items:center;font-size:11.5px;padding:4px 0}.hm-row-input[_ngcontent-%COMP%]{grid-template-columns:1fr auto auto;border-bottom:1px dashed var(--border-subtle);padding:6px 0}.hm-row-input[_ngcontent-%COMP%]:last-child{border-bottom:none}.hm-row-key[_ngcontent-%COMP%]{font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hm-row-val[_ngcontent-%COMP%]{font-size:11.5px;font-weight:600}.hm-row-meta[_ngcontent-%COMP%]{font-size:10.5px}.hm-invocation[_ngcontent-%COMP%]{background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:6px;padding:8px 10px;margin-bottom:8px}.hm-invocation[_ngcontent-%COMP%]:last-child{margin-bottom:0}.hm-inv-head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;font-size:11px;margin-bottom:4px}.hm-inv-desc[_ngcontent-%COMP%]{font-size:12px;line-height:1.45}.hm-inv-prompt[_ngcontent-%COMP%]{margin-top:4px;font-size:11px;line-height:1.45;overflow-wrap:anywhere}"],changeDetection:0})};export{A as Heatmap};
|