@hienlh/ppm 0.17.50 → 0.17.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.rollout-mark +2 -0
  2. package/CHANGELOG.md +11 -0
  3. package/assets/skills/ppm/SKILL.md +1 -1
  4. package/assets/skills/ppm/references/http-api.md +1 -1
  5. package/dist/web/assets/{ai-resource-editor-x8J0omsj.js → ai-resource-editor-D12van6q.js} +1 -1
  6. package/dist/web/assets/{audio-preview-Bdf_SZHY.js → audio-preview-C3YJNKjD.js} +1 -1
  7. package/dist/web/assets/{chat-tab-CT6SP5D3.js → chat-tab-B6Elb3uK.js} +3 -3
  8. package/dist/web/assets/{code-editor-BgsJkCtK.js → code-editor-DM-ay_BF.js} +2 -2
  9. package/dist/web/assets/{conflict-editor-DdSe9RCG.js → conflict-editor-4rb0oS2i.js} +1 -1
  10. package/dist/web/assets/{csv-preview-DrUfLPRE.js → csv-preview-Bqfk0OeJ.js} +1 -1
  11. package/dist/web/assets/{database-viewer-1NLuRknj.js → database-viewer-CrBOZBE4.js} +1 -1
  12. package/dist/web/assets/{diff-viewer-DPn8QJXG.js → diff-viewer-BX02Fg5_.js} +1 -1
  13. package/dist/web/assets/{docx-preview-BUVtMDQF.js → docx-preview-rR_dLI4P.js} +1 -1
  14. package/dist/web/assets/{extension-webview-CEdJP2XP.js → extension-webview-D4rHB1h7.js} +1 -1
  15. package/dist/web/assets/{git-log-panel-ClLf6-as.js → git-log-panel-BryqAkz2.js} +1 -1
  16. package/dist/web/assets/{glide-data-grid-CBhv99Ii.js → glide-data-grid-CcGfgB3d.js} +1 -1
  17. package/dist/web/assets/{group-chat-tab-KTKtMy6L.js → group-chat-tab-rB8JuZIe.js} +1 -1
  18. package/dist/web/assets/{image-preview-DYyo-Twv.js → image-preview-i-jTDsjR.js} +1 -1
  19. package/dist/web/assets/{index-BiBAhdYZ.js → index-C4m82SWg.js} +22 -22
  20. package/dist/web/assets/{keybindings-store-C1yAVIlX.js → keybindings-store-C3dkxGGX.js} +1 -1
  21. package/dist/web/assets/{markdown-renderer-JNQd7xG0.js → markdown-renderer-DEXzjjQ8.js} +1 -1
  22. package/dist/web/assets/{markdown-renderer-CCBPLJC7.js → markdown-renderer-PbB8SlkU.js} +1 -1
  23. package/dist/web/assets/{notification-store-lQg17iIv.js → notification-store-6-9K7U26.js} +1 -1
  24. package/dist/web/assets/{pdf-preview-CWnXgjqc.js → pdf-preview-k7xI6wlU.js} +1 -1
  25. package/dist/web/assets/{postgres-viewer-BIXfNiGy.js → postgres-viewer-5zQgJlQz.js} +1 -1
  26. package/dist/web/assets/{settings-tab-CpltHPv5.js → settings-tab-DDNHT-XP.js} +1 -1
  27. package/dist/web/assets/{sql-query-editor-BDTzbvEM.js → sql-query-editor-CYLWqNpT.js} +1 -1
  28. package/dist/web/assets/{sqlite-viewer-BkOrBWZP.js → sqlite-viewer-DANvopw7.js} +1 -1
  29. package/dist/web/assets/{system-monitor-tab-s0Jm9zah.js → system-monitor-tab-Cfs1hq4q.js} +1 -1
  30. package/dist/web/assets/{terminal-tab-D3S_kz4Y.js → terminal-tab-CTB-qo9d.js} +1 -1
  31. package/dist/web/assets/{tool-cards-DbhWrJ_o.js → tool-cards-BBr3Pix3.js} +2 -2
  32. package/dist/web/assets/{use-monaco-theme-DKGvvHk1.js → use-monaco-theme-BJHYbrpI.js} +1 -1
  33. package/dist/web/assets/{video-preview-BCU0PfT1.js → video-preview-Dv1PD_Rj.js} +1 -1
  34. package/dist/web/index.html +1 -1
  35. package/dist/web/sw.js +1 -1
  36. package/docker-compose.test.yml +3 -0
  37. package/docs/lessons-learned.md +62 -0
  38. package/package.json +1 -1
  39. package/src/cli/commands/init.ts +2 -10
  40. package/src/providers/claude-agent-sdk.ts +2 -10
  41. package/src/services/file-watcher/recreated-dir-poller.ts +149 -0
  42. package/src/services/file-watcher/watch-tree.ts +58 -3
  43. package/src/services/proc-table-linux.ts +183 -0
  44. package/src/services/resource-monitor.service.ts +33 -9
  45. package/src/services/tunnel-registry.service.ts +18 -0
  46. package/src/services/windows-process-tree.ts +351 -335
  47. package/src/types/claude-models.ts +41 -0
  48. package/src/types/config.ts +3 -1
  49. package/src/web/components/settings/proxy-test-section.tsx +4 -8
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Single source of truth for the Claude models PPM offers.
3
+ *
4
+ * Consumed by config validation, the agent-SDK provider model dropdown,
5
+ * `ppm init`, and the proxy test dialog — adding a model means editing
6
+ * this list only.
7
+ *
8
+ * Invite-only models (e.g. Claude Mythos, Project Glasswing) are omitted on
9
+ * purpose: they would appear as selectable options that fail at request time
10
+ * for accounts without access.
11
+ */
12
+
13
+ export interface ClaudeModelOption {
14
+ /** Model ID sent to the Claude API / Agent SDK. */
15
+ value: string;
16
+ /** Short label for UI dropdowns. */
17
+ label: string;
18
+ /** Capability hint shown next to the label in the `ppm init` prompt. */
19
+ hint: string;
20
+ }
21
+
22
+ /** Ordered newest/most-capable first; the first entry is not automatically the default. */
23
+ export const CLAUDE_MODELS: readonly ClaudeModelOption[] = [
24
+ { value: "claude-opus-5", label: "Claude Opus 5", hint: "most powerful" },
25
+ { value: "claude-fable-5-1", label: "Claude Fable 5.1", hint: "flagship" },
26
+ { value: "claude-fable-5", label: "Claude Fable 5", hint: "flagship" },
27
+ { value: "claude-opus-4-8", label: "Claude Opus 4.8", hint: "powerful" },
28
+ { value: "claude-opus-4-7", label: "Claude Opus 4.7", hint: "powerful" },
29
+ { value: "claude-opus-4-6", label: "Claude Opus 4.6", hint: "powerful" },
30
+ { value: "claude-sonnet-5", label: "Claude Sonnet 5", hint: "fast" },
31
+ { value: "claude-sonnet-4-6", label: "Claude Sonnet 4.6", hint: "fast" },
32
+ { value: "claude-haiku-4-5", label: "Claude Haiku 4.5", hint: "cheap" },
33
+ ];
34
+
35
+ /** Model IDs accepted by config validation. */
36
+ export const CLAUDE_MODEL_IDS: readonly string[] = CLAUDE_MODELS.map((m) => m.value);
37
+
38
+ /** Label used by the `ppm init` model prompt, e.g. "Claude Opus 5 (most powerful)". */
39
+ export function claudeModelInitName(model: ClaudeModelOption): string {
40
+ return `${model.label} (${model.hint})`;
41
+ }
@@ -1,3 +1,5 @@
1
+ import { CLAUDE_MODEL_IDS } from "./claude-models.ts";
2
+
1
3
  export interface TelegramConfig {
2
4
  bot_token: string;
3
5
  }
