opencastle 0.27.3 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/bin/cli.mjs +13 -5
  2. package/dist/cli/convoy/engine.js +2 -2
  3. package/dist/cli/convoy/engine.js.map +1 -1
  4. package/dist/cli/convoy/engine.test.js +1 -1
  5. package/dist/cli/convoy/engine.test.js.map +1 -1
  6. package/dist/cli/convoy/issues.js +3 -3
  7. package/dist/cli/convoy/issues.js.map +1 -1
  8. package/dist/cli/convoy/issues.test.js +4 -3
  9. package/dist/cli/convoy/issues.test.js.map +1 -1
  10. package/dist/cli/pipeline.d.ts +3 -0
  11. package/dist/cli/pipeline.d.ts.map +1 -0
  12. package/dist/cli/pipeline.js +305 -0
  13. package/dist/cli/pipeline.js.map +1 -0
  14. package/dist/cli/plan.d.ts +37 -0
  15. package/dist/cli/plan.d.ts.map +1 -1
  16. package/dist/cli/plan.js +321 -161
  17. package/dist/cli/plan.js.map +1 -1
  18. package/dist/cli/validate.d.ts +3 -0
  19. package/dist/cli/validate.d.ts.map +1 -0
  20. package/dist/cli/validate.js +60 -0
  21. package/dist/cli/validate.js.map +1 -0
  22. package/package.json +5 -4
  23. package/src/cli/convoy/engine.test.ts +1 -1
  24. package/src/cli/convoy/engine.ts +2 -2
  25. package/src/cli/convoy/issues.test.ts +3 -2
  26. package/src/cli/convoy/issues.ts +3 -3
  27. package/src/cli/pipeline.ts +343 -0
  28. package/src/cli/plan.ts +357 -153
  29. package/src/cli/validate.ts +65 -0
  30. package/src/dashboard/dist/data/convoy-list.json +54 -9
  31. package/src/dashboard/dist/data/convoys/demo-api-v2.json +177 -0
  32. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +239 -0
  33. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +328 -0
  34. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +187 -0
  35. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +153 -0
  36. package/src/dashboard/dist/data/convoys/demo-docs-update.json +154 -0
  37. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +227 -0
  38. package/src/dashboard/dist/data/events.ndjson +115 -0
  39. package/src/dashboard/dist/data/overall-stats.json +56 -13
  40. package/src/dashboard/dist/data/pipelines.ndjson +5285 -0
  41. package/src/dashboard/dist/index.html +39 -16
  42. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  43. package/src/dashboard/public/data/convoy-list.json +54 -9
  44. package/src/dashboard/public/data/convoys/demo-api-v2.json +177 -0
  45. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +239 -0
  46. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +328 -0
  47. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +187 -0
  48. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +153 -0
  49. package/src/dashboard/public/data/convoys/demo-docs-update.json +154 -0
  50. package/src/dashboard/public/data/convoys/demo-perf-opt.json +227 -0
  51. package/src/dashboard/public/data/events.ndjson +115 -0
  52. package/src/dashboard/public/data/overall-stats.json +56 -13
  53. package/src/dashboard/public/data/pipelines.ndjson +5285 -0
  54. package/src/dashboard/scripts/etl.ts +24 -3
  55. package/src/dashboard/scripts/generate-demo-db.ts +482 -115
  56. package/src/dashboard/src/pages/index.astro +46 -23
  57. package/src/orchestrator/prompts/fix-convoy.prompt.md +79 -0
  58. package/src/orchestrator/prompts/generate-convoy.prompt.md +53 -58
  59. package/src/orchestrator/prompts/generate-prd.prompt.md +120 -0
  60. package/src/orchestrator/prompts/validate-convoy.prompt.md +89 -0
  61. package/src/orchestrator/prompts/validate-prd.prompt.md +83 -0
@@ -1,4 +1,4 @@
1
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs'
1
+ import { existsSync, mkdirSync, writeFileSync, copyFileSync } from 'node:fs'
2
2
  import { resolve, dirname } from 'node:path'
3
3
  import { fileURLToPath } from 'node:url'
4
4
 
@@ -8,6 +8,7 @@ const __dirname = dirname(__filename)
8
8
  export interface EtlOptions {
9
9
  dbPath: string
10
10
  outputDir: string
11
+ eventsPath?: string
11
12
  }
12
13
 
13
14
  export interface EtlResult {
@@ -89,19 +90,39 @@ export async function runEtl(options: EtlOptions): Promise<EtlResult> {
89
90
  }
90
91
 
91
92
  console.log(`ETL complete: ${allConvoys.length} convoys exported, ${totalTasks} tasks.`)
93
+
94
+ // Copy observability event logs for the live dashboard charts
95
+ const eventsSource = options.eventsPath
96
+ ? resolve(process.cwd(), options.eventsPath)
97
+ : resolve(process.cwd(), '.opencastle', 'logs', 'events.ndjson')
98
+ if (existsSync(eventsSource)) {
99
+ copyFileSync(eventsSource, resolve(outputDir, 'events.ndjson'))
100
+ } else {
101
+ writeFileSync(resolve(outputDir, 'events.ndjson'), '', 'utf8')
102
+ }
103
+
104
+ // Copy pipelines log (optional, write empty if absent)
105
+ const pipelinesSource = resolve(process.cwd(), '.opencastle', 'logs', 'pipelines.ndjson')
106
+ if (existsSync(pipelinesSource)) {
107
+ copyFileSync(pipelinesSource, resolve(outputDir, 'pipelines.ndjson'))
108
+ } else {
109
+ writeFileSync(resolve(outputDir, 'pipelines.ndjson'), '', 'utf8')
110
+ }
111
+
92
112
  return { convoyCount: allConvoys.length, taskCount: totalTasks }
93
113
  } finally {
94
114
  store.close()
95
115
  }
96
116
  }
97
117
 
98
- function parseArgs(): { db?: string; out?: string } {
118
+ function parseArgs(): { db?: string; out?: string; events?: string } {
99
119
  const args = process.argv.slice(2)
100
120
  const result: Record<string, string> = {}
101
121
  for (let i = 0; i < args.length; i++) {
102
122
  const a = args[i]
103
123
  if (a === '--db' && args[i+1]) { result.db = args[++i] }
104
124
  else if (a === '--out' && args[i+1]) { result.out = args[++i] }
125
+ else if (a === '--events' && args[i+1]) { result.events = args[++i] }
105
126
  }
106
127
  return result
107
128
  }
@@ -114,7 +135,7 @@ if (isMain) {
114
135
  const parsed = parseArgs()
115
136
  const dbPath = parsed.db != null ? resolve(process.cwd(), parsed.db) : resolve(process.cwd(), '.opencastle', 'convoy.db')
116
137
  const outputDir = parsed.out != null ? resolve(process.cwd(), parsed.out) : resolve(__dirname, '..', 'public', 'data')
117
- runEtl({ dbPath, outputDir }).catch((err: unknown) => {
138
+ runEtl({ dbPath, outputDir, eventsPath: parsed.events }).catch((err: unknown) => {
118
139
  console.error('ETL failed:', (err as Error).message)
119
140
  process.exit(1)
120
141
  })