@alexjbarnes/cockpit 0.2.0 → 0.3.0
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +16 -3
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +99 -3
- package/.next/react-loadable-manifest.json +18 -2
- package/.next/required-server-files.js +3 -0
- package/.next/required-server-files.json +3 -0
- package/.next/routes-manifest.json +86 -0
- package/.next/server/app/(app)/agents/[name]/page.js +2 -2
- package/.next/server/app/(app)/agents/[name]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/agents/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/agents/page.js +2 -2
- package/.next/server/app/(app)/agents/page.js.nft.json +1 -1
- package/.next/server/app/(app)/agents/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/changes/page.js +2 -2
- package/.next/server/app/(app)/changes/page.js.nft.json +1 -1
- package/.next/server/app/(app)/changes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/claude-md/edit/page.js +2 -2
- package/.next/server/app/(app)/claude-md/edit/page.js.nft.json +1 -1
- package/.next/server/app/(app)/claude-md/edit/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/claude-md/page.js +2 -2
- package/.next/server/app/(app)/claude-md/page.js.nft.json +1 -1
- package/.next/server/app/(app)/claude-md/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/commands/[name]/page.js +2 -2
- package/.next/server/app/(app)/commands/[name]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/commands/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/commands/page.js +2 -2
- package/.next/server/app/(app)/commands/page.js.nft.json +1 -1
- package/.next/server/app/(app)/commands/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/files/page.js +2 -2
- package/.next/server/app/(app)/files/page.js.nft.json +1 -1
- package/.next/server/app/(app)/files/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/hooks/[event]/page.js +3 -3
- package/.next/server/app/(app)/hooks/[event]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/hooks/[event]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/hooks/page.js +2 -2
- package/.next/server/app/(app)/hooks/page.js.nft.json +1 -1
- package/.next/server/app/(app)/hooks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/inbox/[id]/page.js +2 -2
- package/.next/server/app/(app)/inbox/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/inbox/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/inbox/page.js +2 -2
- package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
- package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/jobs/[id]/edit/page.js +2 -2
- package/.next/server/app/(app)/jobs/[id]/edit/page.js.nft.json +1 -1
- package/.next/server/app/(app)/jobs/[id]/edit/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/jobs/[id]/page.js +2 -2
- package/.next/server/app/(app)/jobs/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/jobs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/jobs/[id]/runs/[runId]/page.js +2 -2
- package/.next/server/app/(app)/jobs/[id]/runs/[runId]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/jobs/[id]/runs/[runId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/jobs/page.js +2 -2
- package/.next/server/app/(app)/jobs/page.js.nft.json +1 -1
- package/.next/server/app/(app)/jobs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/mcp-servers/[name]/page.js +2 -2
- package/.next/server/app/(app)/mcp-servers/[name]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/mcp-servers/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/mcp-servers/page.js +2 -2
- package/.next/server/app/(app)/mcp-servers/page.js.nft.json +1 -1
- package/.next/server/app/(app)/mcp-servers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/page.js +2 -2
- package/.next/server/app/(app)/page.js.nft.json +1 -1
- package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/reviews/[owner]/[repo]/[number]/page.js +10 -10
- package/.next/server/app/(app)/reviews/[owner]/[repo]/[number]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/reviews/[owner]/[repo]/[number]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/reviews/[owner]/[repo]/page.js +2 -2
- package/.next/server/app/(app)/reviews/[owner]/[repo]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/reviews/[owner]/[repo]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/reviews/page.js +2 -2
- package/.next/server/app/(app)/reviews/page.js.nft.json +1 -1
- package/.next/server/app/(app)/reviews/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/sessions/[id]/page.js +2 -2
- package/.next/server/app/(app)/sessions/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/settings/appearance/page.js +2 -0
- package/.next/server/app/(app)/settings/appearance/page.js.nft.json +1 -0
- package/.next/server/app/(app)/settings/appearance/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/settings/notifications/page.js +2 -2
- package/.next/server/app/(app)/settings/notifications/page.js.nft.json +1 -1
- package/.next/server/app/(app)/settings/notifications/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/settings/page.js +2 -2
- package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
- package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/settings/providers/[id]/page.js +2 -0
- package/.next/server/app/(app)/settings/providers/[id]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/settings/providers/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/settings/providers/new/page.js +2 -0
- package/.next/server/app/(app)/settings/providers/new/page.js.nft.json +1 -0
- package/.next/server/app/(app)/settings/providers/new/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/settings/providers/page.js +2 -0
- package/.next/server/app/(app)/settings/providers/page.js.nft.json +1 -0
- package/.next/server/app/(app)/settings/providers/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/settings/session/page.js +2 -0
- package/.next/server/app/(app)/settings/session/page.js.nft.json +1 -0
- package/.next/server/app/(app)/settings/session/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/skills/[name]/page.js +3 -3
- package/.next/server/app/(app)/skills/[name]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/skills/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/skills/page.js +2 -2
- package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
- package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/agents.html +1 -1
- package/.next/server/app/agents.rsc +4 -4
- package/.next/server/app/agents.segments/!KGFwcCk/agents/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/agents.segments/!KGFwcCk/agents.segment.rsc +1 -1
- package/.next/server/app/agents.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/agents.segments/_full.segment.rsc +4 -4
- package/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agents/[name]/route.js +1 -1
- package/.next/server/app/api/agents/route.js +1 -1
- package/.next/server/app/api/auth/check/route.js +1 -1
- package/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/server/app/api/auth/setup/route.js +1 -1
- package/.next/server/app/api/auth/ws-token/route.js +1 -1
- package/.next/server/app/api/btw/route.js +2 -2
- package/.next/server/app/api/claude-md/route.js +1 -1
- package/.next/server/app/api/commands/[name]/route.js +1 -1
- package/.next/server/app/api/commands/route.js +1 -1
- package/.next/server/app/api/defaults/route.js +1 -1
- package/.next/server/app/api/filesystem/browse/route.js +1 -1
- package/.next/server/app/api/filesystem/files/route.js +1 -1
- package/.next/server/app/api/filesystem/mkdir/route.js +1 -1
- package/.next/server/app/api/filesystem/read/route.js +1 -1
- package/.next/server/app/api/git/clone/route.js +1 -1
- package/.next/server/app/api/git/commit/route.js +1 -1
- package/.next/server/app/api/git/diff/route.js +1 -1
- package/.next/server/app/api/git/discard/route.js +1 -1
- package/.next/server/app/api/git/generate-message/route.js +2 -2
- package/.next/server/app/api/git/push/route.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/github/file-content/route.js +1 -1
- package/.next/server/app/api/github/orgs/route.js +1 -1
- package/.next/server/app/api/github/prs/checks/route.js +1 -1
- package/.next/server/app/api/github/prs/diff/route.js +1 -1
- package/.next/server/app/api/github/prs/review/route.js +1 -1
- package/.next/server/app/api/github/prs/route.js +1 -1
- package/.next/server/app/api/github/prs/view/route.js +1 -1
- package/.next/server/app/api/github/repos/route.js +1 -1
- package/.next/server/app/api/github/review-session/route.js +1 -1
- package/.next/server/app/api/github/review-session/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route.js +1 -1
- package/.next/server/app/api/hooks/route.js +1 -1
- package/.next/server/app/api/inbox/[id]/route.js +2 -2
- package/.next/server/app/api/inbox/route.js +2 -2
- package/.next/server/app/api/jobs/[id]/route.js +1 -1
- package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/[id]/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/jobs/[id]/runs/[runId]/transcript/route.js +1 -1
- package/.next/server/app/api/jobs/[id]/runs/route.js +1 -1
- package/.next/server/app/api/jobs/[id]/trigger/route.js +1 -1
- package/.next/server/app/api/jobs/[id]/trigger/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/mcp-discover/route.js +1 -1
- package/.next/server/app/api/jobs/mcp-discover/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/route.js +1 -1
- package/.next/server/app/api/jobs/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/status/route.js +1 -1
- package/.next/server/app/api/mcp-servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp-servers/[name]/test/route.js +1 -1
- package/.next/server/app/api/mcp-servers/route.js +1 -1
- package/.next/server/app/api/notifications/route.js +1 -1
- package/.next/server/app/api/notifications/test/route.js +1 -1
- package/.next/server/app/api/providers/[id]/route.js +1 -0
- package/.next/server/app/api/providers/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/providers/route.js +1 -0
- package/.next/server/app/api/providers/route.js.nft.json +1 -0
- package/.next/server/app/api/providers/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/reviews/pinned/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/mcp/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/search/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/tabs/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/tabs/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/[id]/tabs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/bulk-delete/route.js +1 -1
- package/.next/server/app/api/sessions/bulk-delete/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/by-ids/route.js +1 -1
- package/.next/server/app/api/sessions/by-ids/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/group/route.js +1 -1
- package/.next/server/app/api/sessions/group/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/pinned/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/search/route.js +1 -1
- package/.next/server/app/api/sessions/thinking/route.js +1 -0
- package/.next/server/app/api/sessions/thinking/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/thinking/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/[name]/route.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/terminal/[id]/route.js +1 -0
- package/.next/server/app/api/terminal/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/terminal/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/terminal/route.js +1 -0
- package/.next/server/app/api/terminal/route.js.nft.json +1 -0
- package/.next/server/app/api/terminal/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/usage/route.js +1 -1
- package/.next/server/app/api/version/changelog/route.js +1 -0
- package/.next/server/app/api/version/changelog/route.js.nft.json +1 -0
- package/.next/server/app/api/version/changelog/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/version/cockpit/changelog/route.js +1 -0
- package/.next/server/app/api/version/cockpit/changelog/route.js.nft.json +1 -0
- package/.next/server/app/api/version/cockpit/changelog/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/version/cockpit/route.js +1 -1
- package/.next/server/app/api/version/route.js +2 -2
- package/.next/server/app/changes.html +1 -1
- package/.next/server/app/changes.rsc +4 -4
- package/.next/server/app/changes.segments/!KGFwcCk/changes/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/changes.segments/!KGFwcCk/changes.segment.rsc +1 -1
- package/.next/server/app/changes.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/changes.segments/_full.segment.rsc +4 -4
- package/.next/server/app/changes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/changes.segments/_index.segment.rsc +2 -2
- package/.next/server/app/changes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/claude-md/edit.html +1 -1
- package/.next/server/app/claude-md/edit.rsc +4 -4
- package/.next/server/app/claude-md/edit.segments/!KGFwcCk/claude-md/edit/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/claude-md/edit.segments/!KGFwcCk/claude-md/edit.segment.rsc +1 -1
- package/.next/server/app/claude-md/edit.segments/!KGFwcCk/claude-md.segment.rsc +1 -1
- package/.next/server/app/claude-md/edit.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/claude-md/edit.segments/_full.segment.rsc +4 -4
- package/.next/server/app/claude-md/edit.segments/_head.segment.rsc +1 -1
- package/.next/server/app/claude-md/edit.segments/_index.segment.rsc +2 -2
- package/.next/server/app/claude-md/edit.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/claude-md.html +1 -1
- package/.next/server/app/claude-md.rsc +4 -4
- package/.next/server/app/claude-md.segments/!KGFwcCk/claude-md/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/claude-md.segments/!KGFwcCk/claude-md.segment.rsc +1 -1
- package/.next/server/app/claude-md.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/claude-md.segments/_full.segment.rsc +4 -4
- package/.next/server/app/claude-md.segments/_head.segment.rsc +1 -1
- package/.next/server/app/claude-md.segments/_index.segment.rsc +2 -2
- package/.next/server/app/claude-md.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/commands.html +1 -1
- package/.next/server/app/commands.rsc +4 -4
- package/.next/server/app/commands.segments/!KGFwcCk/commands/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/commands.segments/!KGFwcCk/commands.segment.rsc +1 -1
- package/.next/server/app/commands.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/commands.segments/_full.segment.rsc +4 -4
- package/.next/server/app/commands.segments/_head.segment.rsc +1 -1
- package/.next/server/app/commands.segments/_index.segment.rsc +2 -2
- package/.next/server/app/commands.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/files.html +1 -1
- package/.next/server/app/files.rsc +4 -4
- package/.next/server/app/files.segments/!KGFwcCk/files/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/files.segments/!KGFwcCk/files.segment.rsc +1 -1
- package/.next/server/app/files.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/files.segments/_full.segment.rsc +4 -4
- package/.next/server/app/files.segments/_head.segment.rsc +1 -1
- package/.next/server/app/files.segments/_index.segment.rsc +2 -2
- package/.next/server/app/files.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/hooks.html +1 -1
- package/.next/server/app/hooks.rsc +4 -4
- package/.next/server/app/hooks.segments/!KGFwcCk/hooks/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/hooks.segments/!KGFwcCk/hooks.segment.rsc +1 -1
- package/.next/server/app/hooks.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/hooks.segments/_full.segment.rsc +4 -4
- package/.next/server/app/hooks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/hooks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/hooks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/inbox.html +1 -1
- package/.next/server/app/inbox.rsc +4 -4
- package/.next/server/app/inbox.segments/!KGFwcCk/inbox/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/inbox.segments/!KGFwcCk/inbox.segment.rsc +1 -1
- package/.next/server/app/inbox.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/inbox.segments/_full.segment.rsc +4 -4
- package/.next/server/app/inbox.segments/_head.segment.rsc +1 -1
- package/.next/server/app/inbox.segments/_index.segment.rsc +2 -2
- package/.next/server/app/inbox.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/!KGFwcCk/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/jobs.html +1 -1
- package/.next/server/app/jobs.rsc +4 -4
- package/.next/server/app/jobs.segments/!KGFwcCk/jobs/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/jobs.segments/!KGFwcCk/jobs.segment.rsc +1 -1
- package/.next/server/app/jobs.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/jobs.segments/_full.segment.rsc +4 -4
- package/.next/server/app/jobs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/jobs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/jobs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/mcp-servers.html +1 -1
- package/.next/server/app/mcp-servers.rsc +4 -4
- package/.next/server/app/mcp-servers.segments/!KGFwcCk/mcp-servers/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/mcp-servers.segments/!KGFwcCk/mcp-servers.segment.rsc +1 -1
- package/.next/server/app/mcp-servers.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/mcp-servers.segments/_full.segment.rsc +4 -4
- package/.next/server/app/mcp-servers.segments/_head.segment.rsc +1 -1
- package/.next/server/app/mcp-servers.segments/_index.segment.rsc +2 -2
- package/.next/server/app/mcp-servers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/reviews.html +1 -1
- package/.next/server/app/reviews.rsc +4 -4
- package/.next/server/app/reviews.segments/!KGFwcCk/reviews/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/reviews.segments/!KGFwcCk/reviews.segment.rsc +1 -1
- package/.next/server/app/reviews.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/reviews.segments/_full.segment.rsc +4 -4
- package/.next/server/app/reviews.segments/_head.segment.rsc +1 -1
- package/.next/server/app/reviews.segments/_index.segment.rsc +2 -2
- package/.next/server/app/reviews.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/appearance.html +1 -0
- package/.next/server/app/settings/appearance.meta +17 -0
- package/.next/server/app/settings/appearance.rsc +23 -0
- package/.next/server/app/settings/appearance.segments/!KGFwcCk/settings/appearance/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/appearance.segments/!KGFwcCk/settings/appearance.segment.rsc +5 -0
- package/.next/server/app/settings/appearance.segments/!KGFwcCk/settings.segment.rsc +5 -0
- package/.next/server/app/settings/appearance.segments/!KGFwcCk.segment.rsc +7 -0
- package/.next/server/app/settings/appearance.segments/_full.segment.rsc +23 -0
- package/.next/server/app/settings/appearance.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/appearance.segments/_index.segment.rsc +5 -0
- package/.next/server/app/settings/appearance.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/settings/notifications.html +1 -1
- package/.next/server/app/settings/notifications.rsc +4 -4
- package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings/notifications/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings/notifications.segment.rsc +1 -1
- package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings.segment.rsc +1 -1
- package/.next/server/app/settings/notifications.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/settings/notifications.segments/_full.segment.rsc +4 -4
- package/.next/server/app/settings/notifications.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/notifications.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/notifications.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/providers/new.html +1 -0
- package/.next/server/app/settings/providers/new.meta +18 -0
- package/.next/server/app/settings/providers/new.rsc +23 -0
- package/.next/server/app/settings/providers/new.segments/!KGFwcCk/settings/providers/new/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/providers/new.segments/!KGFwcCk/settings/providers/new.segment.rsc +5 -0
- package/.next/server/app/settings/providers/new.segments/!KGFwcCk/settings/providers.segment.rsc +5 -0
- package/.next/server/app/settings/providers/new.segments/!KGFwcCk/settings.segment.rsc +5 -0
- package/.next/server/app/settings/providers/new.segments/!KGFwcCk.segment.rsc +7 -0
- package/.next/server/app/settings/providers/new.segments/_full.segment.rsc +23 -0
- package/.next/server/app/settings/providers/new.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/providers/new.segments/_index.segment.rsc +5 -0
- package/.next/server/app/settings/providers/new.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/settings/providers.html +1 -0
- package/.next/server/app/settings/providers.meta +17 -0
- package/.next/server/app/settings/providers.rsc +23 -0
- package/.next/server/app/settings/providers.segments/!KGFwcCk/settings/providers/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/providers.segments/!KGFwcCk/settings/providers.segment.rsc +5 -0
- package/.next/server/app/settings/providers.segments/!KGFwcCk/settings.segment.rsc +5 -0
- package/.next/server/app/settings/providers.segments/!KGFwcCk.segment.rsc +7 -0
- package/.next/server/app/settings/providers.segments/_full.segment.rsc +23 -0
- package/.next/server/app/settings/providers.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/providers.segments/_index.segment.rsc +5 -0
- package/.next/server/app/settings/providers.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/settings/session.html +1 -0
- package/.next/server/app/settings/session.meta +17 -0
- package/.next/server/app/settings/session.rsc +23 -0
- package/.next/server/app/settings/session.segments/!KGFwcCk/settings/session/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/session.segments/!KGFwcCk/settings/session.segment.rsc +5 -0
- package/.next/server/app/settings/session.segments/!KGFwcCk/settings.segment.rsc +5 -0
- package/.next/server/app/settings/session.segments/!KGFwcCk.segment.rsc +7 -0
- package/.next/server/app/settings/session.segments/_full.segment.rsc +23 -0
- package/.next/server/app/settings/session.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/session.segments/_index.segment.rsc +5 -0
- package/.next/server/app/settings/session.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +4 -4
- package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/!KGFwcCk/settings.segment.rsc +1 -1
- package/.next/server/app/settings.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/skills.html +1 -1
- package/.next/server/app/skills.rsc +4 -4
- package/.next/server/app/skills.segments/!KGFwcCk/skills/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/skills.segments/!KGFwcCk/skills.segment.rsc +1 -1
- package/.next/server/app/skills.segments/!KGFwcCk.segment.rsc +2 -2
- package/.next/server/app/skills.segments/_full.segment.rsc +4 -4
- package/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/.next/server/app/skills.segments/_index.segment.rsc +2 -2
- package/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/.next/server/app-paths-manifest.json +16 -3
- package/.next/server/chunks/1002.js +18 -0
- package/.next/server/chunks/1011.js +1 -0
- package/.next/server/chunks/1659.js +1 -1
- package/.next/server/chunks/1979.js +2 -2
- package/.next/server/chunks/2408.js +1 -1
- package/.next/server/chunks/{7627.js → 3006.js} +3 -3
- package/.next/server/chunks/3434.js +1 -0
- package/.next/server/chunks/{5920.js → 4342.js} +1 -1
- package/.next/server/chunks/4352.js +1 -0
- package/.next/server/chunks/4445.js +1 -1
- package/.next/server/chunks/7782.js +6 -0
- package/.next/server/chunks/8148.js +1 -0
- package/.next/server/chunks/9599.js +11 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{35922.5bdf78a760129504.js → 13541.056c34ca7fde6869.js} +1 -1
- package/.next/static/chunks/26126-97874904b42befb8.js +1 -0
- package/.next/static/chunks/31010-6e87f77b97544424.js +1 -0
- package/.next/static/chunks/3765-d323c6675307a63e.js +20 -0
- package/.next/static/chunks/{11242-d240a18d4e59390b.js → 41487-d802643f4a8fad3c.js} +5 -5
- package/.next/static/chunks/48273-bbd15bac6733dfc4.js +6 -0
- package/.next/static/chunks/63606.a387b0261d6523ab.js +1 -0
- package/.next/static/chunks/6935-f436a624267529fb.js +1 -0
- package/.next/static/chunks/{69427.0f379c6bdea95405.js → 69427.a0b463c808aa54c8.js} +1 -1
- package/.next/static/chunks/86939-dfc6f8eb395caa89.js +1 -0
- package/.next/static/chunks/app/(app)/agents/[name]/page-8bdd0359043537d4.js +8 -0
- package/.next/static/chunks/app/(app)/agents/page-6fcfd7ab6781814e.js +1 -0
- package/.next/static/chunks/app/(app)/changes/page-4549a5bd72d77e3e.js +1 -0
- package/.next/static/chunks/app/(app)/claude-md/edit/page-08e6e120e71979f4.js +1 -0
- package/.next/static/chunks/app/(app)/claude-md/page-cd9e2176a12ba241.js +1 -0
- package/.next/static/chunks/app/(app)/commands/[name]/page-7cdfdef29ded0aa0.js +6 -0
- package/.next/static/chunks/app/(app)/commands/page-f126b608b04747ac.js +1 -0
- package/.next/static/chunks/app/(app)/files/page-f526eb95821e000e.js +1 -0
- package/.next/static/chunks/app/(app)/hooks/[event]/page-28038323fd29adfa.js +6 -0
- package/.next/static/chunks/app/(app)/hooks/page-f1f39284e53c0344.js +1 -0
- package/.next/static/chunks/app/(app)/inbox/[id]/page-bc1ff3a0db0114a4.js +1 -0
- package/.next/static/chunks/app/(app)/inbox/page-82e03870103ce9bd.js +1 -0
- package/.next/static/chunks/app/(app)/jobs/[id]/edit/page-7fb788f772ff2129.js +1 -0
- package/.next/static/chunks/app/(app)/jobs/[id]/page-a5856b9ae967ff59.js +1 -0
- package/.next/static/chunks/app/(app)/jobs/[id]/runs/[runId]/page-b7c513402db11db6.js +1 -0
- package/.next/static/chunks/app/(app)/jobs/page-e9bbd6c116b9699f.js +1 -0
- package/.next/static/chunks/app/(app)/{layout-81c1899969de11e6.js → layout-ce9e1be301c60fe5.js} +1 -1
- package/.next/static/chunks/app/(app)/mcp-servers/[name]/page-d6d805a27ec0b0c0.js +1 -0
- package/.next/static/chunks/app/(app)/mcp-servers/page-4b7276d43451cd43.js +1 -0
- package/.next/static/chunks/app/(app)/page-027a5382da30ddb9.js +1 -0
- package/.next/static/chunks/app/(app)/reviews/[owner]/[repo]/[number]/page-9ab2955c455bb5fa.js +13 -0
- package/.next/static/chunks/app/(app)/reviews/[owner]/[repo]/{page-c7473a899c7c59c3.js → page-c5fd013309ab3eba.js} +1 -1
- package/.next/static/chunks/app/(app)/reviews/{page-0e6e7395a4f62b50.js → page-47530d93bb9d4a76.js} +1 -1
- package/.next/static/chunks/app/(app)/sessions/[id]/page-94f891e1b54fd05f.js +1 -0
- package/.next/static/chunks/app/(app)/settings/appearance/page-95902da748ac5f1e.js +1 -0
- package/.next/static/chunks/app/(app)/settings/notifications/{page-a28db2ebc9fd0de8.js → page-229f1db6beb1d19c.js} +1 -1
- package/.next/static/chunks/app/(app)/settings/page-8ed16a66fdde10cd.js +1 -0
- package/.next/static/chunks/app/(app)/settings/providers/[id]/page-13654263246617b3.js +1 -0
- package/.next/static/chunks/app/(app)/settings/providers/new/page-e1798e321ccbc6df.js +1 -0
- package/.next/static/chunks/app/(app)/settings/providers/page-0bb4c1db2ee35b3d.js +1 -0
- package/.next/static/chunks/app/(app)/settings/session/page-ab216a8fa37a0f76.js +1 -0
- package/.next/static/chunks/app/(app)/skills/[name]/page-8ab85d5090967ee4.js +6 -0
- package/.next/static/chunks/app/(app)/skills/page-c52773eacb27c04e.js +1 -0
- package/.next/static/chunks/app/_global-error/page-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/agents/[name]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/agents/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/auth/check/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/auth/setup/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/auth/ws-token/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/btw/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/claude-md/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/commands/[name]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/commands/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/defaults/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/filesystem/browse/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/filesystem/files/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/filesystem/mkdir/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/filesystem/read/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/git/clone/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/git/commit/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/git/discard/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/git/generate-message/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/git/push/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/file-content/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/orgs/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/prs/checks/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/prs/diff/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/prs/review/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/prs/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/prs/view/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/repos/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/github/review-session/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/health/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/hooks/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/inbox/[id]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/inbox/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/jobs/[id]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/transcript/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/jobs/[id]/runs/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/jobs/[id]/trigger/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/jobs/mcp-discover/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/jobs/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/jobs/status/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/mcp-servers/[name]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/mcp-servers/[name]/test/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/mcp-servers/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/notifications/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/notifications/test/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/providers/[id]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/providers/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/reviews/pinned/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/mcp/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/search/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/tabs/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/bulk-delete/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/by-ids/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/group/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/pinned/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/sessions/thinking/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/skills/[name]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/skills/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/terminal/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/usage/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/version/changelog/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/version/cockpit/changelog/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/version/cockpit/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/app/api/version/route-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/e868780c.f24b6da08e62c7b2.js +18 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-fc747760bd4c8a4b.js +1 -0
- package/.next/static/chunks/webpack-e31bb45fa59caed8.js +1 -0
- package/.next/static/css/3f8af4ae6f812d5c.css +1 -0
- package/.next/static/zr8XZzqb74eHitdlkpo-C/_buildManifest.js +1 -0
- package/bin/cockpit-hook-bridge.mjs +101 -0
- package/dist/server.js +11 -1
- package/dist/src/lib/models.js +48 -7
- package/dist/src/server/auth.js +32 -10
- package/dist/src/server/claude-settings.js +153 -0
- package/dist/src/server/cli-init-fetch.js +86 -0
- package/dist/src/server/cron-utils.js +16 -5
- package/dist/src/server/debug-logger.js +2 -2
- package/dist/src/server/defaults.js +16 -7
- package/dist/src/server/fs-watcher.js +50 -0
- package/dist/src/server/hook-bridge-path.js +34 -0
- package/dist/src/server/hook-event-translator.js +211 -0
- package/dist/src/server/hook-router.js +150 -0
- package/dist/src/server/inbox.js +14 -10
- package/dist/src/server/job-lock.js +103 -0
- package/dist/src/server/job-scheduler.js +23 -8
- package/dist/src/server/job-storage.js +28 -13
- package/dist/src/server/notification-settings.js +13 -9
- package/dist/src/server/paths.js +23 -0
- package/dist/src/server/plans.js +8 -5
- package/dist/src/server/providers.js +128 -0
- package/dist/src/server/pty-runtime.js +324 -0
- package/dist/src/server/pty-session.js +178 -0
- package/dist/src/server/session-manager.js +727 -144
- package/dist/src/server/session-prefs.js +33 -8
- package/dist/src/server/singleton.js +18 -0
- package/dist/src/server/stream-processor.js +61 -48
- package/dist/src/server/terminal-manager.js +153 -0
- package/dist/src/server/todo-watcher.js +178 -0
- package/dist/src/server/transcript-watcher.js +91 -0
- package/dist/src/server/transcript.js +177 -11
- package/dist/src/server/ws-handler.js +235 -61
- package/next.config.ts +1 -0
- package/package.json +10 -3
- package/public/fonts/symbols-nerd-font-mono.woff2 +0 -0
- package/.next/server/chunks/1941.js +0 -9
- package/.next/server/chunks/2444.js +0 -6
- package/.next/static/brzairTqHmHwvfgKpdkYX/_buildManifest.js +0 -1
- package/.next/static/chunks/3765-a4c7a493ec83f918.js +0 -20
- package/.next/static/chunks/75866-76a3987dda1295ae.js +0 -1
- package/.next/static/chunks/93273-87110c1449e1e7fd.js +0 -6
- package/.next/static/chunks/app/(app)/agents/[name]/page-3ec9a3460e8e9006.js +0 -8
- package/.next/static/chunks/app/(app)/agents/page-d6d504e7d7757ea2.js +0 -1
- package/.next/static/chunks/app/(app)/changes/page-a09bf4742aa8b5ce.js +0 -1
- package/.next/static/chunks/app/(app)/claude-md/edit/page-ab42921ba2618dc3.js +0 -1
- package/.next/static/chunks/app/(app)/claude-md/page-c4c8b20aa002a94a.js +0 -1
- package/.next/static/chunks/app/(app)/commands/[name]/page-2124ffed9a4e95a3.js +0 -6
- package/.next/static/chunks/app/(app)/commands/page-d5bf1bddd17e31dd.js +0 -1
- package/.next/static/chunks/app/(app)/files/page-04e4e5bf1ca89945.js +0 -1
- package/.next/static/chunks/app/(app)/hooks/[event]/page-d988623e739973b5.js +0 -6
- package/.next/static/chunks/app/(app)/hooks/page-818242d7db432578.js +0 -1
- package/.next/static/chunks/app/(app)/inbox/[id]/page-c33dc94e309ff117.js +0 -1
- package/.next/static/chunks/app/(app)/inbox/page-ca3e1724b5072734.js +0 -1
- package/.next/static/chunks/app/(app)/jobs/[id]/edit/page-3a1c927d76333bf0.js +0 -1
- package/.next/static/chunks/app/(app)/jobs/[id]/page-8e698e00b90968b0.js +0 -1
- package/.next/static/chunks/app/(app)/jobs/[id]/runs/[runId]/page-f942df0b7c1d280b.js +0 -1
- package/.next/static/chunks/app/(app)/jobs/page-7a88cc6ac34550c2.js +0 -1
- package/.next/static/chunks/app/(app)/mcp-servers/[name]/page-3541bf3ccdef9145.js +0 -1
- package/.next/static/chunks/app/(app)/mcp-servers/page-3927dfd03d921040.js +0 -1
- package/.next/static/chunks/app/(app)/page-594120e0ea1df527.js +0 -1
- package/.next/static/chunks/app/(app)/reviews/[owner]/[repo]/[number]/page-74c23b04f5c3ff88.js +0 -13
- package/.next/static/chunks/app/(app)/sessions/[id]/page-435e9fb4dd34007d.js +0 -1
- package/.next/static/chunks/app/(app)/settings/page-f8ada7997c0d5b03.js +0 -1
- package/.next/static/chunks/app/(app)/skills/[name]/page-5dbe1e7682880145.js +0 -6
- package/.next/static/chunks/app/(app)/skills/page-fd1986ad7e060f4d.js +0 -1
- package/.next/static/chunks/app/_global-error/page-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/agents/[name]/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/agents/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/auth/check/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/auth/setup/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/auth/ws-token/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/btw/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/claude-md/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/commands/[name]/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/commands/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/defaults/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/filesystem/browse/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/filesystem/files/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/filesystem/mkdir/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/filesystem/read/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/git/clone/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/git/commit/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/git/discard/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/git/generate-message/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/git/push/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/file-content/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/orgs/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/prs/checks/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/prs/diff/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/prs/review/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/prs/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/prs/view/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/repos/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/github/review-session/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/health/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/hooks/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/inbox/[id]/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/inbox/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/transcript/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/runs/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/trigger/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/jobs/mcp-discover/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/jobs/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/jobs/status/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/mcp-servers/[name]/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/mcp-servers/[name]/test/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/mcp-servers/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/notifications/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/notifications/test/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/reviews/pinned/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/mcp/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/search/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/bulk-delete/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/by-ids/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/group/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/pinned/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/skills/[name]/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/skills/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/usage/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/version/cockpit/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/app/api/version/route-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-65c661eddfc65f5b.js +0 -1
- package/.next/static/chunks/webpack-3461a05957b13f46.js +0 -1
- package/.next/static/css/f04f303b5708dd90.css +0 -1
- /package/.next/static/{brzairTqHmHwvfgKpdkYX → zr8XZzqb74eHitdlkpo-C}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.prepareHookSettings = prepareHookSettings;
|
|
7
|
+
exports.cleanupHookSettings = cleanupHookSettings;
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
9
|
+
const node_os_1 = require("node:os");
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const paths_1 = require("../server/paths");
|
|
12
|
+
const hook_bridge_path_1 = require("./hook-bridge-path");
|
|
13
|
+
const HOOK_EVENTS = [
|
|
14
|
+
"PreToolUse",
|
|
15
|
+
"PostToolUse",
|
|
16
|
+
"Stop",
|
|
17
|
+
"StopFailure",
|
|
18
|
+
"UserPromptSubmit",
|
|
19
|
+
"UserPromptExpansion",
|
|
20
|
+
"SubagentStart",
|
|
21
|
+
"SubagentStop",
|
|
22
|
+
"Notification",
|
|
23
|
+
"PermissionRequest",
|
|
24
|
+
"PreCompact",
|
|
25
|
+
"PostCompact",
|
|
26
|
+
];
|
|
27
|
+
const PERMISSION_HOOK_TIMEOUT_SEC = 86400;
|
|
28
|
+
/**
|
|
29
|
+
* Build and write the per-session claude settings file. The file lives in
|
|
30
|
+
* `~/.cache/cockpit/hook-settings/<sessionId>.json` (or `$TMPDIR` if HOME
|
|
31
|
+
* is not writable). Call `cleanupHookSettings` on session destroy.
|
|
32
|
+
*/
|
|
33
|
+
async function prepareHookSettings(opts) {
|
|
34
|
+
const bridge = (0, hook_bridge_path_1.resolveHookBridgePath)();
|
|
35
|
+
const base = await loadUserSettings();
|
|
36
|
+
const hooks = buildHooksBlock(bridge);
|
|
37
|
+
const existingHooks = (base.hooks ?? {});
|
|
38
|
+
for (const [event, entries] of Object.entries(existingHooks)) {
|
|
39
|
+
if (Array.isArray(entries) && entries.length > 0) {
|
|
40
|
+
if (hooks[event]) {
|
|
41
|
+
hooks[event] = [...entries, ...hooks[event]];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const baseAllow = Array.isArray(base.permissions?.allow)
|
|
46
|
+
? base.permissions.allow
|
|
47
|
+
: [];
|
|
48
|
+
const baseDeny = Array.isArray(base.permissions?.deny)
|
|
49
|
+
? base.permissions.deny
|
|
50
|
+
: [];
|
|
51
|
+
const settings = {
|
|
52
|
+
...base,
|
|
53
|
+
hooks,
|
|
54
|
+
permissions: {
|
|
55
|
+
...(base.permissions ?? {}),
|
|
56
|
+
allow: [...baseAllow, ...(opts.allowList ?? [])],
|
|
57
|
+
deny: [...baseDeny, ...(opts.denyList ?? [])],
|
|
58
|
+
},
|
|
59
|
+
// cockpit drives the CLI programmatically and owns the bypass-mode UX
|
|
60
|
+
// itself (flipping bypass on is a deliberate cockpit UI action). The CLI's
|
|
61
|
+
// interactive "WARNING: Bypass Permissions mode" dialog has nowhere to go
|
|
62
|
+
// when there's no human at the TUI, so suppress it here.
|
|
63
|
+
skipDangerousModePermissionPrompt: true,
|
|
64
|
+
};
|
|
65
|
+
const dir = await resolveSettingsDir();
|
|
66
|
+
const settingsPath = node_path_1.default.join(dir, `${opts.sessionId}.json`);
|
|
67
|
+
await (0, promises_1.writeFile)(settingsPath, JSON.stringify(settings, null, 2), { mode: 0o600 });
|
|
68
|
+
return {
|
|
69
|
+
settingsPath,
|
|
70
|
+
env: {
|
|
71
|
+
COCKPIT_HOOK_URL: opts.hookUrl,
|
|
72
|
+
COCKPIT_HOOK_TOKEN: opts.hookToken,
|
|
73
|
+
COCKPIT_SESSION_ID: opts.sessionId,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async function cleanupHookSettings(sessionId) {
|
|
78
|
+
const dir = await resolveSettingsDir();
|
|
79
|
+
const settingsPath = node_path_1.default.join(dir, `${sessionId}.json`);
|
|
80
|
+
await (0, promises_1.rm)(settingsPath, { force: true });
|
|
81
|
+
}
|
|
82
|
+
function buildHooksBlock(bridgePath) {
|
|
83
|
+
const block = {};
|
|
84
|
+
for (const event of HOOK_EVENTS) {
|
|
85
|
+
const cmd = {
|
|
86
|
+
type: "command",
|
|
87
|
+
command: `node ${shellQuote(bridgePath)} ${event}`,
|
|
88
|
+
};
|
|
89
|
+
if (event === "PermissionRequest") {
|
|
90
|
+
cmd.timeout = PERMISSION_HOOK_TIMEOUT_SEC;
|
|
91
|
+
}
|
|
92
|
+
block[event] = [{ matcher: "", hooks: [cmd] }];
|
|
93
|
+
}
|
|
94
|
+
return block;
|
|
95
|
+
}
|
|
96
|
+
function shellQuote(p) {
|
|
97
|
+
if (!/[\s"'\\$`]/.test(p))
|
|
98
|
+
return p;
|
|
99
|
+
return `'${p.replace(/'/g, "'\\''")}'`;
|
|
100
|
+
}
|
|
101
|
+
function userSettingsPaths() {
|
|
102
|
+
return [node_path_1.default.join((0, paths_1.getClaudeDir)(), "settings.json"), node_path_1.default.join((0, paths_1.getClaudeDir)(), "settings.local.json")];
|
|
103
|
+
}
|
|
104
|
+
async function loadUserSettings() {
|
|
105
|
+
let merged = {};
|
|
106
|
+
for (const p of userSettingsPaths()) {
|
|
107
|
+
try {
|
|
108
|
+
const raw = await (0, promises_1.readFile)(p, "utf-8");
|
|
109
|
+
const parsed = JSON.parse(raw);
|
|
110
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
111
|
+
merged = deepMerge(merged, parsed);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// file missing or malformed
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return merged;
|
|
119
|
+
}
|
|
120
|
+
function deepMerge(target, source) {
|
|
121
|
+
const result = { ...target };
|
|
122
|
+
for (const key of Object.keys(source)) {
|
|
123
|
+
const tVal = target[key];
|
|
124
|
+
const sVal = source[key];
|
|
125
|
+
if (isPlainObject(tVal) && isPlainObject(sVal)) {
|
|
126
|
+
result[key] = deepMerge(tVal, sVal);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
result[key] = sVal;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
function isPlainObject(v) {
|
|
135
|
+
return v !== null && typeof v === "object" && !Array.isArray(v);
|
|
136
|
+
}
|
|
137
|
+
let settingsDirCache = null;
|
|
138
|
+
async function resolveSettingsDir() {
|
|
139
|
+
if (settingsDirCache)
|
|
140
|
+
return settingsDirCache;
|
|
141
|
+
const primary = node_path_1.default.join((0, paths_1.getCockpitCacheDir)(), "hook-settings");
|
|
142
|
+
try {
|
|
143
|
+
await (0, promises_1.mkdir)(primary, { recursive: true });
|
|
144
|
+
settingsDirCache = primary;
|
|
145
|
+
return primary;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
const fallback = node_path_1.default.join((0, node_os_1.tmpdir)(), "cockpit-hook-settings");
|
|
149
|
+
await (0, promises_1.mkdir)(fallback, { recursive: true });
|
|
150
|
+
settingsDirCache = fallback;
|
|
151
|
+
return fallback;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchCliInitData = fetchCliInitData;
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const FETCH_TIMEOUT_MS = 30_000;
|
|
6
|
+
/**
|
|
7
|
+
* Spawn a one-shot `claude -p --output-format stream-json` process and extract
|
|
8
|
+
* the system/init event. Kills the process as soon as init is received (before
|
|
9
|
+
* any API call for the prompt), so this costs zero tokens.
|
|
10
|
+
*/
|
|
11
|
+
function fetchCliInitData(opts) {
|
|
12
|
+
const bin = opts.bin ?? "claude";
|
|
13
|
+
const args = ["-p", "--verbose", "--output-format", "stream-json", "hi"];
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
let resolved = false;
|
|
16
|
+
const done = (result) => {
|
|
17
|
+
if (resolved)
|
|
18
|
+
return;
|
|
19
|
+
resolved = true;
|
|
20
|
+
try {
|
|
21
|
+
proc.kill();
|
|
22
|
+
}
|
|
23
|
+
catch { }
|
|
24
|
+
resolve(result);
|
|
25
|
+
};
|
|
26
|
+
console.log(`[cli-init-fetch] spawning: ${bin} ${args.join(" ")} (cwd=${opts.cwd})`);
|
|
27
|
+
const proc = (0, node_child_process_1.spawn)(bin, args, {
|
|
28
|
+
cwd: opts.cwd,
|
|
29
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
30
|
+
});
|
|
31
|
+
let buffer = "";
|
|
32
|
+
let stderrBuf = "";
|
|
33
|
+
proc.stdout.on("data", (chunk) => {
|
|
34
|
+
buffer += chunk.toString();
|
|
35
|
+
const lines = buffer.split("\n");
|
|
36
|
+
buffer = lines.pop() || "";
|
|
37
|
+
for (const line of lines) {
|
|
38
|
+
if (!line.trim())
|
|
39
|
+
continue;
|
|
40
|
+
try {
|
|
41
|
+
const event = JSON.parse(line);
|
|
42
|
+
if (event.type === "system" && event.subtype === "init") {
|
|
43
|
+
const initData = parseInitEvent(event);
|
|
44
|
+
console.log(`[cli-init-fetch] got init: ${initData.slashCommands.length} commands, ${initData.skills.length} skills`);
|
|
45
|
+
done(initData);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// not JSON, skip
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
proc.stderr?.on("data", (chunk) => {
|
|
55
|
+
stderrBuf += chunk.toString();
|
|
56
|
+
if (stderrBuf.length > 2048)
|
|
57
|
+
stderrBuf = stderrBuf.slice(-1024);
|
|
58
|
+
});
|
|
59
|
+
proc.on("close", (code) => {
|
|
60
|
+
console.log(`[cli-init-fetch] process exited code=${code}${stderrBuf ? ` stderr=${stderrBuf.slice(0, 200)}` : ""}`);
|
|
61
|
+
done(null);
|
|
62
|
+
});
|
|
63
|
+
proc.on("error", (err) => {
|
|
64
|
+
console.log(`[cli-init-fetch] spawn error: ${err.message}`);
|
|
65
|
+
done(null);
|
|
66
|
+
});
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
console.log("[cli-init-fetch] timeout reached, giving up");
|
|
69
|
+
done(null);
|
|
70
|
+
}, FETCH_TIMEOUT_MS);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function parseInitEvent(event) {
|
|
74
|
+
const slashCommands = (event.slash_commands || []);
|
|
75
|
+
const skills = (event.skills || []);
|
|
76
|
+
const rawAgents = (event.agents || []);
|
|
77
|
+
const agents = rawAgents.map((a) => typeof a === "string" ? { name: a } : { name: (a.name || ""), description: a.description });
|
|
78
|
+
const version = (event.claude_code_version || "");
|
|
79
|
+
const model = (event.model || "");
|
|
80
|
+
const rawServers = (event.mcp_servers || []);
|
|
81
|
+
const mcpServers = rawServers.map((s) => ({
|
|
82
|
+
name: (s.name || ""),
|
|
83
|
+
status: (s.status || ""),
|
|
84
|
+
}));
|
|
85
|
+
return { slashCommands, skills, agents, version, model, mcpServers };
|
|
86
|
+
}
|
|
@@ -43,6 +43,8 @@ function parseCron(expression) {
|
|
|
43
43
|
dayOfMonth: parseField(parts[2], 1, 31),
|
|
44
44
|
month: parseField(parts[3], 1, 12),
|
|
45
45
|
dayOfWeek: parseField(parts[4], 0, 6),
|
|
46
|
+
domWild: parts[2] === "*",
|
|
47
|
+
dowWild: parts[4] === "*",
|
|
46
48
|
};
|
|
47
49
|
}
|
|
48
50
|
function matchesCron(expression, date) {
|
|
@@ -52,11 +54,20 @@ function matchesCron(expression, date) {
|
|
|
52
54
|
const dom = date.getDate();
|
|
53
55
|
const month = date.getMonth() + 1;
|
|
54
56
|
const dow = date.getDay();
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
let dayMatch;
|
|
58
|
+
if (fields.domWild && fields.dowWild) {
|
|
59
|
+
dayMatch = true;
|
|
60
|
+
}
|
|
61
|
+
else if (fields.domWild) {
|
|
62
|
+
dayMatch = fields.dayOfWeek.includes(dow);
|
|
63
|
+
}
|
|
64
|
+
else if (fields.dowWild) {
|
|
65
|
+
dayMatch = fields.dayOfMonth.includes(dom);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
dayMatch = fields.dayOfMonth.includes(dom) || fields.dayOfWeek.includes(dow);
|
|
69
|
+
}
|
|
70
|
+
return fields.minute.includes(minute) && fields.hour.includes(hour) && dayMatch && fields.month.includes(month);
|
|
60
71
|
}
|
|
61
72
|
function simpleScheduleToCron(schedule) {
|
|
62
73
|
const time = schedule.time || "00:00";
|
|
@@ -12,8 +12,8 @@ exports.logDiag = logDiag;
|
|
|
12
12
|
exports.isDebugEnabled = isDebugEnabled;
|
|
13
13
|
exports.debugLog = debugLog;
|
|
14
14
|
const promises_1 = require("node:fs/promises");
|
|
15
|
-
const node_os_1 = require("node:os");
|
|
16
15
|
const node_path_1 = __importDefault(require("node:path"));
|
|
16
|
+
const paths_1 = require("../server/paths");
|
|
17
17
|
const enabled = process.env.COCKPIT_DEBUG === "1";
|
|
18
18
|
const MAX_SIZE_BYTES = 50 * 1024 * 1024; // 50 MB
|
|
19
19
|
const CHECK_INTERVAL = 500; // check size every N writes
|
|
@@ -25,7 +25,7 @@ let rotating = false;
|
|
|
25
25
|
function init() {
|
|
26
26
|
if (ready)
|
|
27
27
|
return ready;
|
|
28
|
-
const dir =
|
|
28
|
+
const dir = (0, paths_1.getCockpitDir)();
|
|
29
29
|
logPath = node_path_1.default.join(dir, "debug.jsonl");
|
|
30
30
|
prevPath = node_path_1.default.join(dir, "debug.prev.jsonl");
|
|
31
31
|
ready = (0, promises_1.mkdir)(dir, { recursive: true }).then(() => { });
|
|
@@ -3,10 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getDefaults = getDefaults;
|
|
4
4
|
exports.setDefaults = setDefaults;
|
|
5
5
|
const node_fs_1 = require("node:fs");
|
|
6
|
-
const node_os_1 = require("node:os");
|
|
7
6
|
const node_path_1 = require("node:path");
|
|
8
|
-
const
|
|
9
|
-
|
|
7
|
+
const paths_1 = require("../server/paths");
|
|
8
|
+
function prefsDir() {
|
|
9
|
+
return (0, paths_1.getCockpitDir)();
|
|
10
|
+
}
|
|
11
|
+
function defaultsFile() {
|
|
12
|
+
return (0, node_path_1.join)(prefsDir(), "defaults.json");
|
|
13
|
+
}
|
|
10
14
|
const fallback = {
|
|
11
15
|
thinkingLevel: "high",
|
|
12
16
|
bypassAllPermissions: false,
|
|
@@ -16,13 +20,18 @@ const fallback = {
|
|
|
16
20
|
readExpanded: false,
|
|
17
21
|
editExpanded: false,
|
|
18
22
|
toolCallsExpanded: false,
|
|
19
|
-
|
|
23
|
+
modelSlots: { main: "sonnet" },
|
|
20
24
|
messageStitching: true,
|
|
21
25
|
reviewsEnabled: true,
|
|
22
26
|
};
|
|
23
27
|
function getDefaults() {
|
|
24
28
|
try {
|
|
25
|
-
|
|
29
|
+
const raw = JSON.parse((0, node_fs_1.readFileSync)(defaultsFile(), "utf-8"));
|
|
30
|
+
if (raw.model && !raw.modelSlots) {
|
|
31
|
+
raw.modelSlots = { main: raw.model };
|
|
32
|
+
delete raw.model;
|
|
33
|
+
}
|
|
34
|
+
return { ...fallback, ...raw };
|
|
26
35
|
}
|
|
27
36
|
catch {
|
|
28
37
|
return { ...fallback };
|
|
@@ -32,8 +41,8 @@ function setDefaults(partial) {
|
|
|
32
41
|
const current = getDefaults();
|
|
33
42
|
const updated = { ...current, ...partial };
|
|
34
43
|
try {
|
|
35
|
-
(0, node_fs_1.mkdirSync)(
|
|
36
|
-
(0, node_fs_1.writeFileSync)(
|
|
44
|
+
(0, node_fs_1.mkdirSync)(prefsDir(), { recursive: true });
|
|
45
|
+
(0, node_fs_1.writeFileSync)(defaultsFile(), JSON.stringify(updated, null, 2) + "\n");
|
|
37
46
|
}
|
|
38
47
|
catch {
|
|
39
48
|
// best effort
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.watchCwd = watchCwd;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const watches = new Map();
|
|
6
|
+
const DEBOUNCE_MS = 500;
|
|
7
|
+
const IGNORE_RE = /(?:^|[\\/])(?:\.git[\\/](?!HEAD$|refs[\\/])|\.next[\\/]|node_modules[\\/])/;
|
|
8
|
+
function startWatch(cwd) {
|
|
9
|
+
let timer = null;
|
|
10
|
+
const entry = {
|
|
11
|
+
watcher: (0, node_fs_1.watch)(cwd, { recursive: true }, (_event, filename) => {
|
|
12
|
+
if (filename && IGNORE_RE.test(filename))
|
|
13
|
+
return;
|
|
14
|
+
if (timer)
|
|
15
|
+
return;
|
|
16
|
+
timer = setTimeout(() => {
|
|
17
|
+
timer = null;
|
|
18
|
+
for (const fn of entry.listeners)
|
|
19
|
+
fn();
|
|
20
|
+
}, DEBOUNCE_MS);
|
|
21
|
+
}),
|
|
22
|
+
listeners: new Set(),
|
|
23
|
+
};
|
|
24
|
+
entry.watcher.on("error", (err) => {
|
|
25
|
+
console.log(`[fs-watcher] error on ${cwd}: ${err.message}`);
|
|
26
|
+
cleanupWatch(cwd);
|
|
27
|
+
});
|
|
28
|
+
return entry;
|
|
29
|
+
}
|
|
30
|
+
function cleanupWatch(cwd) {
|
|
31
|
+
const entry = watches.get(cwd);
|
|
32
|
+
if (!entry)
|
|
33
|
+
return;
|
|
34
|
+
entry.watcher.close();
|
|
35
|
+
watches.delete(cwd);
|
|
36
|
+
}
|
|
37
|
+
function watchCwd(cwd, listener) {
|
|
38
|
+
let entry = watches.get(cwd);
|
|
39
|
+
if (!entry) {
|
|
40
|
+
entry = startWatch(cwd);
|
|
41
|
+
watches.set(cwd, entry);
|
|
42
|
+
}
|
|
43
|
+
entry.listeners.add(listener);
|
|
44
|
+
return () => {
|
|
45
|
+
entry.listeners.delete(listener);
|
|
46
|
+
if (entry.listeners.size === 0) {
|
|
47
|
+
cleanupWatch(cwd);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resolveHookBridgePath = resolveHookBridgePath;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
let cached = null;
|
|
10
|
+
/**
|
|
11
|
+
* Resolve the absolute path to `bin/cockpit-hook-bridge.mjs`.
|
|
12
|
+
*
|
|
13
|
+
* cockpit always runs from its package root: in dev `tsx` runs from the repo
|
|
14
|
+
* root; in prod `bin/cockpit.js` chdirs to the package root before importing
|
|
15
|
+
* `dist/server.js`. So `bin/cockpit-hook-bridge.mjs` lives at
|
|
16
|
+
* `process.cwd()/bin/cockpit-hook-bridge.mjs` in both cases.
|
|
17
|
+
*
|
|
18
|
+
* Allow override via COCKPIT_HOOK_BRIDGE_BIN for tests and packaging quirks.
|
|
19
|
+
*/
|
|
20
|
+
function resolveHookBridgePath() {
|
|
21
|
+
if (cached)
|
|
22
|
+
return cached;
|
|
23
|
+
const override = process.env.COCKPIT_HOOK_BRIDGE_BIN;
|
|
24
|
+
if (override && (0, node_fs_1.existsSync)(override)) {
|
|
25
|
+
cached = override;
|
|
26
|
+
return override;
|
|
27
|
+
}
|
|
28
|
+
const candidate = node_path_1.default.resolve(process.cwd(), "bin", "cockpit-hook-bridge.mjs");
|
|
29
|
+
if ((0, node_fs_1.existsSync)(candidate)) {
|
|
30
|
+
cached = candidate;
|
|
31
|
+
return candidate;
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`cockpit-hook-bridge.mjs not found at ${candidate}`);
|
|
34
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.translateHookEvent = translateHookEvent;
|
|
4
|
+
exports.newPermissionRequestId = newPermissionRequestId;
|
|
5
|
+
const uuid_1 = require("uuid");
|
|
6
|
+
/**
|
|
7
|
+
* Convert a single hook payload from claude into ParsedEvent objects that
|
|
8
|
+
* the existing stream-processor / session emitter pipeline can consume.
|
|
9
|
+
*
|
|
10
|
+
* Pure function: no state, no side effects. The session manager owns
|
|
11
|
+
* status tracking, permission request bookkeeping, and emission.
|
|
12
|
+
*
|
|
13
|
+
* Returns an empty array for events that don't map to a ParsedEvent
|
|
14
|
+
* (e.g. UserPromptSubmit, which only affects status).
|
|
15
|
+
*/
|
|
16
|
+
function translateHookEvent(eventName, payload) {
|
|
17
|
+
switch (eventName) {
|
|
18
|
+
case "PreToolUse":
|
|
19
|
+
return translatePreToolUse(payload);
|
|
20
|
+
case "PostToolUse":
|
|
21
|
+
return translatePostToolUse(payload);
|
|
22
|
+
case "Stop":
|
|
23
|
+
return translateStop(payload);
|
|
24
|
+
case "StopFailure":
|
|
25
|
+
return translateStopFailure(payload);
|
|
26
|
+
case "PermissionRequest":
|
|
27
|
+
return translatePermissionRequest(payload);
|
|
28
|
+
case "Notification":
|
|
29
|
+
return translateNotification(payload);
|
|
30
|
+
case "SubagentStart":
|
|
31
|
+
return translateSubagentStart(payload);
|
|
32
|
+
case "SubagentStop":
|
|
33
|
+
return translateSubagentStop(payload);
|
|
34
|
+
case "PreCompact":
|
|
35
|
+
return translatePreCompact(payload);
|
|
36
|
+
case "PostCompact":
|
|
37
|
+
return translatePostCompact(payload);
|
|
38
|
+
case "UserPromptSubmit":
|
|
39
|
+
case "UserPromptExpansion":
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** PermissionRequest payloads don't carry a request ID; cockpit synthesises one. */
|
|
44
|
+
function newPermissionRequestId() {
|
|
45
|
+
return (0, uuid_1.v4)();
|
|
46
|
+
}
|
|
47
|
+
function translatePreToolUse(payload) {
|
|
48
|
+
const toolName = stringOr(payload.tool_name, "unknown");
|
|
49
|
+
const toolInput = payload.tool_input;
|
|
50
|
+
const toolId = stringOr(payload.tool_use_id, "");
|
|
51
|
+
const events = [
|
|
52
|
+
{
|
|
53
|
+
type: "system_message",
|
|
54
|
+
text: "__tool_use_start",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: "tool_use_start",
|
|
58
|
+
toolName,
|
|
59
|
+
toolId: toolId || undefined,
|
|
60
|
+
toolInput: toolInput ? JSON.stringify(toolInput) : "",
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
if (toolName === "EnterPlanMode") {
|
|
64
|
+
events.push({ type: "system_message", text: "__permission_mode::plan" });
|
|
65
|
+
}
|
|
66
|
+
return events;
|
|
67
|
+
}
|
|
68
|
+
function translatePostToolUse(payload) {
|
|
69
|
+
const toolName = stringOr(payload.tool_name, "unknown");
|
|
70
|
+
const toolId = stringOr(payload.tool_use_id, "");
|
|
71
|
+
const toolInput = payload.tool_input;
|
|
72
|
+
const response = payload.tool_response;
|
|
73
|
+
const output = extractToolOutput(response);
|
|
74
|
+
const filePath = extractFilePath(toolInput);
|
|
75
|
+
const events = [
|
|
76
|
+
{
|
|
77
|
+
type: "tool_result",
|
|
78
|
+
toolId: toolId || undefined,
|
|
79
|
+
toolOutput: output,
|
|
80
|
+
filePath,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
if (toolName === "ExitPlanMode") {
|
|
84
|
+
events.push({ type: "system_message", text: "__permission_mode::standard" });
|
|
85
|
+
}
|
|
86
|
+
return events;
|
|
87
|
+
}
|
|
88
|
+
function translateStop(payload) {
|
|
89
|
+
const text = stringOr(payload.last_assistant_message, "");
|
|
90
|
+
const message = {
|
|
91
|
+
id: (0, uuid_1.v4)(),
|
|
92
|
+
role: "assistant",
|
|
93
|
+
content: text,
|
|
94
|
+
toolUses: [],
|
|
95
|
+
blocks: [],
|
|
96
|
+
timestamp: Date.now(),
|
|
97
|
+
};
|
|
98
|
+
return [{ type: "message_done", message }];
|
|
99
|
+
}
|
|
100
|
+
function translateStopFailure(payload) {
|
|
101
|
+
const errorType = stringOr(payload.error_type, "unknown");
|
|
102
|
+
const errorMessage = stringOr(payload.error_message, "Unknown error");
|
|
103
|
+
const message = {
|
|
104
|
+
id: (0, uuid_1.v4)(),
|
|
105
|
+
role: "assistant",
|
|
106
|
+
content: "",
|
|
107
|
+
toolUses: [],
|
|
108
|
+
blocks: [],
|
|
109
|
+
timestamp: Date.now(),
|
|
110
|
+
};
|
|
111
|
+
return [
|
|
112
|
+
{ type: "message_done", message },
|
|
113
|
+
{ type: "system_message", text: `__stop_failure::${errorType}::${errorMessage}` },
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
function translatePermissionRequest(payload) {
|
|
117
|
+
const toolName = stringOr(payload.tool_name, "unknown");
|
|
118
|
+
const toolInput = payload.tool_input;
|
|
119
|
+
return [
|
|
120
|
+
{
|
|
121
|
+
type: "permission_request",
|
|
122
|
+
requestId: newPermissionRequestId(),
|
|
123
|
+
toolName,
|
|
124
|
+
toolInput: toolInput ? JSON.stringify(toolInput) : "",
|
|
125
|
+
rawToolInput: toolInput,
|
|
126
|
+
},
|
|
127
|
+
];
|
|
128
|
+
}
|
|
129
|
+
function translateSubagentStart(payload) {
|
|
130
|
+
const sessionId = stringOr(payload.session_id, (0, uuid_1.v4)());
|
|
131
|
+
const agentId = stringOr(payload.agent_id, "");
|
|
132
|
+
const agentType = stringOr(payload.agent_type, "");
|
|
133
|
+
const description = stringOr(payload.description, "");
|
|
134
|
+
return [
|
|
135
|
+
{
|
|
136
|
+
type: "task_update",
|
|
137
|
+
taskInfo: {
|
|
138
|
+
taskId: sessionId,
|
|
139
|
+
toolUseId: agentId,
|
|
140
|
+
status: "running",
|
|
141
|
+
title: agentType || "Agent",
|
|
142
|
+
description: description || agentType || "Subagent running",
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
];
|
|
146
|
+
}
|
|
147
|
+
function translateSubagentStop(payload) {
|
|
148
|
+
const sessionId = stringOr(payload.session_id, "");
|
|
149
|
+
const agentId = stringOr(payload.agent_id, "");
|
|
150
|
+
const agentType = stringOr(payload.agent_type, "");
|
|
151
|
+
const lastMessage = stringOr(payload.last_assistant_message, "");
|
|
152
|
+
const description = stringOr(payload.description, "");
|
|
153
|
+
return [
|
|
154
|
+
{
|
|
155
|
+
type: "task_update",
|
|
156
|
+
taskInfo: {
|
|
157
|
+
taskId: sessionId,
|
|
158
|
+
toolUseId: agentId,
|
|
159
|
+
status: "completed",
|
|
160
|
+
title: agentType || "Agent",
|
|
161
|
+
description: description || agentType || "Subagent completed",
|
|
162
|
+
summary: lastMessage.slice(0, 500) || undefined,
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
}
|
|
167
|
+
function translatePreCompact(_payload) {
|
|
168
|
+
return [{ type: "system_message", text: "__compact::hook_start" }];
|
|
169
|
+
}
|
|
170
|
+
function translatePostCompact(_payload) {
|
|
171
|
+
return [{ type: "system_message", text: "__compact::hook_done" }];
|
|
172
|
+
}
|
|
173
|
+
function translateNotification(payload) {
|
|
174
|
+
const message = stringOr(payload.message, "");
|
|
175
|
+
if (!message)
|
|
176
|
+
return [];
|
|
177
|
+
return [{ type: "system_message", text: `__notification::${message}` }];
|
|
178
|
+
}
|
|
179
|
+
function stringOr(value, fallback) {
|
|
180
|
+
return typeof value === "string" ? value : fallback;
|
|
181
|
+
}
|
|
182
|
+
function extractToolOutput(response) {
|
|
183
|
+
if (response == null)
|
|
184
|
+
return "";
|
|
185
|
+
if (typeof response === "string")
|
|
186
|
+
return response;
|
|
187
|
+
if (typeof response === "object") {
|
|
188
|
+
const obj = response;
|
|
189
|
+
if (typeof obj.stdout === "string") {
|
|
190
|
+
let out = obj.stdout;
|
|
191
|
+
if (typeof obj.stderr === "string" && obj.stderr.length > 0)
|
|
192
|
+
out += `\n${obj.stderr}`;
|
|
193
|
+
return out;
|
|
194
|
+
}
|
|
195
|
+
if (typeof obj.content === "string")
|
|
196
|
+
return obj.content;
|
|
197
|
+
return JSON.stringify(response);
|
|
198
|
+
}
|
|
199
|
+
return String(response);
|
|
200
|
+
}
|
|
201
|
+
function extractFilePath(toolInput) {
|
|
202
|
+
if (!toolInput)
|
|
203
|
+
return undefined;
|
|
204
|
+
if (typeof toolInput.file_path === "string")
|
|
205
|
+
return toolInput.file_path;
|
|
206
|
+
if (typeof toolInput.filePath === "string")
|
|
207
|
+
return toolInput.filePath;
|
|
208
|
+
if (typeof toolInput.path === "string")
|
|
209
|
+
return toolInput.path;
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|