@hyperdrive.bot/cli 1.0.13 → 1.0.17

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 (157) hide show
  1. package/README.md +4526 -780
  2. package/dist/commands/deploy.d.ts +18 -0
  3. package/dist/commands/deploy.js +239 -0
  4. package/dist/commands/deployment/create.js +10 -2
  5. package/dist/commands/domain/{switch.d.ts → set-production.d.ts} +1 -1
  6. package/dist/commands/domain/set-production.js +27 -0
  7. package/dist/commands/git/list-open-prs.d.ts +12 -0
  8. package/dist/commands/git/list-open-prs.js +87 -0
  9. package/dist/commands/hook/add.d.ts +22 -0
  10. package/dist/commands/hook/add.js +299 -0
  11. package/dist/commands/hook/list.d.ts +11 -0
  12. package/dist/commands/hook/list.js +111 -0
  13. package/dist/commands/hook/logs.d.ts +13 -0
  14. package/dist/commands/hook/logs.js +124 -0
  15. package/dist/commands/hook/remove.d.ts +12 -0
  16. package/dist/commands/hook/remove.js +115 -0
  17. package/dist/commands/hook/toggle.d.ts +12 -0
  18. package/dist/commands/hook/toggle.js +125 -0
  19. package/dist/commands/init.d.ts +1 -1
  20. package/dist/commands/init.js +49 -9
  21. package/dist/commands/module/bindings.d.ts +14 -0
  22. package/dist/commands/module/bindings.js +125 -0
  23. package/dist/commands/module/create.d.ts +3 -0
  24. package/dist/commands/module/create.js +156 -78
  25. package/dist/commands/module/list.d.ts +1 -0
  26. package/dist/commands/module/list.js +22 -1
  27. package/dist/commands/module/sync.d.ts +29 -0
  28. package/dist/commands/module/sync.js +409 -0
  29. package/dist/commands/module/unlink.d.ts +11 -0
  30. package/dist/commands/module/unlink.js +77 -0
  31. package/dist/commands/module/update.d.ts +10 -0
  32. package/dist/commands/module/update.js +168 -5
  33. package/dist/commands/network/discover.d.ts +12 -0
  34. package/dist/commands/network/discover.js +210 -0
  35. package/dist/commands/network/get.d.ts +13 -0
  36. package/dist/commands/network/get.js +90 -0
  37. package/dist/commands/{auth/logout.d.ts → network/list.d.ts} +2 -9
  38. package/dist/commands/network/list.js +71 -0
  39. package/dist/commands/network/register.d.ts +16 -0
  40. package/dist/commands/network/register.js +144 -0
  41. package/dist/commands/parameter/sync.d.ts +13 -0
  42. package/dist/commands/parameter/sync.js +69 -1
  43. package/dist/commands/project/sync.d.ts +5 -11
  44. package/dist/commands/project/sync.js +12 -381
  45. package/dist/commands/seed.d.ts +93 -0
  46. package/dist/commands/seed.js +324 -0
  47. package/dist/commands/service/backup.d.ts +17 -0
  48. package/dist/commands/service/backup.js +156 -0
  49. package/dist/commands/service/backups.d.ts +14 -0
  50. package/dist/commands/service/backups.js +110 -0
  51. package/dist/commands/service/bind.d.ts +16 -0
  52. package/dist/commands/service/bind.js +106 -0
  53. package/dist/commands/service/bindings.d.ts +13 -0
  54. package/dist/commands/service/bindings.js +78 -0
  55. package/dist/commands/service/clone.d.ts +19 -0
  56. package/dist/commands/service/clone.js +153 -0
  57. package/dist/commands/service/create.d.ts +16 -0
  58. package/dist/commands/service/create.js +212 -0
  59. package/dist/commands/service/get.d.ts +13 -0
  60. package/dist/commands/service/get.js +97 -0
  61. package/dist/commands/service/list.d.ts +12 -0
  62. package/dist/commands/service/list.js +86 -0
  63. package/dist/commands/service/register.d.ts +21 -0
  64. package/dist/commands/service/register.js +215 -0
  65. package/dist/commands/service/restore.d.ts +19 -0
  66. package/dist/commands/service/restore.js +158 -0
  67. package/dist/commands/service/seed.d.ts +17 -0
  68. package/dist/commands/service/seed.js +173 -0
  69. package/dist/commands/service/templates.d.ts +10 -0
  70. package/dist/commands/service/templates.js +66 -0
  71. package/dist/commands/service/unbind.d.ts +15 -0
  72. package/dist/commands/service/unbind.js +74 -0
  73. package/dist/commands/stage/create.d.ts +23 -0
  74. package/dist/commands/stage/create.js +145 -6
  75. package/dist/commands/stage/delete.d.ts +11 -0
  76. package/dist/commands/stage/delete.js +85 -0
  77. package/dist/commands/stage/deploy.d.ts +34 -0
  78. package/dist/commands/stage/deploy.js +294 -0
  79. package/dist/commands/stage/ensure-branches.d.ts +23 -0
  80. package/dist/commands/stage/ensure-branches.js +101 -0
  81. package/dist/commands/stage/list.js +4 -0
  82. package/dist/commands/stage/status.d.ts +14 -0
  83. package/dist/commands/stage/status.js +100 -0
  84. package/dist/commands/{jira → tracker}/connect.js +32 -23
  85. package/dist/commands/tracker/hook/add.d.ts +25 -0
  86. package/dist/commands/tracker/hook/add.js +284 -0
  87. package/dist/commands/{jira → tracker}/hook/list.js +20 -11
  88. package/dist/commands/{jira/hook/add.d.ts → tracker/hook/logs.d.ts} +2 -3
  89. package/dist/commands/tracker/hook/logs.js +126 -0
  90. package/dist/commands/{jira → tracker}/hook/remove.js +9 -8
  91. package/dist/commands/{jira → tracker}/hook/toggle.js +14 -12
  92. package/dist/commands/tracker/project/init.d.ts +17 -0
  93. package/dist/commands/tracker/project/init.js +178 -0
  94. package/dist/commands/tracker/project/link-module.d.ts +17 -0
  95. package/dist/commands/tracker/project/link-module.js +287 -0
  96. package/dist/commands/tracker/project/list-modules.d.ts +11 -0
  97. package/dist/commands/tracker/project/list-modules.js +117 -0
  98. package/dist/commands/tracker/project/list.d.ts +10 -0
  99. package/dist/commands/tracker/project/list.js +90 -0
  100. package/dist/commands/tracker/project/status.d.ts +13 -0
  101. package/dist/commands/tracker/project/status.js +168 -0
  102. package/dist/commands/tracker/project/unlink-module.d.ts +13 -0
  103. package/dist/commands/tracker/project/unlink-module.js +251 -0
  104. package/dist/commands/{jira → tracker}/status.js +3 -3
  105. package/dist/lib/ensure-branches.d.ts +53 -0
  106. package/dist/lib/ensure-branches.js +149 -0
  107. package/dist/lib/git-providers/github.d.ts +16 -0
  108. package/dist/lib/git-providers/github.js +157 -0
  109. package/dist/lib/git-providers/gitlab.d.ts +16 -0
  110. package/dist/lib/git-providers/gitlab.js +148 -0
  111. package/dist/lib/git-providers/index.d.ts +67 -0
  112. package/dist/lib/git-providers/index.js +39 -0
  113. package/dist/lib/lambda-warmer.d.ts +106 -0
  114. package/dist/lib/lambda-warmer.js +189 -0
  115. package/dist/services/hyperdrive-sigv4.d.ts +359 -5
  116. package/dist/services/hyperdrive-sigv4.js +177 -12
  117. package/dist/utils/hook-flow.d.ts +60 -3
  118. package/dist/utils/hook-flow.js +437 -2
  119. package/dist/utils/hook-normalize.d.ts +6 -0
  120. package/dist/utils/hook-normalize.js +33 -0
  121. package/dist/utils/lifecycle-poller.d.ts +32 -0
  122. package/dist/utils/lifecycle-poller.js +72 -0
  123. package/dist/utils/retry.d.ts +43 -0
  124. package/dist/utils/retry.js +88 -0
  125. package/dist/utils/summary-display.js +1 -1
  126. package/dist/utils/tracker-project-flow.d.ts +84 -0
  127. package/dist/utils/tracker-project-flow.js +564 -0
  128. package/package.json +41 -13
  129. package/dist/commands/auth/login.d.ts +0 -16
  130. package/dist/commands/auth/login.js +0 -179
  131. package/dist/commands/auth/logout.js +0 -116
  132. package/dist/commands/auth/refresh.d.ts +0 -6
  133. package/dist/commands/auth/refresh.js +0 -66
  134. package/dist/commands/auth/status.d.ts +0 -6
  135. package/dist/commands/auth/status.js +0 -63
  136. package/dist/commands/config/get.d.ts +0 -9
  137. package/dist/commands/config/get.js +0 -37
  138. package/dist/commands/config/set.d.ts +0 -10
  139. package/dist/commands/config/set.js +0 -48
  140. package/dist/commands/config/show.d.ts +0 -6
  141. package/dist/commands/config/show.js +0 -10
  142. package/dist/commands/domain/current.d.ts +0 -6
  143. package/dist/commands/domain/current.js +0 -18
  144. package/dist/commands/domain/list.d.ts +0 -6
  145. package/dist/commands/domain/list.js +0 -42
  146. package/dist/commands/domain/switch.js +0 -40
  147. package/dist/commands/jira/hook/add.js +0 -147
  148. package/dist/services/tenant-service.d.ts +0 -127
  149. package/dist/services/tenant-service.js +0 -396
  150. package/dist/utils/auth-flow.d.ts +0 -147
  151. package/dist/utils/auth-flow.js +0 -479
  152. package/oclif.manifest.json +0 -3519
  153. /package/dist/commands/{jira → tracker}/connect.d.ts +0 -0
  154. /package/dist/commands/{jira → tracker}/hook/list.d.ts +0 -0
  155. /package/dist/commands/{jira → tracker}/hook/remove.d.ts +0 -0
  156. /package/dist/commands/{jira → tracker}/hook/toggle.d.ts +0 -0
  157. /package/dist/commands/{jira → tracker}/status.d.ts +0 -0
