@hienlh/ppm 0.8.5 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.8.6] - 2026-03-23
4
+
5
+ ### Fixed
6
+ - **Actionable timeout error**: Timeout error now shows project path, exact `claude -p "hi"` debug command, and steps to check hooks/MCP/settings
7
+ - **SDK lifecycle logging**: All SDK `system` events (hook_started, init, etc.) now logged with full JSON — helps diagnose where SDK hangs
8
+
3
9
  ## [0.8.5] - 2026-03-23
4
10
 
5
11
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hienlh/ppm",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "description": "Personal Project Manager — mobile-first web IDE with AI assistance",
5
5
  "author": "hienlh",
6
6
  "license": "MIT",
@@ -688,6 +688,11 @@ export class ClaudeAgentSdkProvider implements AIProvider {
688
688
  yield approvalEvents.shift()!;
689
689
  }
690
690
 
691
+ // Log all system events for debugging SDK lifecycle
692
+ if (msg.type === "system") {
693
+ console.log(`[sdk] session=${sessionId} system: subtype=${(msg as any).subtype ?? "none"} ${JSON.stringify(msg).slice(0, 500)}`);
694
+ }
695
+
691
696
  // Capture SDK session metadata from init message
692
697
  if (msg.type === "system" && (msg as any).subtype === "init") {
693
698
  const initMsg = msg as any;
@@ -135,9 +135,10 @@ async function runStreamLoop(sessionId: string, providerId: string, content: str
135
135
  const wslHint = isWSL
136
136
  ? "\n\nWSL detected — this is likely a network issue. Try from your WSL terminal:\n curl -s https://api.anthropic.com\nIf that fails, check WSL DNS settings (/etc/resolv.conf) or proxy configuration."
137
137
  : "";
138
+ const debugCmd = projectPath ? `cd ${projectPath} && claude -p "hi"` : `claude -p "hi"`;
138
139
  safeSend(sessionId, {
139
140
  type: "error",
140
- message: `Claude SDK failed to respond after ${elapsed}s. The API may be unreachable from this machine.${wslHint}\n\nGeneral troubleshooting:\n• Check internet connectivity\n• Run \`claude\` in your terminal to verify it works\n• Try: ppm start -f`,
141
+ message: `Claude SDK timed out after ${elapsed}s for project "${projectPath || "(no project)"}".${wslHint}\n\nDebug steps:\n1. Run in your terminal: \`${debugCmd}\`\n2. Check for hanging hooks/MCP servers: \`cat ${projectPath}/.claude/settings.local.json\`\n3. Try removing project Claude config: \`mv ${projectPath}/.claude ${projectPath}/.claude.bak\`\n4. If none of the above helps, try: \`claude login\` to refresh auth`,
141
142
  });
142
143
  abortController.abort();
143
144
  return;