@treeseed/sdk 0.8.3 → 0.8.5

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 (47) hide show
  1. package/dist/capacity.d.ts +33 -0
  2. package/dist/fixture-support.d.ts +1 -1
  3. package/dist/fixture-support.js +5 -5
  4. package/dist/managed-dependencies.js +132 -10
  5. package/dist/operations/services/bootstrap-runner.js +7 -1
  6. package/dist/operations/services/config-runtime.js +13 -4
  7. package/dist/operations/services/github-actions-verification.d.ts +3 -0
  8. package/dist/operations/services/github-actions-verification.js +3 -0
  9. package/dist/operations/services/github-api.d.ts +4 -1
  10. package/dist/operations/services/github-api.js +26 -8
  11. package/dist/operations/services/github-automation.d.ts +14 -5
  12. package/dist/operations/services/github-automation.js +45 -11
  13. package/dist/operations/services/hub-provider-launch.js +9 -8
  14. package/dist/operations/services/project-platform.d.ts +93 -210
  15. package/dist/operations/services/project-platform.js +74 -34
  16. package/dist/operations/services/railway-deploy.d.ts +25 -2
  17. package/dist/operations/services/railway-deploy.js +312 -20
  18. package/dist/operations/services/repository-save-orchestrator.d.ts +8 -0
  19. package/dist/operations/services/repository-save-orchestrator.js +40 -3
  20. package/dist/operations/services/runtime-paths.d.ts +1 -0
  21. package/dist/operations/services/runtime-paths.js +3 -1
  22. package/dist/operations/services/runtime-tools.d.ts +1 -0
  23. package/dist/operations/services/runtime-tools.js +2 -0
  24. package/dist/operations/services/template-registry.js +3 -0
  25. package/dist/platform/contracts.d.ts +9 -0
  26. package/dist/platform/deploy-config.js +28 -0
  27. package/dist/platform/env.yaml +1 -745
  28. package/dist/platform/environment.js +69 -9
  29. package/dist/reconcile/builtin-adapters.js +7 -2
  30. package/dist/scripts/install-managed-dependencies.js +12 -0
  31. package/dist/scripts/tenant-workflow-action.js +11 -9
  32. package/dist/scripts/test-scaffold.js +3 -1
  33. package/dist/scripts/workflow-commands.test.js +10 -6
  34. package/dist/scripts/workspace-command-e2e.js +1 -1
  35. package/dist/treeseed/template-catalog/templates/starter-basic/template/package.json +1 -0
  36. package/dist/treeseed/template-catalog/templates/starter-basic/template/src/api/server.js +1 -1
  37. package/dist/treeseed/template-catalog/templates/starter-basic/template/treeseed.site.yaml +7 -6
  38. package/dist/treeseed/template-catalog/templates/starter-basic/template.config.json +6 -0
  39. package/dist/workflow/operations.d.ts +41 -8
  40. package/dist/workflow/operations.js +119 -24
  41. package/dist/workflow/runs.js +31 -0
  42. package/package.json +1 -1
  43. package/templates/github/deploy-processing.workflow.yml +120 -0
  44. package/templates/github/deploy-web.workflow.yml +116 -0
  45. package/templates/github/hosted-project.workflow.yml +4 -4
  46. package/templates/github/deploy.managed.workflow.yml +0 -208
  47. package/templates/github/deploy.workflow.yml +0 -746
@@ -227,8 +227,8 @@ This hub is live and ready for the first team release cycle.
227
227
  };
228
228
  }