@@ -41,16 +41,66 @@ interface ModuleResponse {
41
41
  buildRuntimeVersion?: string;
42
42
  ciService?: string;
43
43
  createdAt?: string;
44
+ defaultBranch?: string;
45
+ dependsOn?: Array<{
46
+ artifactKey: string;
47
+ downloadTo: string;
48
+ }>;
49
+ deployCommand?: string;
50
+ deploymentStrategy?: string;
51
+ dockerBuild?: Record<string, unknown>;
44
52
  framework?: string;
45
- moduleType?: 'backend' | 'frontend';
53
+ gitFullRepoPath?: string;
54
+ gitOrganization?: string;
55
+ gitProvider?: string;
56
+ gitRepoName?: string;
57
+ hasCI?: boolean;
58
+ installCommand?: string;
59
+ moduleType?: 'backend' | 'frontend' | 'cdk';
46
60
  name?: string;
61
+ postDeployCommand?: string;
62
+ postDeployFailureMode?: 'fail' | 'warn';
47
63
  projectId?: string;
48
64
  runCommand?: string;
49
65
  runtime?: string;
66
+ runtimeConfig?: {
67
+ memory?: number;
68
+ timeout?: number;
69
+ };
50
70
  runtimeVersion?: string;
51
71
  slug?: string;
52
72
  sourceLocation?: string;
53
73
  subdomain?: string;
74
+ targets?: Record<string, Record<string, unknown>>;
75
+ tenantId?: string;
76
+ updatedAt?: string;
77
+ }
78
+ /**
79
+ * Lambda env update report returned by the backend after a parameter sync.
80
+ *
81
+ * The CLI never updates Lambda directly — it asks the backend (API-111 AC5)
82
+ * to perform GetFunctionConfiguration → merge env → UpdateFunctionConfiguration
83
+ * on each function bound to the module/stage. The backend returns the per-
84
+ * function diff so the CLI can surface what changed.
85
+ *
86
+ * AC6 contract: `updatedKeys` is the testable list of env vars actually
87
+ * written for that function. Empty array = idempotent no-op.
88
+ */
89
+ export interface LambdaEnvUpdateReport {
90
+ /** Was an actual UpdateFunctionConfiguration call made? false on dry-run / no-op */
91
+ applied?: boolean;
92
+ /** Free-form error if the update failed for this function only */
93
+ error?: string;
94
+ /** Lambda function name (e.g. `api-alunos-feat-e2e-handler`) */
95
+ functionName: string;
96
+ /** Env keys removed by this sync (when sync deletes a previously-set var) */
97
+ removedKeys?: string[];
98
+ /** Reason this Lambda was skipped, if applicable (e.g. function not found) */
99
+ skipped?: string;
100
+ /** Env keys preserved unchanged (already match desired values) */
101
+ unchangedKeys?: string[];
102
+ /** Env keys whose values differed and were written (or would be on dry-run) */
103
+ updatedKeys: string[];
54
104
  }
