Skip to content

Commit 41ae9dc

Browse files
bloveclaude
andcommitted
docs: update dashboard graph docstrings — aviation, not SaaS
Stale module docstrings in dashboard_graph.py and the standalone graph.py still read "SaaS metrics dashboard". Updated to "airline operations KPI dashboard" to match the actual functionality post-PR-3. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent c8c4e59 commit 41ae9dc

16 files changed

Lines changed: 3380 additions & 2 deletions

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"status": "passed",
3+
"failedTests": []
4+
}

cockpit/chat/generative-ui/python/src/graph.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""Multi-node LangGraph graph for the SaaS metrics dashboard.
1+
"""Multi-node LangGraph graph for the airline operations KPI dashboard.
22
33
Flow:
44
router → generate_shell (first turn) or plan_tools (follow-up)

cockpit/chat/generative-ui/python/uv.lock

Lines changed: 1895 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cockpit/langgraph/streaming/python/src/dashboard_graph.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""Multi-node LangGraph graph for the SaaS metrics dashboard.
1+
"""Multi-node LangGraph graph for the airline operations KPI dashboard.
22
33
Flow:
44
router → generate_shell (first turn) or plan_tools (follow-up)

libs/chat/src/lib/styles/chat.css

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
/* libs/chat/src/lib/styles/chat.css */
2+
/* SPDX-License-Identifier: MIT */
3+
4+
/*
5+
* Optional global stylesheet for @ngaf/chat. Import once in your global
6+
* styles to:
7+
* 1. Override design tokens at :root (instead of per :host).
8+
* 2. Reach into chat components with parallel global selectors.
9+
*
10+
* Usage:
11+
* /* in src/styles.css *​/
12+
* @import '@ngaf/chat/chat.css';
13+
*
14+
* :root { --ngaf-chat-primary: oklch(0.55 0.22 264); }
15+
*/
16+
17+
:root {
18+
--ngaf-chat-bg: rgb(255, 255, 255);
19+
--ngaf-chat-surface: rgb(255, 255, 255);
20+
--ngaf-chat-surface-alt: rgb(251, 251, 251);
21+
--ngaf-chat-primary: rgb(28, 28, 28);
22+
--ngaf-chat-on-primary: rgb(255, 255, 255);
23+
--ngaf-chat-text: rgb(28, 28, 28);
24+
--ngaf-chat-text-muted: rgb(115, 115, 115);
25+
--ngaf-chat-separator: rgb(229, 229, 229);
26+
--ngaf-chat-muted: rgb(200, 200, 200);
27+
--ngaf-chat-error-bg: #fef2f2;
28+
--ngaf-chat-error-border: #fecaca;
29+
--ngaf-chat-error-text: #dc2626;
30+
--ngaf-chat-destructive: #dc2626;
31+
--ngaf-chat-warning-bg: #fffbeb;
32+
--ngaf-chat-warning-text: #b45309;
33+
--ngaf-chat-success: #16a34a;
34+
--ngaf-chat-shadow-sm: 0 1px 2px rgba(0,0,0,.05);
35+
--ngaf-chat-shadow-md: 0 4px 6px -1px rgba(0,0,0,.10), 0 2px 4px -1px rgba(0,0,0,.06);
36+
--ngaf-chat-shadow-lg: 0 10px 15px -3px rgba(0,0,0,.10), 0 4px 6px -2px rgba(0,0,0,.05);
37+
--ngaf-chat-radius-bubble: 15px;
38+
--ngaf-chat-radius-input: 20px;
39+
--ngaf-chat-radius-card: 8px;
40+
--ngaf-chat-radius-button: 8px;
41+
--ngaf-chat-radius-launcher: 9999px;
42+
--ngaf-chat-max-width: 48rem;
43+
--ngaf-chat-font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
44+
--ngaf-chat-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
45+
--ngaf-chat-font-size: 1rem;
46+
--ngaf-chat-font-size-sm: 0.875rem;
47+
--ngaf-chat-font-size-xs: 0.75rem;
48+
--ngaf-chat-line-height: 1.6;
49+
--ngaf-chat-line-height-tight: 1.5;
50+
51+
/*
52+
* === A2UI surface tokens — dark-theme defaults ===
53+
*
54+
* Declared at :root so :root[data-theme=...] presets win via
55+
* attribute-selector specificity, and so consumer overrides at :root
56+
* cascade naturally to <a2ui-surface>. The surface component's
57+
* agent-binding still wins per-surface (inline style on the host
58+
* element from beginRendering.styles.primaryColor).
59+
*/
60+
61+
/* Spacing scale (4px base) */
62+
--a2ui-spacing-1: 4px;
63+
--a2ui-spacing-2: 8px;
64+
--a2ui-spacing-3: 12px;
65+
--a2ui-spacing-4: 16px;
66+
--a2ui-spacing-5: 24px;
67+
--a2ui-spacing-6: 32px;
68+
--a2ui-spacing-7: 40px;
69+
70+
/* Typography (per Text usageHint) */
71+
--a2ui-typography-h1-size: 32px;
72+
--a2ui-typography-h1-weight: 700;
73+
--a2ui-typography-h1-line-height: 1.2;
74+
--a2ui-typography-h2-size: 24px;
75+
--a2ui-typography-h2-weight: 600;
76+
--a2ui-typography-h2-line-height: 1.3;
77+
--a2ui-typography-h3-size: 20px;
78+
--a2ui-typography-h3-weight: 600;
79+
--a2ui-typography-h3-line-height: 1.3;
80+
--a2ui-typography-h4-size: 18px;
81+
--a2ui-typography-h4-weight: 500;
82+
--a2ui-typography-h4-line-height: 1.4;
83+
--a2ui-typography-h5-size: 16px;
84+
--a2ui-typography-h5-weight: 500;
85+
--a2ui-typography-h5-line-height: 1.4;
86+
--a2ui-typography-body-size: 14px;
87+
--a2ui-typography-body-weight: 400;
88+
--a2ui-typography-body-line-height: 1.5;
89+
--a2ui-typography-caption-size: 12px;
90+
--a2ui-typography-caption-weight: 400;
91+
--a2ui-typography-caption-line-height: 1.4;
92+
--a2ui-typography-label-size: 12px;
93+
--a2ui-typography-label-weight: 500;
94+
95+
/* Shape radius */
96+
--a2ui-shape-extra-small: 4px;
97+
--a2ui-shape-small: 8px;
98+
--a2ui-shape-medium: 12px;
99+
--a2ui-shape-large: 16px;
100+
--a2ui-shape-extra-large: 28px;
101+
102+
/* Focus ring */
103+
--a2ui-focus-ring-color: var(--a2ui-primary);
104+
--a2ui-focus-ring-width: 2px;
105+
106+
/* Motion */
107+
--a2ui-motion-duration-short: 100ms;
108+
--a2ui-motion-duration-medium: 200ms;
109+
--a2ui-motion-duration-long: 300ms;
110+
--a2ui-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
111+
--a2ui-motion-easing-emphasized: cubic-bezier(0.2, 0, 0, 1.4);
112+
113+
/* Elevation (box-shadow) */
114+
--a2ui-elevation-0: none;
115+
--a2ui-elevation-1: 0 1px 2px rgba(0, 0, 0, 0.3);
116+
--a2ui-elevation-2: 0 2px 4px rgba(0, 0, 0, 0.35);
117+
--a2ui-elevation-3: 0 4px 8px rgba(0, 0, 0, 0.4);
118+
--a2ui-elevation-4: 0 8px 16px rgba(0, 0, 0, 0.45);
119+
--a2ui-elevation-5: 0 16px 32px rgba(0, 0, 0, 0.5);
120+
121+
/* Color (--a2ui-primary is also set by host binding from
122+
* beginRendering.styles.primaryColor for per-surface override) */
123+
--a2ui-primary: #4f8df5;
124+
--a2ui-on-primary: #ffffff;
125+
--a2ui-primary-hover: #6699f7;
126+
--a2ui-secondary: #8a92a3;
127+
--a2ui-on-secondary: #ffffff;
128+
--a2ui-surface: #1a1d23;
129+
--a2ui-on-surface: #ffffff;
130+
--a2ui-surface-variant: rgba(255, 255, 255, 0.05);
131+
--a2ui-on-surface-variant: rgba(255, 255, 255, 0.7);
132+
--a2ui-outline: rgba(255, 255, 255, 0.1);
133+
--a2ui-outline-variant: rgba(255, 255, 255, 0.05);
134+
--a2ui-error: #f5524f;
135+
--a2ui-on-error: #ffffff;
136+
--a2ui-scrim: rgba(0, 0, 0, 0.6);
137+
138+
/* Aliases (kept for back-compat) */
139+
--a2ui-card-bg: var(--a2ui-surface);
140+
--a2ui-input-bg: var(--a2ui-surface-variant);
141+
--a2ui-input-text: var(--a2ui-on-surface);
142+
--a2ui-label: var(--a2ui-on-surface-variant);
143+
--a2ui-caption: var(--a2ui-on-surface-variant);
144+
--a2ui-border: var(--a2ui-outline);
145+
}
146+
147+
@media (prefers-color-scheme: dark) {
148+
:root:not([data-ngaf-chat-theme="light"]) {
149+
--ngaf-chat-bg: rgb(17, 17, 17);
150+
--ngaf-chat-surface: rgb(28, 28, 28);
151+
--ngaf-chat-surface-alt: rgb(44, 44, 44);
152+
--ngaf-chat-primary: rgb(255, 255, 255);
153+
--ngaf-chat-on-primary: rgb(28, 28, 28);
154+
--ngaf-chat-text: rgb(245, 245, 245);
155+
--ngaf-chat-text-muted: rgb(160, 160, 160);
156+
--ngaf-chat-separator: rgb(45, 45, 45);
157+
--ngaf-chat-muted: rgb(60, 60, 60);
158+
--ngaf-chat-error-bg: rgb(45, 21, 21);
159+
--ngaf-chat-error-border: #dc2626;
160+
--ngaf-chat-error-text: #fca5a5;
161+
--ngaf-chat-destructive: #ef4444;
162+
--ngaf-chat-warning-bg: rgb(45, 35, 21);
163+
--ngaf-chat-warning-text: #fbbf24;
164+
--ngaf-chat-success: #4ade80;
165+
}
166+
}
167+
168+
[data-ngaf-chat-theme="dark"] {
169+
--ngaf-chat-bg: rgb(17, 17, 17);
170+
--ngaf-chat-surface: rgb(28, 28, 28);
171+
--ngaf-chat-surface-alt: rgb(44, 44, 44);
172+
--ngaf-chat-primary: rgb(255, 255, 255);
173+
--ngaf-chat-on-primary: rgb(28, 28, 28);
174+
--ngaf-chat-text: rgb(245, 245, 245);
175+
--ngaf-chat-text-muted: rgb(160, 160, 160);
176+
--ngaf-chat-separator: rgb(45, 45, 45);
177+
--ngaf-chat-muted: rgb(60, 60, 60);
178+
--ngaf-chat-error-bg: rgb(45, 21, 21);
179+
--ngaf-chat-error-border: #dc2626;
180+
--ngaf-chat-error-text: #fca5a5;
181+
--ngaf-chat-destructive: #ef4444;
182+
--ngaf-chat-warning-bg: rgb(45, 35, 21);
183+
--ngaf-chat-warning-text: #fbbf24;
184+
--ngaf-chat-success: #4ade80;
185+
}

