-
-
+
+
+
+
+
Package dependencies
+
+
+
+
+
+
+
+
+
+
+
- reference 7
+ reference 7
-
+
0.1
Airport/City Code Resolver
-
+
0.2
Airline Code & Alliance Mapper
-
+
0.3
Fare Basis Code Decoder
-
+
0.4
Class of Service Mapper
-
+
0.5
Equipment Type Resolver
-
+
0.6
Currency & Tax Code Resolver
-
+
0.7
Country Regulatory Resolver
- search 8
+ search 8
-
+
1.1
Availability Search
-
+
1.2
Schedule Lookup
-
+
1.3
Connection Builder
-
+
1.4
Fare Shopping
-
+
1.5
Ancillary Shopping
-
+
1.6
Multi-Source Aggregator
-
+
1.7
Hotel & Car Search
-
+
1.8
AI Travel Advisor
- pricing 7
+ pricing 7
-
+
2.1
Fare Rule Agent
-
+
2.2
Fare Construction
-
+
2.3
Tax Calculation
-
+
2.4
Offer Builder
-
+
2.5
Corporate Policy Validation
-
+
2.6
Dynamic Pricing
-
+
2.7
Revenue Management
- booking 8
+ booking 8
-
+
3.1
GDS/NDC Router
-
+
3.2
PNR Builder
-
+
3.3
PNR Validation
-
+
3.4
Queue Management
-
+
3.5
API Abstraction
-
+
3.6
Order Management
-
+
3.7
Payment Processing
-
+
3.8
PNR Retrieval
- ticketing 5
+ ticketing 5
-
+
4.1
Ticket Issuance
-
+
4.2
EMD Management
-
+
4.3
Void Agent
-
+
4.4
Itinerary Delivery
-
+
4.5
Document Verification
- exchange 6
+ exchange 6
-
+
5.1
Change Management
-
+
5.2
Exchange/Reissue
-
+
5.3
Involuntary Rebook
-
+
5.4
Disruption Response
-
+
5.5
Self-Service Rebooking
-
+
5.6
Waitlist Management
- settlement 6
+ settlement 6
-
+
6.1
Refund Processing
-
+
6.2
ADM Prevention
-
+
6.3
ADM/ACM Processing
-
+
6.4
Customer Communication
-
+
6.5
Feedback & Complaint
-
+
6.6
Loyalty Mileage
- reconciliation 6
+ reconciliation 6
-
+
7.1
BSP Reconciliation
-
+
7.2
ARC Reconciliation
-
+
7.3
Commission Management
-
+
7.4
Interline Settlement
-
+
7.5
Financial Reporting
-
+
7.6
Revenue Accounting
- tmc 5
+ tmc 5
-
+
8.1
Traveler Profile
-
+
8.2
Corporate Account
-
+
8.3
Mid-Office Automation
-
+
8.4
Reporting & Analytics
-
+
8.5
Duty of Care
- platform 9
+ platform 9
-
+
9.1
Orchestrator
-
+
9.2
Knowledge Retrieval
-
+
9.3
Monitoring & Alerting
-
+
9.4
Audit & Compliance
-
+
9.5
Plugin Manager
-
+
9.6
Performance Audit
-
+
9.7
Routing Audit
-
+
9.8
Recommendation
-
+
9.9
Alert
- core 1
+ core 1
-
+
1.9
Offer Evaluator
- lodging 9
+ lodging 9
-
+
20.1
Hotel Search Aggregator
-
+
20.2
Property Deduplication
-
+
20.3
Hotel Content Normalization
-
+
20.4
Hotel Rate Comparison
-
+
20.5
Hotel Booking
-
+
20.6
Hotel Modification & Cancellation
-
+
20.7
Confirmation Verification
-
+
20.8
Activity Search
-
+
20.9
Transfer Search
+
+
-
+
+
+ Telivity — AI travel infrastructure · Otaip open core ·
+ 77 agents · 27 edges · generated from agents.graph.json · pnpm gen:agent-map
+
-
- Generated by pnpm gen:manifest from agents.graph.json
- (77 agents, 27 edges). Do not hand-edit.
-
+
diff --git a/examples/platform-ui/src/components/AgentMap.tsx b/examples/platform-ui/src/components/AgentMap.tsx
index 45b54a9..95311c1 100644
--- a/examples/platform-ui/src/components/AgentMap.tsx
+++ b/examples/platform-ui/src/components/AgentMap.tsx
@@ -233,10 +233,10 @@ export default function AgentMap({ graph }: AgentMapProps) {
key={i}
d={p.d}
fill="none"
- stroke={p.kind === 'workflow' ? '#c2410c' : '#a8a29e'}
+ stroke={p.kind === 'workflow' ? '#06b6d4' : '#64748b'}
strokeWidth={p.hl ? 2.25 : p.kind === 'workflow' ? 1.5 : 1}
strokeDasharray={p.kind === 'package' ? '4 3' : undefined}
- opacity={p.hl ? 1 : p.kind === 'workflow' ? 0.5 : 0.3}
+ opacity={p.hl ? 1 : p.kind === 'workflow' ? 0.55 : 0.35}
/>
))}
@@ -262,8 +262,8 @@ export default function AgentMap({ graph }: AgentMapProps) {
onClick={() => setSelected(a.id)}
className={[
'rounded-md border bg-white px-2 py-1.5 text-left transition',
- a.contract_status === 'active' ? 'border-l-[3px] border-l-teal-700' : 'border-l-[3px] border-l-stone-400',
- isSelected || onPath ? 'border-teal-600 shadow-[0_0_0_1px_#0d9488]' : 'border-slate-200',
+ a.contract_status === 'active' ? 'border-l-[3px] border-l-cyan-500' : 'border-l-[3px] border-l-slate-400',
+ isSelected || onPath ? 'border-cyan-400 shadow-[0_0_0_1px_#22d3ee]' : 'border-slate-200',
dim ? 'opacity-30' : '',
].join(' ')}
>
diff --git a/scripts/generate-agent-map-html.ts b/scripts/generate-agent-map-html.ts
index d1a6105..0cfbef9 100644
--- a/scripts/generate-agent-map-html.ts
+++ b/scripts/generate-agent-map-html.ts
@@ -2,11 +2,9 @@
/**
* Render `docs/agent-map.html` from an AgentGraph.
*
- * Callable standalone (`pnpm gen:agent-map`) or from `generate-manifest.ts`
- * so CI `--check` keeps the HTML in sync with the graph.
- *
- * Self-contained: no external JS/CSS. Stage columns + SVG workflow arcs.
- * Not a domain knowledge graph — agent navigation only.
+ * Telivity-branded mission-control board: dark slate + cyan, Space Grotesk /
+ * IBM Plex, workflow edges above cards with side anchors so connections are
+ * actually readable. Generated by `pnpm gen:manifest` / `pnpm gen:agent-map`.
*/
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
@@ -17,7 +15,6 @@ import type { AgentGraph, AgentGraphNode } from './agent-graph.js';
const GRAPH_PATH = 'agents.graph.json';
const MAP_HTML_PATH = 'docs/agent-map.html';
-/** Display order for stage columns. Unknown stages append alphabetically. */
const STAGE_ORDER = [
'reference',
'search',
@@ -76,26 +73,26 @@ function groupByStage(nodes: readonly AgentGraphNode[]): Array<[string, AgentGra
return [...map.entries()].sort(([a], [b]) => stageSortKey(a) - stageSortKey(b) || a.localeCompare(b));
}
-/**
- * Build a standalone HTML page that embeds the graph JSON and renders
- * stage columns with interactive selection.
- */
export function renderAgentMapHtml(graph: AgentGraph): string {
const stages = groupByStage(graph.nodes);
+ const workflows = [
+ ...new Set(graph.edges.filter((e) => e.kind === 'workflow').map((e) => e.label)),
+ ].sort();
+
const columnsHtml = stages
- .map(([stage, agents]) => {
+ .map(([stage, agents], colIdx) => {
const cards = agents
- .map((a) => {
+ .map((a, cardIdx) => {
const status = a.contract_status === 'active' ? 'active' : 'stub';
- const contract = a.has_contract ? 'contracted' : 'no-contract';
- return `
+ const delay = colIdx * 45 + cardIdx * 18;
+ return `
${escapeHtml(a.id)}
${escapeHtml(a.name)}
`;
})
.join('\n');
return `
- ${escapeHtml(stage)} ${agents.length}
+ ${escapeHtml(stage)} ${agents.length}
${cards}
@@ -103,6 +100,14 @@ ${cards}
})
.join('\n');
+ const workflowPills = [
+ `All `,
+ ...workflows.map(
+ (w) =>
+ `${escapeHtml(w)} `,
+ ),
+ ].join('\n ');
+
const payload = JSON.stringify(graph);
return `
@@ -110,242 +115,582 @@ ${cards}
- OTAIP Agent Map
+ Otaip Agent Map · Telivity
+
+
+
+
-
-