@alexjbarnes/cockpit 0.1.1 → 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 +28 -3
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +147 -3
- package/.next/react-loadable-manifest.json +19 -3
- package/.next/required-server-files.js +3 -0
- package/.next/required-server-files.json +3 -0
- package/.next/routes-manifest.json +162 -0
- package/.next/server/app/(app)/agents/[name]/page.js +3 -3
- 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 +3 -3
- 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 -0
- package/.next/server/app/(app)/inbox/[id]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/inbox/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/inbox/page.js +2 -0
- package/.next/server/app/(app)/inbox/page.js.nft.json +1 -0
- package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -0
- 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 +6 -6
- 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 -0
- package/.next/server/app/(app)/settings/notifications/page.js.nft.json +1 -0
- package/.next/server/app/(app)/settings/notifications/page_client-reference-manifest.js +1 -0
- 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 +5 -0
- package/.next/server/app/api/inbox/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/inbox/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/inbox/route.js +5 -0
- package/.next/server/app/api/inbox/route.js.nft.json +1 -0
- package/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -0
- 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 -0
- package/.next/server/app/api/notifications/route.js.nft.json +1 -0
- package/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/notifications/test/route.js +5 -0
- package/.next/server/app/api/notifications/test/route.js.nft.json +1 -0
- package/.next/server/app/api/notifications/test/route_client-reference-manifest.js +1 -0
- 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 -0
- package/.next/server/app/api/reviews/pinned/route.js.nft.json +1 -0
- package/.next/server/app/api/reviews/pinned/route_client-reference-manifest.js +1 -0
- 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 -0
- package/.next/server/app/api/sessions/bulk-delete/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/bulk-delete/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/by-ids/route.js +1 -0
- package/.next/server/app/api/sessions/by-ids/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/by-ids/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/group/route.js +1 -0
- package/.next/server/app/api/sessions/group/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/group/route_client-reference-manifest.js +1 -0
- 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 -0
- package/.next/server/app/api/sessions/search/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/search/route_client-reference-manifest.js +1 -0
- 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 -0
- package/.next/server/app/inbox.meta +16 -0
- package/.next/server/app/inbox.rsc +23 -0
- package/.next/server/app/inbox.segments/!KGFwcCk/inbox/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/inbox.segments/!KGFwcCk/inbox.segment.rsc +5 -0
- package/.next/server/app/inbox.segments/!KGFwcCk.segment.rsc +7 -0
- package/.next/server/app/inbox.segments/_full.segment.rsc +23 -0
- package/.next/server/app/inbox.segments/_head.segment.rsc +6 -0
- package/.next/server/app/inbox.segments/_index.segment.rsc +5 -0
- package/.next/server/app/inbox.segments/_tree.segment.rsc +2 -0
- 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 -0
- package/.next/server/app/settings/notifications.meta +17 -0
- package/.next/server/app/settings/notifications.rsc +23 -0
- package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings/notifications/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings/notifications.segment.rsc +5 -0
- package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings.segment.rsc +5 -0
- package/.next/server/app/settings/notifications.segments/!KGFwcCk.segment.rsc +7 -0
- package/.next/server/app/settings/notifications.segments/_full.segment.rsc +23 -0
- package/.next/server/app/settings/notifications.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/notifications.segments/_index.segment.rsc +5 -0
- package/.next/server/app/settings/notifications.segments/_tree.segment.rsc +2 -0
- 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 +28 -3
- package/.next/server/chunks/1002.js +18 -0
- package/.next/server/chunks/1011.js +1 -0
- package/.next/server/chunks/1979.js +2 -2
- package/.next/server/chunks/{9012.js → 3006.js} +3 -3
- package/.next/server/chunks/3108.js +1 -0
- package/.next/server/chunks/3434.js +1 -0
- package/.next/server/chunks/{6142.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/5965.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/{22086-756d490e3320ad15.js → 31010-6e87f77b97544424.js} +1 -1
- package/.next/static/chunks/3765-d323c6675307a63e.js +20 -0
- package/.next/static/chunks/41487-d802643f4a8fad3c.js +199 -0
- package/.next/static/chunks/48273-bbd15bac6733dfc4.js +6 -0
- package/.next/static/chunks/{80392.bca860d8b5972706.js → 58011.3de5770e8b0d8759.js} +1 -1
- package/.next/static/chunks/63606.a387b0261d6523ab.js +1 -0
- package/.next/static/chunks/6935-f436a624267529fb.js +1 -0
- package/.next/static/chunks/{69427.755a0a4013596f7a.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-ce9e1be301c60fe5.js +1 -0
- 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-c5fd013309ab3eba.js +1 -0
- package/.next/static/chunks/app/(app)/reviews/page-47530d93bb9d4a76.js +1 -0
- 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-229f1db6beb1d19c.js +1 -0
- 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/README.md +14 -4
- package/bin/cockpit-hook-bridge.mjs +101 -0
- package/dist/server.js +49 -2
- 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 +18 -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 +136 -0
- package/dist/src/server/job-lock.js +103 -0
- package/dist/src/server/job-scheduler.js +170 -43
- package/dist/src/server/job-storage.js +32 -20
- package/dist/src/server/notification-settings.js +43 -0
- package/dist/src/server/notifications.js +125 -0
- 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 +838 -152
- 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 +444 -13
- package/dist/src/server/ws-handler.js +251 -74
- 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/server/chunks/8346.js +0 -1
- package/.next/static/V2EfPtTUC96VYyF12K0om/_buildManifest.js +0 -1
- package/.next/static/chunks/30120-1535e9064b17ce74.js +0 -20
- package/.next/static/chunks/66997-652baf5596173fea.js +0 -199
- package/.next/static/chunks/93273-c5cb6dcedef67c81.js +0 -6
- package/.next/static/chunks/app/(app)/agents/[name]/page-44c5691c80f17d38.js +0 -8
- package/.next/static/chunks/app/(app)/agents/page-4ce7a715bc0145dc.js +0 -1
- package/.next/static/chunks/app/(app)/changes/page-84cf4cd3ca347d98.js +0 -1
- package/.next/static/chunks/app/(app)/claude-md/edit/page-fb7117171d0f94d2.js +0 -1
- package/.next/static/chunks/app/(app)/claude-md/page-9503f1415e660911.js +0 -1
- package/.next/static/chunks/app/(app)/commands/[name]/page-6ef571e73b105248.js +0 -6
- package/.next/static/chunks/app/(app)/commands/page-e8a506da73d1c280.js +0 -1
- package/.next/static/chunks/app/(app)/files/page-67a95d351a685d79.js +0 -1
- package/.next/static/chunks/app/(app)/hooks/[event]/page-03f85595561b068a.js +0 -6
- package/.next/static/chunks/app/(app)/hooks/page-5578c83ad353e307.js +0 -1
- package/.next/static/chunks/app/(app)/jobs/[id]/edit/page-51d784c59737778c.js +0 -1
- package/.next/static/chunks/app/(app)/jobs/[id]/page-7d00e7a01c70a261.js +0 -1
- package/.next/static/chunks/app/(app)/jobs/[id]/runs/[runId]/page-665191da233fde19.js +0 -1
- package/.next/static/chunks/app/(app)/jobs/page-8b4ee1166a53d5e1.js +0 -1
- package/.next/static/chunks/app/(app)/layout-8dad55d6ce637a01.js +0 -1
- package/.next/static/chunks/app/(app)/mcp-servers/[name]/page-c30f0d78daf7719e.js +0 -1
- package/.next/static/chunks/app/(app)/mcp-servers/page-737b87d338afdb49.js +0 -1
- package/.next/static/chunks/app/(app)/page-40052655d2a9a84f.js +0 -1
- package/.next/static/chunks/app/(app)/reviews/[owner]/[repo]/[number]/page-1d9179bf5a4de7a4.js +0 -13
- package/.next/static/chunks/app/(app)/reviews/[owner]/[repo]/page-d8a9ee39e7cc056a.js +0 -1
- package/.next/static/chunks/app/(app)/reviews/page-098e6e6fe3123e02.js +0 -1
- package/.next/static/chunks/app/(app)/sessions/[id]/page-a74f7fe8322678ba.js +0 -1
- package/.next/static/chunks/app/(app)/settings/page-1fa46b8ac8e22927.js +0 -1
- package/.next/static/chunks/app/(app)/skills/[name]/page-e6572062a6ad90df.js +0 -6
- package/.next/static/chunks/app/(app)/skills/page-8fca8814aa818ae6.js +0 -1
- package/.next/static/chunks/app/_global-error/page-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/agents/[name]/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/agents/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/auth/check/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/auth/setup/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/auth/ws-token/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/btw/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/claude-md/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/commands/[name]/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/commands/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/defaults/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/filesystem/browse/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/filesystem/files/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/filesystem/mkdir/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/filesystem/read/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/git/clone/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/git/commit/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/git/discard/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/git/generate-message/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/git/push/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/file-content/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/orgs/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/prs/checks/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/prs/diff/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/prs/review/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/prs/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/prs/view/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/repos/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/github/review-session/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/health/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/hooks/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/transcript/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/runs/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/jobs/[id]/trigger/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/jobs/mcp-discover/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/jobs/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/jobs/status/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/mcp-servers/[name]/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/mcp-servers/[name]/test/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/mcp-servers/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/mcp/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/search/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/sessions/pinned/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/skills/[name]/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/skills/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/usage/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/version/cockpit/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/app/api/version/route-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b277aba73f9e0212.js +0 -1
- package/.next/static/chunks/webpack-2a5835e108df6f34.js +0 -1
- package/.next/static/css/1e1239c76b265910.css +0 -1
- /package/.next/static/{V2EfPtTUC96VYyF12K0om → zr8XZzqb74eHitdlkpo-C}/_ssgManifest.js +0 -0
package/dist/src/server/auth.js
CHANGED
|
@@ -18,13 +18,17 @@ exports.clearSessionCookie = clearSessionCookie;
|
|
|
18
18
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
19
19
|
const node_fs_1 = require("node:fs");
|
|
20
20
|
const promises_1 = require("node:fs/promises");
|
|
21
|
-
const node_os_1 = require("node:os");
|
|
22
21
|
const node_path_1 = __importDefault(require("node:path"));
|
|
22
|
+
const paths_1 = require("../server/paths");
|
|
23
23
|
// ---------------------------------------------------------------------------
|
|
24
24
|
// Config
|
|
25
25
|
// ---------------------------------------------------------------------------
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
function cockpitDir() {
|
|
27
|
+
return (0, paths_1.getCockpitDir)();
|
|
28
|
+
}
|
|
29
|
+
function passwordFile() {
|
|
30
|
+
return node_path_1.default.join(cockpitDir(), "password.json");
|
|
31
|
+
}
|
|
28
32
|
const SCRYPT_KEYLEN = 64;
|
|
29
33
|
const SALT_BYTES = 32;
|
|
30
34
|
// ---------------------------------------------------------------------------
|
|
@@ -41,16 +45,22 @@ function scryptHash(password, salt) {
|
|
|
41
45
|
});
|
|
42
46
|
}
|
|
43
47
|
function readPasswordFile() {
|
|
44
|
-
if (!(0, node_fs_1.existsSync)(
|
|
48
|
+
if (!(0, node_fs_1.existsSync)(passwordFile()))
|
|
45
49
|
return null;
|
|
46
50
|
try {
|
|
47
|
-
const raw = require("node:fs").readFileSync(
|
|
51
|
+
const raw = require("node:fs").readFileSync(passwordFile(), "utf-8");
|
|
52
|
+
if (!raw.trim()) {
|
|
53
|
+
console.warn("[auth] password.json exists but is empty (likely corrupted by interrupted write)");
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
48
56
|
const data = JSON.parse(raw);
|
|
49
57
|
if (data.hash && data.salt)
|
|
50
58
|
return data;
|
|
59
|
+
console.warn("[auth] password.json missing hash/salt fields");
|
|
51
60
|
return null;
|
|
52
61
|
}
|
|
53
|
-
catch {
|
|
62
|
+
catch (err) {
|
|
63
|
+
console.error("[auth] failed to read password.json:", err);
|
|
54
64
|
return null;
|
|
55
65
|
}
|
|
56
66
|
}
|
|
@@ -62,17 +72,25 @@ function getStoredPassword() {
|
|
|
62
72
|
return cachedPassword;
|
|
63
73
|
}
|
|
64
74
|
function needsSetup() {
|
|
75
|
+
if (process.env.COCKPIT_TOKEN)
|
|
76
|
+
return false;
|
|
65
77
|
return getStoredPassword() === null;
|
|
66
78
|
}
|
|
67
79
|
async function setupPassword(password) {
|
|
68
|
-
await (0, promises_1.mkdir)(
|
|
80
|
+
await (0, promises_1.mkdir)(cockpitDir(), { recursive: true });
|
|
69
81
|
const salt = node_crypto_1.default.randomBytes(SALT_BYTES);
|
|
70
82
|
const hash = await scryptHash(password, salt);
|
|
71
83
|
const data = {
|
|
72
84
|
hash: hash.toString("hex"),
|
|
73
85
|
salt: salt.toString("hex"),
|
|
74
86
|
};
|
|
75
|
-
|
|
87
|
+
const pwFile = passwordFile();
|
|
88
|
+
const tmpFile = `${pwFile}.tmp.${process.pid}.${Date.now()}`;
|
|
89
|
+
const fh = await (0, promises_1.open)(tmpFile, "w");
|
|
90
|
+
await fh.writeFile(JSON.stringify(data), "utf-8");
|
|
91
|
+
await fh.sync();
|
|
92
|
+
await fh.close();
|
|
93
|
+
await (0, promises_1.rename)(tmpFile, pwFile);
|
|
76
94
|
cachedPassword = data;
|
|
77
95
|
}
|
|
78
96
|
async function verifyPassword(password) {
|
|
@@ -87,8 +105,9 @@ async function verifyPassword(password) {
|
|
|
87
105
|
return node_crypto_1.default.timingSafeEqual(hash, storedHash);
|
|
88
106
|
}
|
|
89
107
|
async function deletePasswordFile() {
|
|
90
|
-
|
|
91
|
-
|
|
108
|
+
const pwFile = passwordFile();
|
|
109
|
+
if ((0, node_fs_1.existsSync)(pwFile)) {
|
|
110
|
+
await (0, promises_1.unlink)(pwFile);
|
|
92
111
|
}
|
|
93
112
|
cachedPassword = undefined;
|
|
94
113
|
}
|
|
@@ -115,6 +134,9 @@ function validateSession(token) {
|
|
|
115
134
|
const key = getSigningKey();
|
|
116
135
|
if (!key)
|
|
117
136
|
return false;
|
|
137
|
+
// Allow bypass via COCKPIT_TOKEN for e2e tests
|
|
138
|
+
if (process.env.COCKPIT_TOKEN && token === process.env.COCKPIT_TOKEN)
|
|
139
|
+
return true;
|
|
118
140
|
const dot = token.indexOf(".");
|
|
119
141
|
if (dot === -1)
|
|
120
142
|
return false;
|
|
@@ -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,11 +20,18 @@ const fallback = {
|
|
|
16
20
|
readExpanded: false,
|
|
17
21
|
editExpanded: false,
|
|
18
22
|
toolCallsExpanded: false,
|
|
19
|
-
|
|
23
|
+
modelSlots: { main: "sonnet" },
|
|
24
|
+
messageStitching: true,
|
|
25
|
+
reviewsEnabled: true,
|
|
20
26
|
};
|
|
21
27
|
function getDefaults() {
|
|
22
28
|
try {
|
|
23
|
-
|
|
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 };
|
|
24
35
|
}
|
|
25
36
|
catch {
|
|
26
37
|
return { ...fallback };
|
|
@@ -30,8 +41,8 @@ function setDefaults(partial) {
|
|
|
30
41
|
const current = getDefaults();
|
|
31
42
|
const updated = { ...current, ...partial };
|
|
32
43
|
try {
|
|
33
|
-
(0, node_fs_1.mkdirSync)(
|
|
34
|
-
(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");
|
|
35
46
|
}
|
|
36
47
|
catch {
|
|
37
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
|
+
}
|