55
105
  interface ParameterSyncResponse {
56
106
  errors?: Array<{
@@ -70,6 +120,12 @@ interface ParameterSyncStatusResponse {
70
120
  error: string;
71
121
  key: string;
72
122
  }>;
123
+ /**
124
+ * Lambda env update results, present when the request was made with
125
+ * `applyToLambda: true`. One entry per Lambda the backend tried to update.
126
+ * Order is not guaranteed.
127
+ */
128
+ lambdaUpdates?: LambdaEnvUpdateReport[];
73
129
  progress?: {
74
130
  percentage: number;
75
131
  processed: number;
@@ -93,6 +149,52 @@ interface StageResponse {
93
149
  provider?: string;
94
150
  regions?: string[];
95
151
  slug?: string;
152
+ /**
153
+ * Project slugs linked to this stage (as originally requested at
154
+ * creation). Mirrors `StageData.projectSlugs` on the backend.
155
+ */
156
+ projectSlugs?: string[];
157
+ /**
158
+ * Runtime project deployment tracking — map of slug → last-deployment info.
159
+ * Populated after each deploy. Mirrors `Stage.projects` on the backend.
160
+ */
161
+ projects?: Record<string, {
162
+ lastDeployment?: {
163
+ url?: string;
164
+ deploymentId?: string;
165
+ deployedAt?: string;
166
+ };
167
+ }>;
168
+ }
169
+ interface DeployManifestModuleResponse {
170
+ moduleSlug: string;
171
+ status: 'pending' | 'deployed' | 'failed' | 'timeout' | 'skipped';
172
+ deploymentId?: string;
173
+ errorType?: string;
174
+ startedAt?: string;
175
+ updatedAt?: string;
176
+ }
177
+ interface DeployManifestWaveResponse {
178
+ waveIndex: number;
179
+ modules: DeployManifestModuleResponse[];
180
+ }
181
+ export interface DeployManifestResponse {
182
+ tenantId: string;
183
+ stageId: string;
184
+ missionId: string;
185
+ status: 'running' | 'partial-failure' | 'success' | 'failed';
186
+ waves: DeployManifestWaveResponse[];
187
+ startedAt: string;
188
+ updatedAt: string;
189
+ }
190
+ export interface DeployManifestApiResponse {
191
+ manifest: DeployManifestResponse | null;
192
+ reason?: string;
193
+ }
194
+ export interface StageDeployResponse {
195
+ missionId: string;
196
+ logging: LoggingConfig;
197
+ manifest: DeployManifestResponse;
96
198
  }
97
199
  interface AWSAccountResponse {
98
200
  accountId: string;
@@ -139,7 +241,7 @@ interface GitAuthInitiateResponse {
139
241
  state: string;
140
242
  }
141
243
  export type HookTriggerEvent = 'comment_added' | 'field_changed' | 'issue_assigned' | 'issue_created' | 'label_changed' | 'status_transition';
142
- export type HookActionType = 'adhb-enrich' | 'ci-trigger' | 'git-create-branch' | 'git-create-mr' | 'git-delete-branch' | 'slack-notify' | 'webhook';
244
+ export type HookActionType = 'adhb-enrich' | 'ci-trigger' | 'deploy' | 'git-create-branch' | 'git-create-mr' | 'git-delete-branch' | 'slack-notify' | 'stage-create' | 'stage-delete' | 'webhook';
143
245
  export type HookActionCategory = 'flex' | 'smart';
144
246
  export interface SlackNotifyConfig {
145
247
  channel: string;
@@ -168,9 +270,30 @@ export interface HookResponse {
168
270
  triggerStatus: string;
169
271
  updatedAt: string;
170
272
  }
273
+ export interface TrackerHookResponseV2 {
274
+ action: {
275
+ category: string;
276
+ config: Record<string, unknown>;
277
+ type: string;
278
+ };
279
+ createdAt: string;
280
+ enabled: boolean;
281
+ hookId: string;
282
+ order?: number;
283
+ trackerProjectId: string;
284
+ trigger: {
285
+ conditions?: Record<string, string>;
286
+ event: string;
287
+ source: string;
288
+ };
289
+ updatedAt: string;
290
+ }
171
291
  export interface HookListResponse {
172
292
  hooks: HookResponse[];
173
293
  }
294
+ export interface TrackerHookListResponseV2 {
295
+ hooks: TrackerHookResponseV2[];
296
+ }
174
297
  export interface HookLogEntry {
175
298
  actionType: string;
176
299
  durationMs: number;
@@ -204,6 +327,102 @@ export interface HookCreateRequestV2 {
204
327
  source: string;
205
328
  };
206
329
  }
330
+ export type HyperdriveLifecycleEvent = 'stage.created' | 'stage.provisioned' | 'stage.domain.ready' | 'stage.domain.failed' | 'stage.destroying' | 'stage.destroyed' | 'deploy.created' | 'deploy.ready' | 'deploy.launched' | 'deploy.completed' | 'deploy.failed' | 'launch.created' | 'launch.deployed' | 'launch.failed' | 'launch.terminated' | 'mission.started' | 'mission.wave.completed' | 'mission.completed' | 'mission.failed';
331
+ export interface TenantHookResponse {
332
+ action: {
333
+ category: 'flex' | 'smart';
334
+ config: Record<string, unknown>;
335
+ type: string;
336
+ };
337
+ createdAt: string;
338
+ enabled: boolean;
339
+ hookId: string;
340
+ order?: number;
341
+ schedulerResource?: {
342
+ arn: string;
343
+ groupName: string;
344
+ scheduleName: string;
345
+ state: 'DISABLED' | 'ENABLED';
346
+ };
347
+ trigger: {
348
+ conditions?: Record<string, string>;
349
+ event: string;
350
+ expression?: string;
351
+ flexibleWindowMinutes?: number;
352
+ source: 'hyperdrive';
353
+ timezone?: string;
354
+ type?: 'cron';
355
+ };
356
+ updatedAt?: string;
357
+ }
358
+ export type TenantHookTrigger = {
359
+ conditions?: Record<string, string>;
360
+ event: HyperdriveLifecycleEvent;
361
+ source: 'hyperdrive';
362
+ } | {
363
+ expression: string;
364
+ flexibleWindowMinutes?: number;
365
+ timezone: string;
366
+ type: 'cron';
367
+ };
368
+ export interface TenantHookCreateRequest {
369
+ action: {
370
+ category: HookActionCategory;
371
+ config: Record<string, unknown>;
372
+ type: HookActionType;
373
+ };
374
+ order?: number;
375
+ trigger: TenantHookTrigger;
376
+ }
377
+ export type NormalizedWorkflowState = 'blocked' | 'deploying' | 'done' | 'enriching' | 'implementing' | 'in_review' | 'pending' | 'ready_to_merge' | 'testing' | 'validating';
378
+ export interface TrackerProject {
379
+ createdAt: string;
380
+ externalProjectKey: string;
381
+ externalProjectName: string;
382
+ provider: string;
383
+ statusMapping: Record<string, NormalizedWorkflowState>;
384
+ trackerId: string;
385
+ trackerProjectId: string;
386
+ updatedAt: string;
387
+ }
388
+ export interface TrackerProjectCreateRequest {
389
+ externalProjectKey: string;
390
+ externalProjectName: string;
391
+ provider: string;
392
+ statusMapping: Record<string, NormalizedWorkflowState>;
393
+ trackerId: string;
394
+ }
395
+ export interface TrackerProjectModuleLink {
396
+ linkedAt: string;
397
+ moduleId: string;
398
+ role?: 'primary' | 'supporting';
399
+ trackerProjectId: string;
400
+ }
401
+ export interface TrackerProjectModuleLinkRequest {
402
+ moduleId: string;
403
+ role?: 'primary' | 'supporting';
404
+ }
405
+ export interface ModuleContextInProject {
406
+ architectureSummary: Record<string, unknown> | null;
407
+ entityRegistry: Array<{
408
+ name: string;
409
+ path: string;
410
+ type: string;
411
+ }>;
412
+ lastSyncedAt: string | null;
413
+ metadata: {
414
+ name: string;
415
+ slug: string;
416
+ };
417
+ moduleId: string;
418
+ moduleList: string[];
419
+ summaryStatus: 'fresh' | 'not_generated' | 'stale';
420
+ }
421
+ export interface TrackerProjectContextResponse {
422
+ hooksSummary: Record<string, string[]>;
423
+ linkedModules: ModuleContextInProject[];
424
+ trackerProject: TrackerProject;
425
+ }
207
426
  export type BackupStatus = 'completed' | 'failed' | 'in-progress' | 'pending';
208
427
  export type BackupType = 'clone' | 'restore' | 'snapshot';
209
428
  export type SeedRunStatus = 'completed' | 'failed' | 'in-progress' | 'pending';
@@ -243,12 +462,10 @@ export interface SeedRunListResponse {
243
462
  lastEvaluatedKey?: Record<string, unknown>;
244
463
  seedRuns: SeedRunResponse[];
245
464
  }
246
- /**
247
- * Hyperdrive API Service with AWS SigV4 authentication
248
- */
249
465
  export declare class HyperdriveSigV4Service extends SigV4ApiClient {
250
466
  private readonly projectsApiUrl?;
251
467
  private readonly userGroupsApiUrl?;
468
+ private readonly parameterApiUrl;
252
469
  constructor(domain?: string);
253
470
  accountAdd(params: {
254
471
  accountId: string;
@@ -577,6 +794,31 @@ export declare class HyperdriveSigV4Service extends SigV4ApiClient {
577
794
  projectSlug: string;
578
795
  stage: string;
579
796
  }): Promise<DeploymentResponse[]>;
797
+ deploymentCreateStatic(params: {
798
+ commit: string;
799
+ deploymentName: string;
800
+ files: Array<{
801
+ contentType: string;
802
+ path: string;
803
+ size: number;
804
+ }>;
805
+ projectSlug: string;
806
+ stage: string;
807
+ }): Promise<{
808
+ bucketName: string;
809
+ deploymentId: string;
810
+ uploadUrls: Array<{
811
+ path: string;
812
+ url: string;
813
+ }>;
814
+ }>;
815
+ deploymentFinalizeStatic(deploymentId: string, options?: {
816
+ spa?: boolean;
817
+ }): Promise<{
818
+ deploymentId: string;
819
+ launchId: string;
820
+ url: string;
821
+ }>;
580
822
  gitAuthInitiate(provider: 'github' | 'gitlab'): Promise<GitAuthInitiateResponse>;
581
823
  gitCheckRepoAccess(params: {
582
824
  provider: 'github' | 'gitlab';
@@ -611,6 +853,23 @@ export declare class HyperdriveSigV4Service extends SigV4ApiClient {
611
853
  hookUpdate(projectId: string, hookId: string, body: Partial<HookCreateRequest> & {
612
854
  enabled?: boolean;
613
855
  }): Promise<HookResponse>;
856
+ tenantHookCreate(body: TenantHookCreateRequest): Promise<TenantHookResponse>;
857
+ tenantHookDelete(hookId: string): Promise<{
858
+ message: string;
859
+ }>;
860
+ tenantHookGet(hookId: string): Promise<TenantHookResponse>;
861
+ tenantHookList(): Promise<TenantHookResponse[]>;
862
+ tenantHookLogList(options?: {
863
+ limit?: number;
864
+ status?: string;
865
+ }): Promise<HookLogListResponse>;
866
+ tenantHookUpdate(hookId: string, body: {
867
+ action?: {
868
+ config: Record<string, unknown>;
869
+ };
870
+ enabled?: boolean;
871
+ order?: number;
872
+ }): Promise<TenantHookResponse>;
614
873
  projectGetJiraStatuses(projectId: string): Promise<{
615
874
  statuses: Array<{
616
875
  id: string;
@@ -618,6 +877,14 @@ export declare class HyperdriveSigV4Service extends SigV4ApiClient {
618
877
  category?: string;
619
878
  }>;
620
879
  }>;
880
+ jiraListProjects(): Promise<{
881
+ projects: Array<{
882
+ id?: string;
883
+ key?: string;
884
+ name?: string;
885
+ projectTypeKey?: string;
886
+ }>;
887
+ }>;
621
888
  jiraGetProjectStatuses(jiraProjectKey: string): Promise<{
622
889
  statuses: Array<{
623
890
  id: string;
@@ -640,6 +907,30 @@ export declare class HyperdriveSigV4Service extends SigV4ApiClient {
640
907
  };
641
908
  success: boolean;
642
909
  }>;
910
+ jiraStatus(): Promise<Record<string, unknown>>;
911
+ trackerProjectCreate(data: TrackerProjectCreateRequest): Promise<TrackerProject>;
912
+ trackerProjectDelete(trackerProjectId: string): Promise<{
913
+ message: string;
914
+ }>;
915
+ trackerProjectHookCreate(trackerProjectId: string, body: HookCreateRequest): Promise<HookResponse>;
916
+ trackerProjectHookCreateV2(trackerProjectId: string, body: HookCreateRequestV2): Promise<TrackerHookResponseV2>;
917
+ trackerProjectHookDelete(trackerProjectId: string, hookId: string): Promise<{
918
+ message: string;
919
+ }>;
920
+ trackerProjectHookList(trackerProjectId: string): Promise<TrackerHookListResponseV2>;
921
+ trackerProjectHookLogList(trackerProjectId: string, options?: {
922
+ limit?: number;
923
+ status?: string;
924
+ }): Promise<HookLogListResponse>;
925
+ trackerProjectHookUpdate(trackerProjectId: string, hookId: string, body: Partial<HookCreateRequest> & {
926
+ enabled?: boolean;
927
+ }): Promise<TrackerHookResponseV2>;
928
+ trackerProjectLinkModule(trackerProjectId: string, data: TrackerProjectModuleLinkRequest): Promise<TrackerProjectModuleLink>;
929
+ trackerProjectList(): Promise<TrackerProject[]>;
930
+ trackerProjectListModules(trackerProjectId: string): Promise<TrackerProjectModuleLink[]>;
931
+ trackerProjectUnlinkModule(trackerProjectId: string, moduleId: string): Promise<void>;
932
+ trackerProjectGet(trackerProjectId: string): Promise<TrackerProject>;
933
+ trackerProjectGetContext(trackerProjectId: string): Promise<TrackerProjectContextResponse>;
643
934
  projectAddRepo(projectId: string, repo: {
644
935
  defaultBranch: string;
645
936
  gitProvider: string;
@@ -763,6 +1054,10 @@ export declare class HyperdriveSigV4Service extends SigV4ApiClient {
763
1054
  parameters: Record<string, boolean>;
764
1055
  targetSlug: string;
765
1056
  }): Promise<ModuleResponse>;
1057
+ moduleUnlink(params: {
1058
+ originSlug: string;
1059
+ targetSlug: string;
1060
+ }): Promise<ModuleResponse>;
766
1061
  moduleList(): Promise<ModuleResponse[]>;
767
1062
  moduleReanalyze(slug: string, userPrompt: string): Promise<{
768
1063
  jobId: string;
@@ -771,18 +1066,43 @@ export declare class HyperdriveSigV4Service extends SigV4ApiClient {
771
1066
  projectId: string;
772
1067
  status: string;
773
1068
  }>;
1069
+ moduleUpdateContext(moduleSlug: string, data: {
1070
+ architectureSummary: string;
1071
+ entityRegistry: Array<{
1072
+ description?: string;
1073
+ name: string;
1074
+ path: string;
1075
+ repository?: string;
1076
+ type: string;
1077
+ }>;
1078
+ lastSyncedAt: string;
1079
+ }): Promise<Record<string, unknown>>;
774
1080
  moduleUpdate(params: {
775
1081
  buildCommand?: string;
776
1082
  buildFolder?: string;
777
1083
  buildRuntime?: string;
778
1084
  buildRuntimeVersion?: string;
779
1085
  ciService?: string;
1086
+ dependsOn?: Array<{
1087
+ artifactKey: string;
1088
+ downloadTo: string;
1089
+ }>;
1090
+ deployCommand?: string;
1091
+ deploymentStrategy?: string;
1092
+ dockerBuild?: Record<string, unknown>;
780
1093
  framework?: string;
781
1094
  installCommand?: string;
782
1095
  moduleType?: 'backend' | 'frontend' | 'cdk';
783
1096
  name?: string;
1097
+ postDeployCommand?: string;
1098
+ postDeployFailureMode?: 'fail' | 'warn';
784
1099
  runCommand?: string;
785
1100
  runtime?: string;
1101
+ runtimeConfig?: {
1102
+ memory?: number;
1103
+ timeout?: number;
1104
+ };
1105
+ runtimeMode?: string;
786
1106
  runtimeVersion?: string;
787
1107
  slug: string;
788
1108
  sourceLocation?: string;
@@ -841,6 +1161,19 @@ export declare class HyperdriveSigV4Service extends SigV4ApiClient {
841
1161
  }>;
842
1162
  parameterSync(params: {
843
1163
  accountId: string;
1164
+ /**
1165
+ * When true, after writing to DDB the backend also updates each Lambda
1166
+ * function bound to the module/stage with the new env vars. Existing env
1167
+ * vars not present in the sync are preserved (read current → merge →
1168
+ * UpdateFunctionConfiguration). See API-111 AC5.
1169
+ */
1170
+ applyToLambda?: boolean;
1171
+ /**
1172
+ * When true, the backend computes the DDB and Lambda diff but does not
1173
+ * write either. Status response surfaces `lambdaUpdates` with
1174
+ * `applied: false` so the CLI can preview the change set.
1175
+ */
1176
+ dryRun?: boolean;
844
1177
  encodedContent: string;
845
1178
  projectSlug?: string;
846
1179
  specific: boolean;
@@ -873,6 +1206,27 @@ export declare class HyperdriveSigV4Service extends SigV4ApiClient {
873
1206
  name: string;
874
1207
  }): Promise<StageResponse>;
875
1208
  stageList(): Promise<StageResponse[]>;
1209
+ stageGetDeployManifest(stageName: string): Promise<DeployManifestApiResponse>;
1210
+ stageDeploy(params: {
1211
+ stageName: string;
1212
+ mode: 'retry' | 'module';
1213
+ moduleSlug?: string;
1214
+ }): Promise<StageDeployResponse>;
1215
+ stageDelete(stageName: string, force?: boolean): Promise<{
1216
+ stage: StageResponse;
1217
+ cleanup: 'queued';
1218
+ } | {
1219
+ stage: StageResponse;
1220
+ stacks: {
1221
+ stacksDeleted: string[];
1222
+ errors: string[];
1223
+ };
1224
+ logGroups?: {
1225
+ deleted: number;
1226
+ errors: string[];
1227
+ };
1228
+ domainTeardown?: string;
1229
+ }>;
876
1230
  stageAccessGet(stageName: string): Promise<{
877
1231
  access: Array<{
878
1232
  role: string;