@@ -14,7 +14,7 @@ export const DbtManifestTool = Tool.define("dbt_manifest", {
1414 const result = await Dispatcher . call ( "dbt.manifest" , { path : args . path } )
1515
1616 return {
17- title : `Manifest: ${ result . model_count } models, ${ result . source_count } sources` ,
17+ title : `Manifest: ${ result . model_count ?? 0 } models, ${ result . source_count ?? 0 } sources` ,
1818 metadata : {
1919 model_count : result . model_count ,
2020 source_count : result . source_count ,
@@ -28,7 +28,7 @@ export const DbtManifestTool = Tool.define("dbt_manifest", {
2828 const msg = e instanceof Error ? e . message : String ( e )
2929 return {
3030 title : "Manifest: ERROR" ,
31- metadata : { model_count : 0 , source_count : 0 , test_count : 0 , snapshot_count : 0 , seed_count : 0 } ,
31+ metadata : { model_count : 0 , source_count : 0 , test_count : 0 , snapshot_count : 0 , seed_count : 0 , error : msg } ,
3232 output : `Failed to parse manifest: ${ msg } \n\nEnsure the manifest.json exists and the dispatcher is running.` ,
3333 }
3434 }
@@ -39,31 +39,36 @@ function formatManifest(result: DbtManifestResult): string {
3939 const lines : string [ ] = [ ]
4040
4141 lines . push ( "=== Project Summary ===" )
42- lines . push ( `Models: ${ result . model_count } ` )
43- lines . push ( `Sources: ${ result . source_count } ` )
44- lines . push ( `Tests: ${ result . test_count } ` )
45- lines . push ( `Snapshots: ${ result . snapshot_count } ` )
46- lines . push ( `Seeds: ${ result . seed_count } ` )
42+ lines . push ( `Models: ${ result . model_count ?? 0 } ` )
43+ lines . push ( `Sources: ${ result . source_count ?? 0 } ` )
44+ lines . push ( `Tests: ${ result . test_count ?? 0 } ` )
45+ lines . push ( `Snapshots: ${ result . snapshot_count ?? 0 } ` )
46+ lines . push ( `Seeds: ${ result . seed_count ?? 0 } ` )
4747
48- if ( result . models . length > 0 ) {
48+ const models = result . models ?? [ ]
49+ const sources = result . sources ?? [ ]
50+
51+ if ( models . length > 0 ) {
4952 lines . push ( "" )
5053 lines . push ( "=== Models ===" )
5154 lines . push ( "Name | Schema | Materialized | Dependencies | Columns" )
5255 lines . push ( "-----|--------|-------------|-------------|--------" )
53- for ( const model of result . models ) {
54- const deps = model . depends_on . length > 0 ? model . depends_on . map ( ( d ) => d . split ( "." ) . pop ( ) ) . join ( ", " ) : "-"
55- const cols = model . columns . length > 0 ? model . columns . map ( ( c ) => c . name ) . join ( ", " ) : "-"
56+ for ( const model of models ) {
57+ const depsArr = model . depends_on ?? [ ]
58+ const colsArr = model . columns ?? [ ]
59+ const deps = depsArr . length > 0 ? depsArr . map ( ( d ) => d . split ( "." ) . pop ( ) ) . join ( ", " ) : "-"
60+ const cols = colsArr . length > 0 ? colsArr . map ( ( c ) => c . name ) . join ( ", " ) : "-"
5661 lines . push ( `${ model . name } | ${ model . schema_name ?? "-" } | ${ model . materialized ?? "-" } | ${ deps } | ${ cols } ` )
5762 }
5863 }
5964
60- if ( result . sources . length > 0 ) {
65+ if ( sources . length > 0 ) {
6166 lines . push ( "" )
6267 lines . push ( "=== Sources ===" )
6368 lines . push ( "Source | Table | Schema | Columns" )
6469 lines . push ( "-------|-------|--------|--------" )
65- for ( const source of result . sources ) {
66- const cols = source . columns . length > 0 ? source . columns . map ( ( c ) => c . name ) . join ( ", " ) : "-"
70+ for ( const source of sources ) {
71+ const cols = ( source . columns ?? [ ] ) . length > 0 ? ( source . columns ?? [ ] ) . map ( ( c ) => c . name ) . join ( ", " ) : "-"
6772 lines . push ( `${ source . source_name } | ${ source . name } | ${ source . schema_name ?? "-" } | ${ cols } ` )
6873 }
6974 }
0 commit comments