libs/partial-json/package.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "@ngaf/partial-json",
3+
"version": "0.0.29",
4+
"deprecated": "Replaced by @cacheplane/partial-json. No further versions will be published from this package.",
5+
"license": "MIT",
6+
"repository": {
7+
"type": "git",
8+
"url": "https://github.com/cacheplane/angular-agent-framework.git",
9+
"directory": "libs/partial-json"
10+
},
11+
"homepage": "https://github.com/cacheplane/angular-agent-framework#readme",
12+
"bugs": {
13+
"url": "https://github.com/cacheplane/angular-agent-framework/issues"
14+
},
15+
"sideEffects": false
16+
}

libs/partial-json/project.json

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"name": "partial-json",
3+
"$schema": "../../node_modules/nx/schemas/project-schema.json",
4+
"sourceRoot": "libs/partial-json/src",
5+
"projectType": "library",
6+
"tags": [
7+
"scope:shared",
8+
"type:lib"
9+
],
10+
"targets": {
11+
"build": {
12+
"executor": "@nx/js:tsc",
13+
"outputs": [
14+
"{workspaceRoot}/dist/libs/partial-json"
15+
],
16+
"options": {
17+
"outputPath": "dist/libs/partial-json",
18+
"main": "libs/partial-json/src/index.ts",
19+
"tsConfig": "libs/partial-json/tsconfig.lib.json"
20+
}
21+
},
22+
"lint": {
23+
"executor": "@nx/eslint:lint"
24+
},
25+
"test": {
26+
"executor": "@nx/vitest:test",
27+
"options": {
28+
"configFile": "libs/partial-json/vite.config.mts"
29+
}
30+
},
31+
"nx-release-publish": {
32+
"options": {
33+
"packageRoot": "dist/{projectRoot}"
34+
}
35+
}
36+
}
37+
}

libs/partial-json/src/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// SPDX-License-Identifier: MIT
2+
export type {
3+
JsonNodeType, JsonNodeStatus, JsonNodeBase,
4+
JsonObjectNode, JsonArrayNode, JsonStringNode,
5+
JsonNumberNode, JsonBooleanNode, JsonNullNode,
6+
JsonNode, ParseEvent, PartialJsonParser,
7+
} from './lib/types';
8+
export { createPartialJsonParser } from './lib/parser';
9+
export { materialize } from './lib/materialize';

0 commit comments

Comments
 (0)