Skip to content

Commit 9f8528d

Browse files
committed
Merge branch 'feat/dashboard-agent-flows' into feat/dashboard-agent-watch
2 parents 5254ab6 + 447223e commit 9f8528d

49 files changed

Lines changed: 2924 additions & 24 deletions

File tree

  • .server-changes
  • apps/webapp/app
    • components/dashboard-agent
    • routes
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.agents.$agentParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.alerts
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.batches.$batchParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.batches
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions.$bulkActionParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards._index
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dev-branches
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.limits
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.$modelId
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models._index
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.compare
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts._index
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.regions
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.$scheduleParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions.$sessionParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions._index
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.dashboard
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.standard.$taskParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.tokens.$waitpointParam
      • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.tokens
  • internal-packages

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
area: webapp
3+
type: feature
4+
---
5+
6+
The dashboard agent's suggested questions now fit every page in an environment — tasks, schedules, batches, alerts, waitpoints, bulk actions, branches, limits, dashboards, agents, prompts, models, sessions and the rest — instead of falling back to generic ones. Pages where something is actually stuck offer a question about it: a scheduled task with no schedule attached, a paused queue, a batch whose runs failed, a wait token past its timeout, a prompt pinned to an override.

apps/webapp/app/components/dashboard-agent/demo/components/DemoSuggestedPromptsRow.tsx

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,60 @@ import {
1616
} from "@internal/dashboard-agent-contracts";
1717
import { cn } from "~/utils/cn";
1818

19+
/**
20+
* The identity a page kind carries, when it carries one. Pages with nothing but
21+
* a kind (the section pages) fall through to the kind on its own.
22+
*/
23+
function pageSubject(page: AgentPageContext["page"]): string | undefined {
24+
switch (page.kind) {
25+
case "run":
26+
return `${page.runId} · ${page.status}`;
27+
case "queue":
28+
return page.name;
29+
case "error":
30+
return page.fingerprint;
31+
case "deployment":
32+
return page.version;
33+
case "task":
34+
return page.taskId;
35+
case "schedule":
36+
return `${page.scheduleId} · ${page.taskId}`;
37+
case "batch":
38+
return page.batchId;
39+
case "test":
40+
return page.taskId;
41+
case "waitpoints":
42+
return page.tokenId;
43+
case "bulkactions":
44+
return page.bulkActionId;
45+
case "dashboards":
46+
return page.title;
47+
case "agents":
48+
case "playground":
49+
return page.agentId;
50+
case "prompts":
51+
return page.slug;
52+
case "models":
53+
return page.modelId;
54+
case "sessions":
55+
return page.sessionId;
56+
case "other":
57+
return page.path;
58+
default:
59+
return undefined;
60+
}
61+
}
62+
1963
/** One line describing the page the chips were derived from. */
2064
function contextLine(context: AgentPageContext): string {
2165
const { page, signals } = context;
66+
const subject = pageSubject(page);
2267
const where =
23-
page.kind === "run"
24-
? `run ${page.runId} · ${page.status}`
25-
: page.kind === "runs"
26-
? "runs list"
27-
: page.kind === "queue"
28-
? `queue ${page.name}`
29-
: page.kind === "error"
30-
? `error ${page.fingerprint}`
31-
: page.kind === "deployment"
32-
? `deployment ${page.version}`
33-
: page.kind === "other"
34-
? page.path
35-
: `${page.kind} list`;
68+
page.kind === "other"
69+
? (subject ?? page.kind)
70+
: subject
71+
? `${page.kind} ${subject}`
72+
: page.kind;
3673
const why = signals.length > 0 ? signals.map((s) => s.kind).join(", ") : "no signals";
3774
return `${where}${why}`;
3875
}

apps/webapp/app/components/dashboard-agent/investigate-prompts.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,22 @@ export function errorGroupPrompt(errorFriendlyId: string, taskIdentifier?: strin
4848
export function queueBacklogPrompt(queueName: string): string {
4949
return `Investigate the ${queueName} queue — why is it backed up?`;
5050
}
51+
52+
/**
53+
* "… is paused, so nothing will start" — a task or test page whose queue is
54+
* paused. The name is optional: the test page knows the queue is paused but not
55+
* what it's called.
56+
*/
57+
export function pausedQueuePrompt(queueName?: string): string {
58+
const subject = queueName ? `The ${queueName} queue` : "The queue this task runs on";
59+
return `${subject} is paused, so nothing new will start on it. What's waiting behind it?`;
60+
}
61+
62+
/** "Investigate batch …" — a batch that didn't come out clean. */
63+
export function batchFailurePrompt(batchFriendlyId: string, failedRunCount?: number): string {
64+
const scale =
65+
failedRunCount !== undefined && failedRunCount > 0
66+
? `${failedRunCount} of its runs failed`
67+
: "some of its runs failed";
68+
return `Investigate batch ${batchFriendlyId}${scale}. Which ones, and why?`;
69+
}

apps/webapp/app/components/dashboard-agent/page-label.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,30 @@ const KIND_LABELS: Record<Exclude<AgentPage["kind"], "other">, string> = {
2323
queue: "Queue detail",
2424
deployments: "Deployments",
2525
deployment: "Deployment detail",
26+
tasks: "Tasks",
27+
task: "Task detail",
28+
schedule: "Schedule detail",
29+
batches: "Batches",
30+
batch: "Batch detail",
31+
test: "Test",
32+
alerts: "Alerts",
33+
apikeys: "API keys",
34+
envvars: "Environment variables",
35+
concurrency: "Concurrency",
36+
regions: "Regions",
37+
settings: "Settings",
38+
waitpoints: "Waitpoints",
39+
bulkactions: "Bulk actions",
40+
branches: "Branches",
41+
logs: "Logs",
42+
limits: "Limits",
43+
query: "Query",
44+
dashboards: "Dashboards",
45+
agents: "Agents",
46+
playground: "Playground",
47+
prompts: "Prompts",
48+
models: "Models",
49+
sessions: "Sessions",
2650
};
2751

2852
// The dashboard's env-level sections, keyed by their first path segment. Only

apps/webapp/app/components/dashboard-agent/suggested-prompts/index.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,34 @@ export {
2828
type ResolveSuggestedPromptsOptions,
2929
} from "./resolver";
3030
export {
31+
agentsAgentPageContext,
32+
alertsAgentPageContext,
33+
batchAgentPageContext,
34+
batchesAgentPageContext,
35+
branchesAgentPageContext,
36+
bulkActionsAgentPageContext,
37+
dashboardsAgentPageContext,
3138
deploymentAgentPageContext,
3239
deploymentsAgentPageContext,
3340
errorAgentPageContext,
3441
errorsAgentPageContext,
3542
FRESH_FAILURE_WINDOW_MS,
43+
isFailedBatchStatus,
44+
limitsAgentPageContext,
45+
modelsAgentPageContext,
46+
playgroundAgentPageContext,
47+
promptsAgentPageContext,
3648
QUEUE_OLDEST_WAIT_WARNING_MS,
3749
queueAgentPageContext,
3850
queuesAgentPageContext,
3951
runAgentPageContext,
52+
scheduleAgentPageContext,
53+
sectionAgentPageContext,
54+
sessionsAgentPageContext,
55+
taskAgentPageContext,
56+
testAgentPageContext,
57+
waitpointsAgentPageContext,
58+
type SectionPageKind,
4059
} from "./page-mappers";
4160
export { parsePromotedPrompt } from "./promoted";
4261
export {

0 commit comments

Comments
 (0)