229
229
  function ensureHostedProjectFiles(projectRoot) {
230
- const coreApiPackage = ["@treeseed", "core/api"].join("/");
231
- writeText(resolve(projectRoot, "src/api/server.js"), `import { createRailwayTreeseedApiServer } from '${coreApiPackage}';
230
+ const agentApiPackage = ["@treeseed", "agent/api"].join("/");
231
+ writeText(resolve(projectRoot, "src/api/server.js"), `import { createRailwayTreeseedApiServer } from '${agentApiPackage}';
232
232
 
233
233
  const server = await createRailwayTreeseedApiServer();
234
234
  console.log(\`Treeseed project API listening on \${server.url}\`);
@@ -315,8 +315,9 @@ function applyManagedProjectDefaults(projectRoot, input) {
315
315
  publicBaseUrl: projectApiBaseUrl,
316
316
  railway: {
317
317
  serviceName: `${slug}-api`,
318
- buildCommand: "npm run build",
319
- startCommand: "node ./src/api/server.js"
318
+ buildCommand: "npm run build:api",
319
+ startCommand: "npm run build:api && node ./src/api/server.js",
320
+ healthcheckTimeoutSeconds: 120
320
321
  },
321
322
  environments: {
322
323
  local: {
@@ -330,8 +331,8 @@ function applyManagedProjectDefaults(projectRoot, input) {
330
331
  railway: {
331
332
  serviceName: `${slug}-workday-manager`,
332
333
  rootDir: ".",
333
- buildCommand: "npm run build",
334
- startCommand: "node ./node_modules/@treeseed/core/dist/services/workday-manager.js",
334
+ buildCommand: "npm run build:api",
335
+ startCommand: "npm run build:api && node ./packages/agent/dist/services/workday-manager.js",
335
336
  schedule: "0 9 * * 1-5"
336
337
  }
337
338
  },
@@ -340,8 +341,8 @@ function applyManagedProjectDefaults(projectRoot, input) {
340
341
  provider: managedRuntime ? "railway" : "none",
341
342
  railway: {
342
343
  rootDir: ".",
343
- buildCommand: "npm run build",
344
- startCommand: "node ./node_modules/@treeseed/core/dist/services/worker.js"
344
+ buildCommand: "npm run build:api",
345
+ startCommand: "npm run build:api && node ./packages/agent/dist/services/worker.js"
345
346
  }
346
347
  },
347
348
  ...config.services ?? {}
@@ -2,7 +2,7 @@ import { type ControlPlaneReporter } from '../../control-plane.ts';
2
2
  import type { TreeseedRunnableBootstrapSystem } from '../../reconcile/index.ts';
3
3
  import { type TreeseedBootstrapExecution, type TreeseedBootstrapWriter } from './bootstrap-runner.ts';
4
4
  export type ProjectPlatformScope = 'local' | 'staging' | 'prod';
5
- export type ProjectPlatformAction = 'provision' | 'deploy_code' | 'publish_content' | 'monitor';
5
+ export type ProjectPlatformAction = 'deploy_web' | 'deploy_processing' | 'publish_content' | 'monitor';
6
6
  export interface ProjectPlatformActionOptions {
7
7
  tenantRoot: string;
8
8
  scope: ProjectPlatformScope;
@@ -137,35 +137,19 @@ export declare function deployProjectPlatform(options: ProjectPlatformActionOpti
137
137
  skipped: boolean;
138
138
  reason: string;
139
139
  };
140
- railwayResources: {
141
- ok: boolean;
142
- checks: any[];
143
- } | {
144
- ok: boolean;
145
- skipped: boolean;
146
- reason: string;
147
- };
148
140
  pages: {
149
141
  ok: boolean;
150
- status: number;
151
- url: string;
152
- error?: undefined;
153
- } | {
154
- ok: boolean;
155
- status: null;
142
+ status: number | null;
156
143
  url: string;
157
- error: string;
144
+ error?: string;
145
+ attempts?: number;
158
146
  };
159
147
  apiHealth: {
160
148
  ok: boolean;
161
- status: number;
149
+ status: number | null;
162
150
  url: string;
163
- error?: undefined;
164
- } | {
165
- ok: boolean;
166
- status: null;
167
- url: string;
168
- error: string;
151
+ error?: string;
152
+ attempts?: number;
169
153
  } | {
170
154
  ok: boolean;
171
155
  skipped: boolean;
@@ -173,14 +157,10 @@ export declare function deployProjectPlatform(options: ProjectPlatformActionOpti
173
157
  };
174
158
  apiReady: {
175
159
  ok: boolean;
176
- status: number;
177
- url: string;
178
- error?: undefined;
179
- } | {
180
- ok: boolean;
181
- status: null;
160
+ status: number | null;
182
161
  url: string;
183
- error: string;
162
+ error?: string;
163
+ attempts?: number;
184
164
  } | {
185
165
  ok: boolean;
186
166
  skipped: boolean;
@@ -188,14 +168,10 @@ export declare function deployProjectPlatform(options: ProjectPlatformActionOpti
188
168
  };
189
169
  d1Health: {
190
170
  ok: boolean;
191
- status: number;
171
+ status: number | null;
192
172
  url: string;
193
- error?: undefined;
194
- } | {
195
- ok: boolean;
196
- status: null;
197
- url: string;
198
- error: string;
173
+ error?: string;
174
+ attempts?: number;
199
175
  } | {
200
176
  ok: boolean;
201
177
  skipped: boolean;
@@ -203,14 +179,10 @@ export declare function deployProjectPlatform(options: ProjectPlatformActionOpti
203
179
  };
204
180
  agentHealth: {
205
181
  ok: boolean;
206
- status: number;
182
+ status: number | null;
207
183
  url: string;
208
- error?: undefined;
209
- } | {
210
- ok: boolean;
211
- status: null;
212
- url: string;
213
- error: string;
184
+ error?: string;
185
+ attempts?: number;
214
186
  } | {
215
187
  ok: boolean;
216
188
  skipped: boolean;
@@ -231,6 +203,14 @@ export declare function deployProjectPlatform(options: ProjectPlatformActionOpti
231
203
  skipped?: undefined;
232
204
  reason?: undefined;
233
205
  };
206
+ railwayResources: {
207
+ ok: boolean;
208
+ checks: any[];
209
+ } | {
210
+ ok: boolean;
211
+ skipped: boolean;
212
+ reason: string;
213
+ };
234
214
  readiness: any;
235
215
  };
236
216
  };
@@ -323,35 +303,19 @@ export declare function monitorProjectPlatform(options: ProjectPlatformActionOpt
323
303
  skipped: boolean;
324
304
  reason: string;
325
305
  };
326
- railwayResources: {
327
- ok: boolean;
328
- checks: any[];
329
- } | {
330
- ok: boolean;
331
- skipped: boolean;
332
- reason: string;
333
- };
334
306
  pages: {
335
307
  ok: boolean;
336
- status: number;
308
+ status: number | null;
337
309
  url: string;
338
- error?: undefined;
339
- } | {
340
- ok: boolean;
341
- status: null;
342
- url: string;
343
- error: string;
310
+ error?: string;
311
+ attempts?: number;
344
312
  };
345
313
  apiHealth: {
346
314
  ok: boolean;
347
- status: number;
315
+ status: number | null;
348
316
  url: string;
349
- error?: undefined;
350
- } | {
351
- ok: boolean;
352
- status: null;
353
- url: string;
354
- error: string;
317
+ error?: string;
318
+ attempts?: number;
355
319
  } | {
356
320
  ok: boolean;
357
321
  skipped: boolean;
@@ -359,14 +323,10 @@ export declare function monitorProjectPlatform(options: ProjectPlatformActionOpt
359
323
  };
360
324
  apiReady: {
361
325
  ok: boolean;
362
- status: number;
363
- url: string;
364
- error?: undefined;
365
- } | {
366
- ok: boolean;
367
- status: null;
326
+ status: number | null;
368
327
  url: string;
369
- error: string;
328
+ error?: string;
329
+ attempts?: number;
370
330
  } | {
371
331
  ok: boolean;
372
332
  skipped: boolean;
@@ -374,14 +334,10 @@ export declare function monitorProjectPlatform(options: ProjectPlatformActionOpt
374
334
  };
375
335
  d1Health: {
376
336
  ok: boolean;
377
- status: number;
378
- url: string;
379
- error?: undefined;
380
- } | {
381
- ok: boolean;
382
- status: null;
337
+ status: number | null;
383
338
  url: string;
384
- error: string;
339
+ error?: string;
340
+ attempts?: number;
385
341
  } | {
386
342
  ok: boolean;
387
343
  skipped: boolean;
@@ -389,14 +345,10 @@ export declare function monitorProjectPlatform(options: ProjectPlatformActionOpt
389
345
  };
390
346
  agentHealth: {
391
347
  ok: boolean;
392
- status: number;
348
+ status: number | null;
393
349
  url: string;
394
- error?: undefined;
395
- } | {
396
- ok: boolean;
397
- status: null;
398
- url: string;
399
- error: string;
350
+ error?: string;
351
+ attempts?: number;
400
352
  } | {
401
353
  ok: boolean;
402
354
  skipped: boolean;
@@ -417,6 +369,14 @@ export declare function monitorProjectPlatform(options: ProjectPlatformActionOpt
417
369
  skipped?: undefined;
418
370
  reason?: undefined;
419
371
  };
372
+ railwayResources: {
373
+ ok: boolean;
374
+ checks: any[];
375
+ } | {
376
+ ok: boolean;
377
+ skipped: boolean;
378
+ reason: string;
379
+ };
420
380
  readiness: any;
421
381
  };
422
382
  }>;
@@ -429,43 +389,6 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
429
389
  previewId: string | null;
430
390
  previewUrl: string | null;
431
391
  target: any;
432
- } | {
433
- ok: boolean;
434
- scope: ProjectPlatformScope;
435
- target: any;
436
- summary: {
437
- target: import("../../reconcile/contracts.ts").TreeseedReconcileTarget;
438
- units: import("../../reconcile/contracts.ts").TreeseedDesiredUnit[];
439
- plans: import("../../reconcile/contracts.ts").TreeseedReconcilePlan[];
440
- results: import("../../reconcile/contracts.ts").TreeseedReconcileResult[];
441
- state: import("../../reconcile/contracts.ts").TreeseedReconcileStateRecord;
442
- };
443
- verification: {
444
- target: import("../../reconcile/contracts.ts").TreeseedReconcileTarget;
445
- ready: boolean;
446
- blockers: string[];
447
- warnings: string[];
448
- units: {
449
- unitId: string;
450
- unitType: import("../../reconcile/contracts.ts").TreeseedReconcileUnitType;
451
- provider: string;
452
- status: import("../../reconcile/contracts.ts").TreeseedReconcileStatusKind;
453
- exists: boolean;
454
- locators: Record<string, string | null>;
455
- warnings: string[];
456
- verification: import("../../reconcile/contracts.ts").TreeseedUnitVerificationResult | null;
457
- }[];
458
- };
459
- railway: {
460
- services: string[];
461
- schedules: any[];
462
- verification: {
463
- ok: boolean;
464
- checks: never[];
465
- skipped: boolean;
466
- reason: string;
467
- };
468
- };
469
392
  } | {
470
393
  ok: true;
471
394
  target: any;
@@ -514,35 +437,19 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
514
437
  skipped: boolean;
515
438
  reason: string;
516
439
  };
517
- railwayResources: {
518
- ok: boolean;
519
- checks: any[];
520
- } | {
521
- ok: boolean;
522
- skipped: boolean;
523
- reason: string;
524
- };
525
440
  pages: {
526
441
  ok: boolean;
527
- status: number;
442
+ status: number | null;
528
443
  url: string;
529
- error?: undefined;
530
- } | {
531
- ok: boolean;
532
- status: null;
533
- url: string;
534
- error: string;
444
+ error?: string;
445
+ attempts?: number;
535
446
  };
536
447
  apiHealth: {
537
448
  ok: boolean;
538
- status: number;
539
- url: string;
540
- error?: undefined;
541
- } | {
542
- ok: boolean;
543
- status: null;
449
+ status: number | null;
544
450
  url: string;
545
- error: string;
451
+ error?: string;
452
+ attempts?: number;
546
453
  } | {
547
454
  ok: boolean;
548
455
  skipped: boolean;
@@ -550,14 +457,10 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
550
457
  };
551
458
  apiReady: {
552
459
  ok: boolean;
553
- status: number;
554
- url: string;
555
- error?: undefined;
556
- } | {
557
- ok: boolean;
558
- status: null;
460
+ status: number | null;
559
461
  url: string;
560
- error: string;
462
+ error?: string;
463
+ attempts?: number;
561
464
  } | {
562
465
  ok: boolean;
563
466
  skipped: boolean;
@@ -565,14 +468,10 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
565
468
  };
566
469
  d1Health: {
567
470
  ok: boolean;
568
- status: number;
471
+ status: number | null;
569
472
  url: string;
570
- error?: undefined;
571
- } | {
572
- ok: boolean;
573
- status: null;
574
- url: string;
575
- error: string;
473
+ error?: string;
474
+ attempts?: number;
576
475
  } | {
577
476
  ok: boolean;
578
477
  skipped: boolean;
@@ -580,14 +479,10 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
580
479
  };
581
480
  agentHealth: {
582
481
  ok: boolean;
583
- status: number;
584
- url: string;
585
- error?: undefined;
586
- } | {
587
- ok: boolean;
588
- status: null;
482
+ status: number | null;
589
483
  url: string;
590
- error: string;
484
+ error?: string;
485
+ attempts?: number;
591
486
  } | {
592
487
  ok: boolean;
593
488
  skipped: boolean;
@@ -608,6 +503,14 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
608
503
  skipped?: undefined;
609
504
  reason?: undefined;
610
505
  };
506
+ railwayResources: {
507
+ ok: boolean;
508
+ checks: any[];
509
+ } | {
510
+ ok: boolean;
511
+ skipped: boolean;
512
+ reason: string;
513
+ };
611
514
  readiness: any;
612
515
  };
613
516
  } | {
@@ -661,35 +564,19 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
661
564
  skipped: boolean;
662
565
  reason: string;
663
566
  };
664
- railwayResources: {
665
- ok: boolean;
666
- checks: any[];
667
- } | {
668
- ok: boolean;
669
- skipped: boolean;
670
- reason: string;
671
- };
672
567
  pages: {
673
568
  ok: boolean;
674
- status: number;
675
- url: string;
676
- error?: undefined;
677
- } | {
678
- ok: boolean;
679
- status: null;
569
+ status: number | null;
680
570
  url: string;
681
- error: string;
571
+ error?: string;
572
+ attempts?: number;
682
573
  };
683
574
  apiHealth: {
684
575
  ok: boolean;
685
- status: number;
576
+ status: number | null;
686
577
  url: string;
687
- error?: undefined;
688
- } | {
689
- ok: boolean;
690
- status: null;
691
- url: string;
692
- error: string;
578
+ error?: string;
579
+ attempts?: number;
693
580
  } | {
694
581
  ok: boolean;
695
582
  skipped: boolean;
@@ -697,14 +584,10 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
697
584
  };
698
585
  apiReady: {
699
586
  ok: boolean;
700
- status: number;
701
- url: string;
702
- error?: undefined;
703
- } | {
704
- ok: boolean;
705
- status: null;
587
+ status: number | null;
706
588
  url: string;
707
- error: string;
589
+ error?: string;
590
+ attempts?: number;
708
591
  } | {
709
592
  ok: boolean;
710
593
  skipped: boolean;
@@ -712,14 +595,10 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
712
595
  };
713
596
  d1Health: {
714
597
  ok: boolean;
715
- status: number;
598
+ status: number | null;
716
599
  url: string;
717
- error?: undefined;
718
- } | {
719
- ok: boolean;
720
- status: null;
721
- url: string;
722
- error: string;
600
+ error?: string;
601
+ attempts?: number;
723
602
  } | {
724
603
  ok: boolean;
725
604
  skipped: boolean;
@@ -727,14 +606,10 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
727
606
  };
728
607
  agentHealth: {
729
608
  ok: boolean;
730
- status: number;
731
- url: string;
732
- error?: undefined;
733
- } | {
734
- ok: boolean;
735
- status: null;
609
+ status: number | null;
736
610
  url: string;
737
- error: string;
611
+ error?: string;
612
+ attempts?: number;
738
613
  } | {
739
614
  ok: boolean;
740
615
  skipped: boolean;
@@ -755,6 +630,14 @@ export declare function runProjectPlatformAction(action: ProjectPlatformAction,
755
630
  skipped?: undefined;
756
631
  reason?: undefined;
757
632
  };
633
+ railwayResources: {
634
+ ok: boolean;
635
+ checks: any[];
636
+ } | {
637
+ ok: boolean;
638
+ skipped: boolean;
639
+ reason: string;
640
+ };
758
641
  readiness: any;
759
642
  };
760
643
  };