@@ -133,7 +135,7 @@ export const DEFAULT_CONFIG: PpmConfig = {
133
135
 
134
136
  const VALID_TYPES = ["agent-sdk", "cli", "mock"] as const;
135
137
  const VALID_EFFORTS = ["low", "medium", "high", "xhigh", "max"] as const;
136
- const VALID_MODELS = ["claude-opus-5", "claude-fable-5", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-haiku-4-5"] as const;
138
+ const VALID_MODELS = CLAUDE_MODEL_IDS;
137
139
  /** Allowed CLI commands for CLI providers (prevents command injection) */
138
140
  const VALID_CLI_COMMANDS = ["cursor-agent", "codex", "gemini"] as const;
139
141
  /** Only these values are allowed for default_provider in config */
@@ -3,6 +3,7 @@ import { Play, Loader2, FlaskConical } from "lucide-react";
3
3
  import { Button } from "@/components/ui/button";
4
4
  import { Input } from "@/components/ui/input";
5
5
  import { Label } from "@/components/ui/label";
6
+ import { CLAUDE_MODELS } from "../../../types/claude-models";
6
7
  import {
7
8
  Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogTrigger,
8
9
  } from "@/components/ui/dialog";
@@ -159,14 +160,9 @@ function ProxyTestForm({ authKey, baseUrl }: ProxyTestDialogProps) {
159
160
  onChange={(e) => setModel(e.target.value)}
160
161
  className="h-8 w-full rounded-md border bg-background px-2 text-[11px]"
161
162
  >
162
- <option value="claude-opus-5">claude-opus-5</option>
163
- <option value="claude-fable-5">claude-fable-5</option>
164
- <option value="claude-opus-4-8">claude-opus-4-8</option>
165
- <option value="claude-opus-4-7">claude-opus-4-7</option>
166
- <option value="claude-opus-4-6">claude-opus-4-6</option>
167
- <option value="claude-sonnet-5">claude-sonnet-5</option>
168
- <option value="claude-sonnet-4-6">claude-sonnet-4-6</option>
169
- <option value="claude-haiku-4-5">claude-haiku-4-5</option>
163
+ {CLAUDE_MODELS.map((m) => (
164
+ <option key={m.value} value={m.value}>{m.value}</option>
165
+ ))}
170
166
  </select>
171
167
  </div>
172
168