@@ -47,76 +47,100 @@ const integrationsRoot = path.join(gitRoot, 'typescript-sdk', 'integrations');
47
47
48
48
// Define all runnable services keyed by a stable id
49
49
const ALL_SERVICES = {
50
- 'server-starter' : {
50
+ 'server-starter' : [ {
51
51
command : 'poetry run dev' ,
52
52
name : 'Server Starter' ,
53
53
cwd : path . join ( integrationsRoot , 'server-starter/server/python' ) ,
54
54
env : { PORT : 8000 } ,
55
- } ,
56
- 'server-starter-all' : {
55
+ } ] ,
56
+ 'server-starter-all' : [ {
57
57
command : 'poetry run dev' ,
58
58
name : 'Server AF' ,
59
59
cwd : path . join ( integrationsRoot , 'server-starter-all-features/server/python' ) ,
60
60
env : { PORT : 8001 } ,
61
- } ,
62
- 'agno' : {
61
+ } ] ,
62
+ 'agno' : [ {
63
63
command : 'uv run dev' ,
64
64
name : 'Agno' ,
65
65
cwd : path . join ( integrationsRoot , 'agno/examples' ) ,
66
66
env : { PORT : 8002 } ,
67
- } ,
68
- 'crew-ai' : {
67
+ } ] ,
68
+ 'crew-ai' : [ {
69
69
command : 'poetry run dev' ,
70
70
name : 'CrewAI' ,
71
71
cwd : path . join ( integrationsRoot , 'crewai/python' ) ,
72
72
env : { PORT : 8003 } ,
73
- } ,
74
- 'langgraph-fastapi' : {
73
+ } ] ,
74
+ 'langgraph-fastapi' : [ {
75
75
command : 'poetry run dev' ,
76
76
name : 'LG FastAPI' ,
77
77
cwd : path . join ( integrationsRoot , 'langgraph/examples/python' ) ,
78
78
env : {
79
79
PORT : 8004 ,
80
80
POETRY_VIRTUALENVS_IN_PROJECT : 'false' ,
81
81
} ,
82
- } ,
83
- 'langgraph-platform-python' : {
82
+ } ] ,
83
+ 'langgraph-platform-python' : [ {
84
84
command : 'pnpx @langchain/langgraph-cli@latest dev --no-browser --host 127.0.0.1 --port 8005' ,
85
85
name : 'LG Platform Py' ,
86
86
cwd : path . join ( integrationsRoot , 'langgraph/examples/python' ) ,
87
87
env : { PORT : 8005 } ,
88
- } ,
89
- 'langgraph-platform-typescript' : {
88
+ } ] ,
89
+ 'langgraph-platform-typescript' : [ {
90
90
command : 'pnpx @langchain/langgraph-cli@latest dev --no-browser --host 127.0.0.1 --port 8006' ,
91
91
name : 'LG Platform TS' ,
92
92
cwd : path . join ( integrationsRoot , 'langgraph/examples/typescript/' ) ,
93
93
env : { PORT : 8006 } ,
94
- } ,
95
- 'llama-index' : {
94
+ } ] ,
95
+ 'llama-index' : [ {
96
96
command : 'uv run dev' ,
97
97
name : 'Llama Index' ,
98
98
cwd : path . join ( integrationsRoot , 'llamaindex/server-py' ) ,
99
99
env : { PORT : 8007 } ,
100
- } ,
101
- 'mastra' : {
100
+ } ] ,
101
+ 'mastra' : [ {
102
102
command : 'npm run dev' ,
103
103
name : 'Mastra' ,
104
104
cwd : path . join ( integrationsRoot , 'mastra/example' ) ,
105
105
env : { PORT : 8008 } ,
106
- } ,
107
- 'pydantic-ai' : {
106
+ } ] ,
107
+ 'pydantic-ai' : [ {
108
108
command : 'uv run dev' ,
109
109
name : 'Pydantic AI' ,
110
110
cwd : path . join ( integrationsRoot , 'pydantic-ai/examples' ) ,
111
111
env : { PORT : 8009 } ,
112
- } ,
113
- 'adk-middleware' : {
112
+ } ] ,
113
+ 'adk-middleware' : [ {
114
114
command : 'uv run dev' ,
115
115
name : 'ADK Middleware' ,
116
116
cwd : path . join ( integrationsRoot , 'adk-middleware/python/examples' ) ,
117
117
env : { PORT : 8010 } ,
118
+ } ] ,
119
+ 'a2a-middleware' : [ {
120
+ command : 'uv run buildings_management.py' ,
121
+ name : 'A2A Middleware: Buildings Management' ,
122
+ cwd : path . join ( integrationsRoot , 'a2a-middleware/examples' ) ,
123
+ env : { PORT : 8011 } ,
118
124
} ,
119
- 'dojo' : {
125
+ {
126
+ command : 'uv run finance.py' ,
127
+ name : 'A2A Middleware: Finance' ,
128
+ cwd : path . join ( integrationsRoot , 'a2a-middleware/examples' ) ,
129
+ env : { PORT : 8012 } ,
130
+ } ,
131
+ {
132
+ command : 'uv run it.py' ,
133
+ name : 'A2A Middleware: IT' ,
134
+ cwd : path . join ( integrationsRoot , 'a2a-middleware/examples' ) ,
135
+ env : { PORT : 8013 } ,
136
+ } ,
137
+ {
138
+ command : 'uv run orchestrator.py' ,
139
+ name : 'A2A Middleware: Orchestrator' ,
140
+ cwd : path . join ( integrationsRoot , 'a2a-middleware/examples' ) ,
141
+ env : { PORT : 8014 } ,
142
+ } ] ,
143
+ 'dojo' : [ {
120
144
command : 'pnpm run start' ,
121
145
name : 'Dojo' ,
122
146
cwd : path . join ( gitRoot , 'typescript-sdk/apps/dojo' ) ,
@@ -133,9 +157,13 @@ const ALL_SERVICES = {
133
157
MASTRA_URL : 'http://localhost:8008' ,
134
158
PYDANTIC_AI_URL : 'http://localhost:8009' ,
135
159
ADK_MIDDLEWARE_URL : 'http://localhost:8010' ,
160
+ A2A_MIDDLEWARE_BUILDINGS_MANAGEMENT_URL : 'http://localhost:8011' ,
161
+ A2A_MIDDLEWARE_FINANCE_URL : 'http://localhost:8012' ,
162
+ A2A_MIDDLEWARE_IT_URL : 'http://localhost:8013' ,
163
+ A2A_MIDDLEWARE_ORCHESTRATOR_URL : 'http://localhost:8014' ,
136
164
NEXT_PUBLIC_CUSTOM_DOMAIN_TITLE : 'cpkdojo.local___CopilotKit Feature Viewer' ,
137
165
} ,
138
- } ,
166
+ } ] ,
139
167
} ;
140
168
141
169
function printDryRunServices ( procs ) {
@@ -169,12 +197,12 @@ async function main() {
169
197
// Build processes, warn for unknown keys
170
198
const procs = [ ] ;
171
199
for ( const key of selectedKeys ) {
172
- const svc = ALL_SERVICES [ key ] ;
173
- if ( ! svc ) {
200
+ const svcs = ALL_SERVICES [ key ] ;
201
+ if ( ! svcs || svcs . length === 0 ) {
174
202
console . warn ( `Skipping unknown service: ${ key } ` ) ;
175
203
continue ;
176
204
}
177
- procs . push ( svc ) ;
205
+ procs . push ( ... svcs ) ;
178
206
}
179
207
180
208
if ( dryRun ) {
0 commit comments