@hienlh/ppm 0.17.46 → 0.17.48
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/CHANGELOG.md +3657 -3639
- package/CLAUDE.md +1 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +4 -4
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/bun.lock +10 -10
- package/dist/web/assets/{ai-resource-editor-C6whUvqU.js → ai-resource-editor-DxM8JFQ0.js} +1 -1
- package/dist/web/assets/{audio-preview-zCaVGICs.js → audio-preview-DE1sEUmx.js} +1 -1
- package/dist/web/assets/{chat-tab-34EBK6a-.js → chat-tab-BKZAcGU7.js} +4 -4
- package/dist/web/assets/{code-editor-B-3Ys0pn.js → code-editor-DjconF_F.js} +2 -2
- package/dist/web/assets/{conflict-editor-CmbzavrH.js → conflict-editor-CLfc44RC.js} +1 -1
- package/dist/web/assets/{csv-preview-DSe1UKLQ.js → csv-preview-DxD081uz.js} +1 -1
- package/dist/web/assets/{database-viewer-BC3tMeSZ.js → database-viewer-Du1HOmex.js} +1 -1
- package/dist/web/assets/{diff-viewer-CH7HtuY_.js → diff-viewer-CeznVBNn.js} +1 -1
- package/dist/web/assets/{docx-preview-CXw0EiKN.js → docx-preview-DYbOm4bo.js} +1 -1
- package/dist/web/assets/{extension-webview-BKNPTGJ4.js → extension-webview-BYBwAaZv.js} +1 -1
- package/dist/web/assets/{git-log-panel-4at7vGet.js → git-log-panel-CgUkbt6i.js} +1 -1
- package/dist/web/assets/{glide-data-grid-BJBoXCv5.js → glide-data-grid-CBLhaW5g.js} +1 -1
- package/dist/web/assets/{group-chat-tab-XNIsuLbW.js → group-chat-tab-5EKPaL_r.js} +1 -1
- package/dist/web/assets/{image-preview-Hqu7-Pbv.js → image-preview-DjqmBn2G.js} +1 -1
- package/dist/web/assets/index-6_hleyhK.css +2 -0
- package/dist/web/assets/{index-BR5KVuwx.js → index-nsuPdCaW.js} +3 -3
- package/dist/web/assets/{keybindings-store-B_JMJIhN.js → keybindings-store-DTJlq-2C.js} +1 -1
- package/dist/web/assets/{markdown-renderer-CPm8QbIv.js → markdown-renderer-BqthPP7U.js} +1 -1
- package/dist/web/assets/{markdown-renderer-WnJVcJ2v.js → markdown-renderer-CrZWFsD-.js} +1 -1
- package/dist/web/assets/{notification-store-CD8j6i20.js → notification-store-ClZEc-lT.js} +1 -1
- package/dist/web/assets/{pdf-preview-CA71gMQU.js → pdf-preview-BZY4PbMF.js} +1 -1
- package/dist/web/assets/{postgres-viewer-CkZu5Ary.js → postgres-viewer-DzpIkZtk.js} +1 -1
- package/dist/web/assets/{settings-tab-Cy2JvRdN.js → settings-tab-o3KSdtxR.js} +1 -1
- package/dist/web/assets/{sql-query-editor-DxaQ6kWk.js → sql-query-editor-COXQHj5D.js} +1 -1
- package/dist/web/assets/{sqlite-viewer-1fDZK9Jx.js → sqlite-viewer-Dew5JH18.js} +1 -1
- package/dist/web/assets/{system-monitor-tab-B64gFhnE.js → system-monitor-tab-CwGbHdi_.js} +1 -1
- package/dist/web/assets/{terminal-tab-Dl-I2wBS.js → terminal-tab-DqdmayEL.js} +1 -1
- package/dist/web/assets/{tool-cards-HHgeNBqk.js → tool-cards-CNuiAf2X.js} +2 -2
- package/dist/web/assets/{use-monaco-theme-uP8s-9Qb.js → use-monaco-theme-uvD7nRfD.js} +1 -1
- package/dist/web/assets/{video-preview-sGT5PM0H.js → video-preview-BDpCb2Pd.js} +1 -1
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/package.json +106 -106
- package/packages/vscode-compat/node_modules/.bin/tsc.bunx +0 -0
- package/packages/vscode-compat/node_modules/.bin/tsc.exe +0 -0
- package/packages/vscode-compat/node_modules/.bin/tsserver.bunx +0 -0
- package/packages/vscode-compat/node_modules/.bin/tsserver.exe +0 -0
- package/scripts/check-ppm-dir-usage.sh +0 -0
- package/scripts/install.sh +0 -0
- package/scripts/release.sh +0 -0
- package/src/providers/claude-agent-sdk.ts +116 -2
- package/src/providers/image-limit-detection.ts +30 -0
- package/src/server/routes/chat.ts +24 -21
- package/src/server/routes/upgrade.ts +28 -12
- package/src/server/ws/chat.ts +27 -0
- package/src/services/slash-discovery/discover-skill-roots.ts +22 -3
- package/src/services/slash-discovery/index.ts +1 -0
- package/src/services/slash-discovery/rewrite-slash-alias.ts +35 -0
- package/src/services/slash-discovery/skill-loader.ts +40 -5
- package/src/services/slash-discovery/types.ts +6 -0
- package/src/services/transcript-images-file.ts +144 -0
- package/src/services/transcript-images.ts +129 -66
- package/src/services/upgrade.service.ts +38 -0
- package/src/types/api.ts +1 -0
- package/src/web/components/chat/session-debug-dialog.tsx +36 -10
- package/src/web/hooks/use-chat.ts +20 -0
- package/dist/web/assets/index-hIIXGoXQ.css +0 -2
package/CLAUDE.md
CHANGED
|
@@ -67,6 +67,7 @@ Exceptions (intentionally use real `homedir()`):
|
|
|
67
67
|
- **File watching**: never `fs.watch(dir, { recursive: true })` on a project root — on Linux that is one inotify watch per subdirectory, `node_modules` included (it once cost 359k watches). Ignored dirs must be pruned at registration time via `src/services/file-watcher/watch-tree.ts`.
|
|
68
68
|
- **Project Claude settings**: `.claude/settings.local.json` can restrict tools even with `bypassPermissions`. Provider overrides with empty settings.
|
|
69
69
|
- **Transcript images live in two places**: the base64 payload sits at `message.content[].content[]` inside a tool result, but Claude Code also writes an image-shaped record at the top-level `toolUseResult` field carrying no payload. An assertion like "no `"type":"image"` remains" must be scoped to the former, or it fails against correct code.
|
|
70
|
+
- **Plugin items are named by location, not frontmatter**: Claude Code registers a plugin's skills and commands as `<plugin>:<path>` (`ak-engineer:ak-debug`) and only honours the frontmatter `name` for agents. Kits that self-namespace instead — AgentKit ships `name: ak:debug` — publish a name nothing can resolve. `slash-discovery` mirrors that rule and keeps the declared name as an alias; `src/server/ws/chat.ts` rewrites the alias to the canonical name before the message reaches the SDK.
|
|
70
71
|
|
|
71
72
|
## UI Rules
|
|
72
73
|
|
|
@@ -71,4 +71,4 @@ This skill covers the `ppm` CLI, its HTTP API, and its config DB. It does **not*
|
|
|
71
71
|
- Third-party extensions (inspect via `ppm ext list`).
|
|
72
72
|
- The Claude Agent SDK internals (separate skill).
|
|
73
73
|
|
|
74
|
-
<!-- Generated for PPM v0.17.
|
|
74
|
+
<!-- Generated for PPM v0.17.48 at build time. Re-run `ppm export skill --install` to refresh. -->
|
|
@@ -763,7 +763,7 @@ Show recent runs for a schedule
|
|
|
763
763
|
Manage and inspect discovered skills & commands
|
|
764
764
|
|
|
765
765
|
**Options:**
|
|
766
|
-
- `--project <path>` — Project path (default: `"
|
|
766
|
+
- `--project <path>` — Project path (default: `"C:\\Users\\PC\\ppm"`)
|
|
767
767
|
|
|
768
768
|
**Usage:** `ppm skills [options] [command]`
|
|
769
769
|
|
|
@@ -773,7 +773,7 @@ List all discovered skills and commands
|
|
|
773
773
|
|
|
774
774
|
**Options:**
|
|
775
775
|
- `--json` — JSON output
|
|
776
|
-
- `--project <path>` — Project path (default: `"
|
|
776
|
+
- `--project <path>` — Project path (default: `"C:\\Users\\PC\\ppm"`)
|
|
777
777
|
|
|
778
778
|
### `ppm skills search`
|
|
779
779
|
|
|
@@ -781,7 +781,7 @@ Fuzzy search skills and commands
|
|
|
781
781
|
|
|
782
782
|
**Options:**
|
|
783
783
|
- `--json` — JSON output
|
|
784
|
-
- `--project <path>` — Project path (default: `"
|
|
784
|
+
- `--project <path>` — Project path (default: `"C:\\Users\\PC\\ppm"`)
|
|
785
785
|
|
|
786
786
|
**Usage:** `ppm skills search [options] <query>`
|
|
787
787
|
|
|
@@ -791,7 +791,7 @@ Show detailed info for a specific skill
|
|
|
791
791
|
|
|
792
792
|
**Options:**
|
|
793
793
|
- `--json` — JSON output
|
|
794
|
-
- `--project <path>` — Project path (default: `"
|
|
794
|
+
- `--project <path>` — Project path (default: `"C:\\Users\\PC\\ppm"`)
|
|
795
795
|
|
|
796
796
|
**Usage:** `ppm skills info [options] <name>`
|
|
797
797
|
|
|
@@ -288,4 +288,4 @@ _Base URL: `http://localhost:8080` (default; override via `ppm config set port <
|
|
|
288
288
|
- `ws://<host>/ws/terminal` — PTY terminal multiplexer
|
|
289
289
|
- `ws://<host>/ws/extensions` — extension host channel
|
|
290
290
|
|
|
291
|
-
<!-- Generated from src/server/routes/ for PPM v0.17.
|
|
291
|
+
<!-- Generated from src/server/routes/ for PPM v0.17.48 -->
|
package/bun.lock
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"": {
|
|
6
6
|
"name": "ppm",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
8
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.251",
|
|
9
9
|
"@codemirror/lang-sql": "^6.10.0",
|
|
10
10
|
"@glideapps/glide-data-grid": "^6.0.3",
|
|
11
11
|
"@inquirer/prompts": "^8.3.0",
|
|
@@ -96,23 +96,23 @@
|
|
|
96
96
|
"packages": {
|
|
97
97
|
"@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="],
|
|
98
98
|
|
|
99
|
-
"@anthropic-ai/claude-agent-sdk": ["@anthropic-ai/claude-agent-sdk@0.3.
|
|
99
|
+
"@anthropic-ai/claude-agent-sdk": ["@anthropic-ai/claude-agent-sdk@0.3.251", "", { "optionalDependencies": { "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.251", "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.251", "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.251", "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.251", "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.251", "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.251", "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.251", "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.251" }, "peerDependencies": { "@anthropic-ai/sdk": ">=0.93.0", "@modelcontextprotocol/sdk": "^1.29.0", "zod": "^4.0.0" } }, "sha512-DqSi8mH2tQYRlVV0G+lJnQ/WbjJZ/a+8cJ3vPuYoqh8esIIvXHm1ZOXV1UPGsFYRnbBytEoiSGitguEXd+sQ+Q=="],
|
|
100
100
|
|
|
101
|
-
"@anthropic-ai/claude-agent-sdk-darwin-arm64": ["@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.
|
|
101
|
+
"@anthropic-ai/claude-agent-sdk-darwin-arm64": ["@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.251", "", { "os": "darwin", "cpu": "arm64" }, "sha512-C23h+Dbddcc4gai95+lhm4/94am2IOq+bf3IdEDDS7EPqDQqajo2s5q1/ZSwq9rOc0RJLT7Ws72ZCzYJh67KSg=="],
|
|
102
102
|
|
|
103
|
-
"@anthropic-ai/claude-agent-sdk-darwin-x64": ["@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.
|
|
103
|
+
"@anthropic-ai/claude-agent-sdk-darwin-x64": ["@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.251", "", { "os": "darwin", "cpu": "x64" }, "sha512-HrLnb3ggk+vMbymUvbosgPmxWp4W6Ot+0mNVjoBYDn5OZrTV3C3LRtbWf7jwcGyKMcg0xJf0AqiudQ2BRrlr8A=="],
|
|
104
104
|
|
|
105
|
-
"@anthropic-ai/claude-agent-sdk-linux-arm64": ["@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.
|
|
105
|
+
"@anthropic-ai/claude-agent-sdk-linux-arm64": ["@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.251", "", { "os": "linux", "cpu": "arm64" }, "sha512-3E27F5j82EWOyEniRW7crmo0jWYYQmPDdP52jWq6Y6aytiyYIdUFMEGZZ6chVHNlZiU7GsjTa3teKk2xlQ68lQ=="],
|
|
106
106
|
|
|
107
|
-
"@anthropic-ai/claude-agent-sdk-linux-arm64-musl": ["@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.
|
|
107
|
+
"@anthropic-ai/claude-agent-sdk-linux-arm64-musl": ["@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.251", "", { "os": "linux", "cpu": "arm64" }, "sha512-RTUf7TPBUkQ6oV3pDkEdcD47I0uH0ZpvmZlXHnrLGznFqyLr+7XHupOxUMJD0Jwm9v5qeqpNiPAYB0dL4RYiHg=="],
|
|
108
108
|
|
|
109
|
-
"@anthropic-ai/claude-agent-sdk-linux-x64": ["@anthropic-ai/claude-agent-sdk-linux-x64@0.3.
|
|
109
|
+
"@anthropic-ai/claude-agent-sdk-linux-x64": ["@anthropic-ai/claude-agent-sdk-linux-x64@0.3.251", "", { "os": "linux", "cpu": "x64" }, "sha512-qCD87XPjcNM1u4ukqmcgpHDl3Y6l+cW8j7kPzH91Y5yLBYJ5xYZA2KtJ7AYNEPOteVyOGJw/efmva0S8CRr0fg=="],
|
|
110
110
|
|
|
111
|
-
"@anthropic-ai/claude-agent-sdk-linux-x64-musl": ["@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.
|
|
111
|
+
"@anthropic-ai/claude-agent-sdk-linux-x64-musl": ["@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.251", "", { "os": "linux", "cpu": "x64" }, "sha512-SzXrdy7jjrjJIuTG+VMRAY0YZ3G/8w21WuhAozwnvnEUAPo6NDv6lgFinu7NO8J6CPE+MK2sGze6JeCF+ljgUg=="],
|
|
112
112
|
|
|
113
|
-
"@anthropic-ai/claude-agent-sdk-win32-arm64": ["@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.
|
|
113
|
+
"@anthropic-ai/claude-agent-sdk-win32-arm64": ["@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.251", "", { "os": "win32", "cpu": "arm64" }, "sha512-FH1ZLcyc97ie3h7CSlIxA1ppXILgf0V8sFQrWnHyKBrthJXQkMHXhsTq9OZV/2KhXslNf2hTe0gHpZ1nCL1Gmg=="],
|
|
114
114
|
|
|
115
|
-
"@anthropic-ai/claude-agent-sdk-win32-x64": ["@anthropic-ai/claude-agent-sdk-win32-x64@0.3.
|
|
115
|
+
"@anthropic-ai/claude-agent-sdk-win32-x64": ["@anthropic-ai/claude-agent-sdk-win32-x64@0.3.251", "", { "os": "win32", "cpu": "x64" }, "sha512-/jmtFIvfF0UFMxSZ8WV2Aus8aGA3+8Ft6AHvWuBJkY5jM2ubfqi6GnBjKCAL831TTllp2rKZlViANtWWRBvpvg=="],
|
|
116
116
|
|
|
117
117
|
"@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.97.1", "", { "dependencies": { "json-schema-to-ts": "^3.1.1", "standardwebhooks": "^1.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-wOf7AUeJPitcVpvKO4UMu63mWH5SaVipkGd7OOQJt/G6VYGlV8D2Gp9dLxOrttDJh/9gqPqdaBwDGcBevumeAg=="],
|
|
118
118
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,y as n}from"./vendor-markdown-CKTlmXbz.js";import"./vendor-ui-DMRGWRuc.js";import{t as r}from"./save-BM4p9_9n.js";import{s as i}from"./api-client-COQtP-dB.js";import"./vendor-mermaid-CYOBtZtD.js";import"./settings-store-BbFtHCGd.js";import{n as a}from"./utils-E0yyGxXt.js";import{$t as o,D as s,E as c,Mt as l,O as u,T as d,en as f,jt as p,k as m,o as h}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,y as n}from"./vendor-markdown-CKTlmXbz.js";import"./vendor-ui-DMRGWRuc.js";import{t as r}from"./save-BM4p9_9n.js";import{s as i}from"./api-client-COQtP-dB.js";import"./vendor-mermaid-CYOBtZtD.js";import"./settings-store-BbFtHCGd.js";import{n as a}from"./utils-E0yyGxXt.js";import{$t as o,D as s,E as c,Mt as l,O as u,T as d,en as f,jt as p,k as m,o as h}from"./index-nsuPdCaW.js";import{t as g}from"./use-monaco-theme-uvD7nRfD.js";var _=e(t(),1),v=n();function y({metadata:e}){let t=e?.filePath,n=e?.name,a=e?.resourceType??`skill`,y=e?.scope??`user`,x=e?.readOnly===!0,S=e?.shadowed===!0,C=e?.shadowedBy,w=e?.project??``,[T,E]=(0,_.useState)(``),[D,O]=(0,_.useState)(``),[k,A]=(0,_.useState)(!0),[j,M]=(0,_.useState)(null),[N,P]=(0,_.useState)(!1),F=g(),I=(0,_.useRef)(``),L=T!==D;(0,_.useEffect)(()=>{let e=!1;return A(!0),M(null),u(t,w).then(t=>{e||(E(t.content),O(t.content),I.current=t.content)}).catch(t=>{e||M(t.message)}).finally(()=>{e||A(!1)}),()=>{e=!0}},[t,w]);let R=(0,_.useCallback)(async()=>{if(x||N)return;let e=I.current;if(e!==D){P(!0);try{await m(t,e,w),O(e),E(e),i.success(`Saved`),s.getState().reload()}catch(e){i.error(e.message)}finally{P(!1)}}},[t,w,D,x,N]);(0,_.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),R())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[R]);let z=c[a];return(0,v.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,v.jsx)(z,{className:`size-4 text-text-subtle`}),(0,v.jsx)(`span`,{className:`text-sm font-semibold`,children:n}),(0,v.jsx)(d,{scope:y}),L&&!x&&(0,v.jsx)(`span`,{className:`size-1.5 rounded-full bg-primary`,title:`Unsaved changes`}),(0,v.jsx)(`div`,{className:`flex-1`}),(0,v.jsxs)(`span`,{className:`hidden sm:block text-[11px] text-text-subtle`,children:[a,` · markdown`]}),!x&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`button`,{onClick:()=>E(D),disabled:!L||N,className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-text-secondary hover:bg-surface-elevated disabled:opacity-40`,children:[(0,v.jsx)(p,{className:`size-3.5`}),` Revert`]}),(0,v.jsxs)(`button`,{onClick:()=>void R(),disabled:!L||N,className:`flex items-center gap-1 rounded bg-primary px-2.5 py-1 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-40`,children:[N?(0,v.jsx)(f,{className:`size-3.5 animate-spin`}):(0,v.jsx)(r,{className:`size-3.5`}),` Save`]})]})]}),x&&(0,v.jsx)(b,{icon:o,tone:`muted`,children:`Bundled resource — read-only. Duplicate it (from the AI Resources panel) to make an editable copy.`}),S&&C&&(0,v.jsxs)(b,{icon:l,tone:`warn`,children:[`This `,a,` is overridden by another “`,C.name,`” from a higher-priority source (`,C.source,`). It is currently inactive.`]}),(0,v.jsx)(`div`,{className:`min-h-0 flex-1`,children:k?(0,v.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,v.jsx)(f,{className:`size-5 animate-spin text-primary`})}):j?(0,v.jsx)(`div`,{className:`p-6 text-center text-sm text-destructive`,children:j}):(0,v.jsx)(h,{height:`100%`,language:`markdown`,theme:F,value:T,onChange:e=>{let t=e??``;I.current=t,E(t)},options:{readOnly:x,minimap:{enabled:!1},fontSize:13,wordWrap:`on`,scrollBeyondLastLine:!1,lineNumbers:`on`}})})]})}function b({icon:e,tone:t,children:n}){return(0,v.jsxs)(`div`,{className:a(`flex items-start gap-2 px-3 py-2 text-[12px] shrink-0 border-b border-border`,t===`warn`?`bg-amber-500/10 text-amber-300`:`bg-surface-elevated text-text-secondary`),children:[(0,v.jsx)(e,{className:`mt-0.5 size-3.5 shrink-0`}),(0,v.jsx)(`span`,{children:n})]})}export{y as AiResourceEditor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{y as e}from"./vendor-markdown-CKTlmXbz.js";import"./vendor-ui-DMRGWRuc.js";import{t}from"./createLucideIcon-ConhwJnb.js";import{t as n}from"./file-exclamation-point-DBEC-Kst.js";import"./api-client-COQtP-dB.js";import{t as r}from"./utils-E0yyGxXt.js";import{en as i}from"./index-
|
|
1
|
+
import{y as e}from"./vendor-markdown-CKTlmXbz.js";import"./vendor-ui-DMRGWRuc.js";import{t}from"./createLucideIcon-ConhwJnb.js";import{t as n}from"./file-exclamation-point-DBEC-Kst.js";import"./api-client-COQtP-dB.js";import{t as r}from"./utils-E0yyGxXt.js";import{en as i}from"./index-nsuPdCaW.js";import{t as a}from"./use-blob-url-B3YovXF6.js";var o=t(`music`,[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]),s=e();function c({filePath:e,projectName:t}){let{blobUrl:c,error:l}=a(e,t);return l?(0,s.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,s.jsx)(n,{className:`size-10 text-text-subtle`}),(0,s.jsx)(`p`,{className:`text-sm`,children:`Failed to load audio.`})]}):c?(0,s.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-4 p-4 bg-surface`,children:[(0,s.jsx)(o,{className:`size-16 text-text-subtle`}),(0,s.jsx)(`p`,{className:`text-sm text-text-secondary truncate max-w-xs`,children:r(e)}),(0,s.jsx)(`audio`,{src:c,controls:!0,className:`w-full max-w-md`})]}):(0,s.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,s.jsx)(i,{className:`size-5 animate-spin text-text-subtle`})})}export{c as AudioPreview};
|