@ankhorage/studio 2.7.1 → 2.7.3

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 (58) hide show
  1. package/README.md +1 -1
  2. package/apm/update.json +1 -1
  3. package/dist/app/ProjectDetailScreen.d.ts.map +1 -1
  4. package/dist/app/ProjectDetailScreen.js +3 -8
  5. package/dist/app/ProjectDetailScreen.js.map +1 -1
  6. package/dist/features/project-updates/adapters/inbound/ProjectUpdateDashboardPanel.d.ts +6 -0
  7. package/dist/features/project-updates/adapters/inbound/ProjectUpdateDashboardPanel.d.ts.map +1 -0
  8. package/dist/features/project-updates/adapters/inbound/ProjectUpdateDashboardPanel.js +94 -0
  9. package/dist/features/project-updates/adapters/inbound/ProjectUpdateDashboardPanel.js.map +1 -0
  10. package/dist/features/project-updates/adapters/inbound/registerProjectUpdateRoutes.d.ts +16 -0
  11. package/dist/features/project-updates/adapters/inbound/registerProjectUpdateRoutes.d.ts.map +1 -0
  12. package/dist/features/project-updates/adapters/inbound/registerProjectUpdateRoutes.js +269 -0
  13. package/dist/features/project-updates/adapters/inbound/registerProjectUpdateRoutes.js.map +1 -0
  14. package/dist/features/project-updates/adapters/inbound/useProjectUpdateDashboard.d.ts +15 -0
  15. package/dist/features/project-updates/adapters/inbound/useProjectUpdateDashboard.d.ts.map +1 -0
  16. package/dist/features/project-updates/adapters/inbound/useProjectUpdateDashboard.js +109 -0
  17. package/dist/features/project-updates/adapters/inbound/useProjectUpdateDashboard.js.map +1 -0
  18. package/dist/features/project-updates/adapters/outbound/createProjectUpdateHostHttpAdapter.d.ts +4 -0
  19. package/dist/features/project-updates/adapters/outbound/createProjectUpdateHostHttpAdapter.d.ts.map +1 -0
  20. package/dist/features/project-updates/adapters/outbound/createProjectUpdateHostHttpAdapter.js +54 -0
  21. package/dist/features/project-updates/adapters/outbound/createProjectUpdateHostHttpAdapter.js.map +1 -0
  22. package/dist/features/project-updates/application/ProjectUpdateDashboardService.d.ts +19 -0
  23. package/dist/features/project-updates/application/ProjectUpdateDashboardService.d.ts.map +1 -0
  24. package/dist/features/project-updates/application/ProjectUpdateDashboardService.js +51 -0
  25. package/dist/features/project-updates/application/ProjectUpdateDashboardService.js.map +1 -0
  26. package/dist/features/project-updates/application/createProjectUpdateDashboardState.d.ts +4 -0
  27. package/dist/features/project-updates/application/createProjectUpdateDashboardState.d.ts.map +1 -0
  28. package/dist/features/project-updates/application/createProjectUpdateDashboardState.js +20 -0
  29. package/dist/features/project-updates/application/createProjectUpdateDashboardState.js.map +1 -0
  30. package/dist/features/project-updates/application/ports/outbound/ProjectUpdateHostPort.d.ts +14 -0
  31. package/dist/features/project-updates/application/ports/outbound/ProjectUpdateHostPort.d.ts.map +1 -0
  32. package/dist/features/project-updates/application/ports/outbound/ProjectUpdateHostPort.js +2 -0
  33. package/dist/features/project-updates/application/ports/outbound/ProjectUpdateHostPort.js.map +1 -0
  34. package/dist/features/project-updates/application/reduceProjectUpdateDashboardState.d.ts +4 -0
  35. package/dist/features/project-updates/application/reduceProjectUpdateDashboardState.d.ts.map +1 -0
  36. package/dist/features/project-updates/application/reduceProjectUpdateDashboardState.js +53 -0
  37. package/dist/features/project-updates/application/reduceProjectUpdateDashboardState.js.map +1 -0
  38. package/dist/features/project-updates/application/resolveProjectUpdateDashboardPresentation.d.ts +126 -0
  39. package/dist/features/project-updates/application/resolveProjectUpdateDashboardPresentation.d.ts.map +1 -0
  40. package/dist/features/project-updates/application/resolveProjectUpdateDashboardPresentation.js +153 -0
  41. package/dist/features/project-updates/application/resolveProjectUpdateDashboardPresentation.js.map +1 -0
  42. package/dist/features/project-updates/composition/createStudioProjectUpdateDashboardService.d.ts +4 -0
  43. package/dist/features/project-updates/composition/createStudioProjectUpdateDashboardService.d.ts.map +1 -0
  44. package/dist/features/project-updates/composition/createStudioProjectUpdateDashboardService.js +8 -0
  45. package/dist/features/project-updates/composition/createStudioProjectUpdateDashboardService.js.map +1 -0
  46. package/dist/features/project-updates/utils/readProjectUpdateOperationId.d.ts +3 -0
  47. package/dist/features/project-updates/utils/readProjectUpdateOperationId.d.ts.map +1 -0
  48. package/dist/features/project-updates/utils/readProjectUpdateOperationId.js +10 -0
  49. package/dist/features/project-updates/utils/readProjectUpdateOperationId.js.map +1 -0
  50. package/dist/host/http/server.d.ts +3 -1
  51. package/dist/host/http/server.d.ts.map +1 -1
  52. package/dist/host/http/server.js +16 -1
  53. package/dist/host/http/server.js.map +1 -1
  54. package/dist/types/project-update-dashboard.d.ts +47 -0
  55. package/dist/types/project-update-dashboard.d.ts.map +1 -0
  56. package/dist/types/project-update-dashboard.js +2 -0
  57. package/dist/types/project-update-dashboard.js.map +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,109 @@
1
+ import { useCallback, useEffect, useMemo, useReducer } from 'react';
2
+ import { createProjectUpdateDashboardState } from '../../application/createProjectUpdateDashboardState';
3
+ import { reduceProjectUpdateDashboardState } from '../../application/reduceProjectUpdateDashboardState';
4
+ import { createStudioProjectUpdateDashboardService } from '../../composition/createStudioProjectUpdateDashboardService';
5
+ import { readProjectUpdateOperationId } from '../../utils/readProjectUpdateOperationId';
6
+ /*** Bind one selected project to the authorized Dashboard APM lifecycle and its reviewed state. */
7
+ export function useProjectUpdateDashboard(projectId) {
8
+ const service = useMemo(() => createStudioProjectUpdateDashboardService(), []);
9
+ const [state, dispatch] = useReducer(reduceProjectUpdateDashboardState, projectId, createProjectUpdateDashboardState);
10
+ useEffect(() => {
11
+ dispatch({ type: 'project-changed', projectId });
12
+ }, [projectId]);
13
+ const inspectAsync = useCallback(async () => {
14
+ dispatch({ type: 'request-started', action: 'status' });
15
+ try {
16
+ const status = await service.inspectAsync(projectId, state.availability);
17
+ dispatch({ type: 'status-received', status });
18
+ }
19
+ catch (error) {
20
+ dispatch({ type: 'request-failed', message: readErrorMessage(error) });
21
+ }
22
+ }, [projectId, service, state.availability]);
23
+ const planAsync = useCallback(async () => {
24
+ dispatch({ type: 'request-started', action: 'plan' });
25
+ try {
26
+ const plan = await service.planAsync(projectId, state.availability);
27
+ dispatch({ type: 'plan-received', plan });
28
+ }
29
+ catch (error) {
30
+ dispatch({ type: 'request-failed', message: readErrorMessage(error) });
31
+ }
32
+ }, [projectId, service, state.availability]);
33
+ const applyAsync = useCallback(async () => {
34
+ if (state.plan === null) {
35
+ dispatch({ type: 'request-failed', message: 'Inspect and review a plan before applying.' });
36
+ return;
37
+ }
38
+ dispatch({ type: 'request-started', action: 'apply' });
39
+ try {
40
+ const execution = await service.applyAsync(projectId, state.plan, state.permissions);
41
+ dispatch({
42
+ type: 'execution-received',
43
+ execution,
44
+ operationId: readProjectUpdateOperationId(execution),
45
+ });
46
+ }
47
+ catch (error) {
48
+ dispatch({ type: 'request-failed', message: readErrorMessage(error) });
49
+ }
50
+ }, [projectId, service, state.permissions, state.plan]);
51
+ const resumeAsync = useCallback(async () => {
52
+ dispatch({ type: 'request-started', action: 'resume' });
53
+ try {
54
+ const execution = await service.resumeAsync(projectId, state.operationId, state.permissions);
55
+ dispatch({
56
+ type: 'execution-received',
57
+ execution,
58
+ operationId: readProjectUpdateOperationId(execution),
59
+ });
60
+ }
61
+ catch (error) {
62
+ dispatch({ type: 'request-failed', message: readErrorMessage(error) });
63
+ }
64
+ }, [projectId, service, state.operationId, state.permissions]);
65
+ const verifyAsync = useCallback(async () => {
66
+ dispatch({ type: 'request-started', action: 'verify' });
67
+ try {
68
+ const verification = await service.verifyAsync(projectId, state.operationId);
69
+ dispatch({ type: 'verification-received', verification });
70
+ }
71
+ catch (error) {
72
+ dispatch({ type: 'request-failed', message: readErrorMessage(error) });
73
+ }
74
+ }, [projectId, service, state.operationId]);
75
+ const setAvailability = useCallback((availability) => {
76
+ dispatch({ type: 'availability-changed', availability });
77
+ }, []);
78
+ const setPermissionSelection = useCallback((selection) => {
79
+ dispatch({
80
+ type: 'permissions-changed',
81
+ permissions: selectionToPermissions(selection),
82
+ });
83
+ }, []);
84
+ const setOperationId = useCallback((operationId) => {
85
+ dispatch({ type: 'operation-id-changed', operationId });
86
+ }, []);
87
+ return {
88
+ state,
89
+ inspectAsync,
90
+ planAsync,
91
+ applyAsync,
92
+ resumeAsync,
93
+ verifyAsync,
94
+ setAvailability,
95
+ setPermissionSelection,
96
+ setOperationId,
97
+ };
98
+ }
99
+ function selectionToPermissions(selection) {
100
+ return {
101
+ ownerCode: selection.includes('owner-code'),
102
+ lifecycleScripts: selection.includes('lifecycle-scripts'),
103
+ externalEffects: selection.includes('external-effects'),
104
+ };
105
+ }
106
+ function readErrorMessage(error) {
107
+ return error instanceof Error ? error.message : 'Project update request failed.';
108
+ }
109
+ //# sourceMappingURL=useProjectUpdateDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjectUpdateDashboard.js","sourceRoot":"","sources":["../../../../../src/features/project-updates/adapters/inbound/useProjectUpdateDashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ProjectUpdateHostPort } from '../../application/ports/outbound/ProjectUpdateHostPort';
2
+ /*** Create the browser-safe outbound adapter for Studio's project-scoped APM host routes. */
3
+ export declare function createProjectUpdateHostHttpAdapter(apiBase: string): ProjectUpdateHostPort;
4
+ //# sourceMappingURL=createProjectUpdateHostHttpAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProjectUpdateHostHttpAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/features/project-updates/adapters/outbound/createProjectUpdateHostHttpAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAEpG,6FAA6F;AAC7F,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAiCzF"}
@@ -0,0 +1,54 @@
1
+ import { isRecord } from '@ankhorage/utility/object';
2
+ /*** Create the browser-safe outbound adapter for Studio's project-scoped APM host routes. */
3
+ export function createProjectUpdateHostHttpAdapter(apiBase) {
4
+ return {
5
+ statusAsync: async (projectId, availability) => requestJsonAsync(apiBase, `/projects/${encodeURIComponent(projectId)}/updates/status?availability=${encodeURIComponent(availability)}`, { method: 'GET' }),
6
+ planAsync: async (projectId, input) => requestJsonAsync(apiBase, `/projects/${encodeURIComponent(projectId)}/updates/plan`, {
7
+ method: 'POST',
8
+ headers: { 'Content-Type': 'application/json' },
9
+ body: JSON.stringify(input),
10
+ }),
11
+ applyAsync: async (projectId, plan, permissions) => requestJsonAsync(apiBase, `/projects/${encodeURIComponent(projectId)}/updates/apply`, {
12
+ method: 'POST',
13
+ headers: { 'Content-Type': 'application/json' },
14
+ body: JSON.stringify({ plan, permissions }),
15
+ }),
16
+ resumeAsync: async (projectId, operationId, permissions) => requestJsonAsync(apiBase, `/projects/${encodeURIComponent(projectId)}/updates/resume`, {
17
+ method: 'POST',
18
+ headers: { 'Content-Type': 'application/json' },
19
+ body: JSON.stringify({ operationId, permissions }),
20
+ }),
21
+ verifyAsync: async (projectId, operationId) => requestJsonAsync(apiBase, `/projects/${encodeURIComponent(projectId)}/updates/verify`, {
22
+ method: 'POST',
23
+ headers: { 'Content-Type': 'application/json' },
24
+ body: JSON.stringify({ operationId }),
25
+ }),
26
+ };
27
+ }
28
+ /*** Execute one bounded Studio host request and preserve structured APM results as untrusted JSON. */
29
+ async function requestJsonAsync(apiBase, path, init) {
30
+ const response = await fetch(`${apiBase}${path}`, init);
31
+ const body = await readResponseJsonAsync(response);
32
+ if (!response.ok) {
33
+ throw new Error(readFailureMessage(body) ?? `Project update request failed with ${response.status}.`);
34
+ }
35
+ return body;
36
+ }
37
+ /*** Read a response body without turning an invalid error payload into a second exception. */
38
+ async function readResponseJsonAsync(response) {
39
+ try {
40
+ return await response.json();
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ }
46
+ /*** Read the bounded host error message without echoing arbitrary response values. */
47
+ function readFailureMessage(value) {
48
+ if (!isRecord(value))
49
+ return undefined;
50
+ if (typeof value.error === 'string')
51
+ return value.error;
52
+ return typeof value.message === 'string' ? value.message : undefined;
53
+ }
54
+ //# sourceMappingURL=createProjectUpdateHostHttpAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProjectUpdateHostHttpAdapter.js","sourceRoot":"","sources":["../../../../../src/features/project-updates/adapters/outbound/createProjectUpdateHostHttpAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ApmApplyPermissions, ApmStatusAvailabilityMode } from '@ankhorage/apm/types';
2
+ import type { ProjectUpdateHostPort } from './ports/outbound/ProjectUpdateHostPort';
3
+ /*** Coordinate Dashboard APM lifecycle requests through the authorized project-scoped host port. */
4
+ export declare class ProjectUpdateDashboardService {
5
+ private readonly host;
6
+ /*** Bind Dashboard lifecycle orchestration to one project-update host capability. */
7
+ constructor(host: ProjectUpdateHostPort);
8
+ /*** Inspect fresh or offline APM evidence for one selected Studio project. */
9
+ inspectAsync(projectId: string, availability: ApmStatusAvailabilityMode): Promise<unknown>;
10
+ /*** Build a concrete safe-update/repair plan for one selected Studio project. */
11
+ planAsync(projectId: string, availability: ApmStatusAvailabilityMode): Promise<unknown>;
12
+ /*** Execute one explicitly reviewed plan using the user's explicit permission envelope. */
13
+ applyAsync(projectId: string, plan: unknown, permissions: ApmApplyPermissions): Promise<unknown>;
14
+ /*** Resume one durable APM operation for the selected project. */
15
+ resumeAsync(projectId: string, operationId: string, permissions: ApmApplyPermissions): Promise<unknown>;
16
+ /*** Verify one durable APM operation against fresh owner-aware evidence. */
17
+ verifyAsync(projectId: string, operationId: string): Promise<unknown>;
18
+ }
19
+ //# sourceMappingURL=ProjectUpdateDashboardService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectUpdateDashboardService.d.ts","sourceRoot":"","sources":["../../../../src/features/project-updates/application/ProjectUpdateDashboardService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAEpF,oGAAoG;AACpG,qBAAa,6BAA6B;IAE5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IADjC,qFAAqF;gBACxD,IAAI,EAAE,qBAAqB;IAExD,8EAA8E;IACxE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhG,iFAAiF;IAC3E,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC;IAO7F,2FAA2F;IACrF,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,mBAAmB,GAC/B,OAAO,CAAC,OAAO,CAAC;IAInB,kEAAkE;IAC5D,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,GAC/B,OAAO,CAAC,OAAO,CAAC;IAQnB,4EAA4E;IACtE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAM5E"}
@@ -0,0 +1,51 @@
1
+ /*** Coordinate Dashboard APM lifecycle requests through the authorized project-scoped host port. */
2
+ export class ProjectUpdateDashboardService {
3
+ host;
4
+ /*** Bind Dashboard lifecycle orchestration to one project-update host capability. */
5
+ constructor(host) {
6
+ this.host = host;
7
+ }
8
+ /*** Inspect fresh or offline APM evidence for one selected Studio project. */
9
+ async inspectAsync(projectId, availability) {
10
+ return await this.host.statusAsync(requireProjectId(projectId), availability);
11
+ }
12
+ /*** Build a concrete safe-update/repair plan for one selected Studio project. */
13
+ async planAsync(projectId, availability) {
14
+ return await this.host.planAsync(requireProjectId(projectId), {
15
+ availability,
16
+ policy: DASHBOARD_PLAN_POLICY,
17
+ });
18
+ }
19
+ /*** Execute one explicitly reviewed plan using the user's explicit permission envelope. */
20
+ async applyAsync(projectId, plan, permissions) {
21
+ return await this.host.applyAsync(requireProjectId(projectId), plan, permissions);
22
+ }
23
+ /*** Resume one durable APM operation for the selected project. */
24
+ async resumeAsync(projectId, operationId, permissions) {
25
+ return await this.host.resumeAsync(requireProjectId(projectId), requireOperationId(operationId), permissions);
26
+ }
27
+ /*** Verify one durable APM operation against fresh owner-aware evidence. */
28
+ async verifyAsync(projectId, operationId) {
29
+ return await this.host.verifyAsync(requireProjectId(projectId), requireOperationId(operationId));
30
+ }
31
+ }
32
+ const DASHBOARD_PLAN_POLICY = {
33
+ dependencyUpdates: 'safe',
34
+ repairInstallations: true,
35
+ repairProjections: true,
36
+ };
37
+ /*** Reject an empty project identity before invoking the host boundary. */
38
+ function requireProjectId(projectId) {
39
+ const value = projectId.trim();
40
+ if (value.length === 0)
41
+ throw new Error('A selected project is required.');
42
+ return value;
43
+ }
44
+ /*** Reject an empty durable operation identity before resume or verification. */
45
+ function requireOperationId(operationId) {
46
+ const value = operationId.trim();
47
+ if (value.length === 0)
48
+ throw new Error('An APM operation ID is required.');
49
+ return value;
50
+ }
51
+ //# sourceMappingURL=ProjectUpdateDashboardService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectUpdateDashboardService.js","sourceRoot":"","sources":["../../../../src/features/project-updates/application/ProjectUpdateDashboardService.ts"],"names":[],"mappings":"AAQA,oGAAoG;AACpG,MAAM,OAAO,6BAA6B;IAEX;IAD7B,qFAAqF;IACrF,YAA6B,IAA2B;QAA3B,SAAI,GAAJ,IAAI,CAAuB;IAAG,CAAC;IAE5D,8EAA8E;IAC9E,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,YAAuC;QAC3E,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;IAChF,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,YAAuC;QACxE,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;YAC5D,YAAY;YACZ,MAAM,EAAE,qBAAqB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,UAAU,CACd,SAAiB,EACjB,IAAa,EACb,WAAgC;QAEhC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACpF,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,WAAmB,EACnB,WAAgC;QAEhC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAChC,gBAAgB,CAAC,SAAS,CAAC,EAC3B,kBAAkB,CAAC,WAAW,CAAC,EAC/B,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,WAAmB;QACtD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAChC,gBAAgB,CAAC,SAAS,CAAC,EAC3B,kBAAkB,CAAC,WAAW,CAAC,CAChC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,qBAAqB,GAAuB;IAChD,iBAAiB,EAAE,MAAM;IACzB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,2EAA2E;AAC3E,SAAS,gBAAgB,CAAC,SAAiB;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iFAAiF;AACjF,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ProjectUpdateDashboardState } from '../../../types/project-update-dashboard';
2
+ /*** Create isolated Dashboard APM lifecycle state for one selected Studio project. */
3
+ export declare function createProjectUpdateDashboardState(projectId: string): ProjectUpdateDashboardState;
4
+ //# sourceMappingURL=createProjectUpdateDashboardState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProjectUpdateDashboardState.d.ts","sourceRoot":"","sources":["../../../../src/features/project-updates/application/createProjectUpdateDashboardState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAE3F,sFAAsF;AACtF,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,2BAA2B,CAiBhG"}
@@ -0,0 +1,20 @@
1
+ /*** Create isolated Dashboard APM lifecycle state for one selected Studio project. */
2
+ export function createProjectUpdateDashboardState(projectId) {
3
+ return {
4
+ projectId,
5
+ availability: 'refresh',
6
+ status: null,
7
+ plan: null,
8
+ execution: null,
9
+ verification: null,
10
+ operationId: '',
11
+ permissions: {
12
+ ownerCode: false,
13
+ lifecycleScripts: false,
14
+ externalEffects: false,
15
+ },
16
+ busy: null,
17
+ error: null,
18
+ };
19
+ }
20
+ //# sourceMappingURL=createProjectUpdateDashboardState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProjectUpdateDashboardState.js","sourceRoot":"","sources":["../../../../src/features/project-updates/application/createProjectUpdateDashboardState.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,MAAM,UAAU,iCAAiC,CAAC,SAAiB;IACjE,OAAO;QACL,SAAS;QACT,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,SAAS,EAAE,KAAK;YAChB,gBAAgB,EAAE,KAAK;YACvB,eAAe,EAAE,KAAK;SACvB;QACD,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ApmApplyPermissions, ApmPlanPolicyInput, ApmStatusAvailabilityMode } from '@ankhorage/apm/types';
2
+ interface ProjectUpdateHostPlanInput {
3
+ readonly availability: ApmStatusAvailabilityMode;
4
+ readonly policy: ApmPlanPolicyInput;
5
+ }
6
+ export interface ProjectUpdateHostPort {
7
+ readonly statusAsync: (projectId: string, availability: ApmStatusAvailabilityMode) => Promise<unknown>;
8
+ readonly planAsync: (projectId: string, input: ProjectUpdateHostPlanInput) => Promise<unknown>;
9
+ readonly applyAsync: (projectId: string, plan: unknown, permissions: ApmApplyPermissions) => Promise<unknown>;
10
+ readonly resumeAsync: (projectId: string, operationId: string, permissions: ApmApplyPermissions) => Promise<unknown>;
11
+ readonly verifyAsync: (projectId: string, operationId: string) => Promise<unknown>;
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=ProjectUpdateHostPort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectUpdateHostPort.d.ts","sourceRoot":"","sources":["../../../../../../src/features/project-updates/application/ports/outbound/ProjectUpdateHostPort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,UAAU,0BAA0B;IAClC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,yBAAyB,KACpC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/F,QAAQ,CAAC,UAAU,EAAE,CACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,mBAAmB,KAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,CACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,KAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACpF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ProjectUpdateHostPort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectUpdateHostPort.js","sourceRoot":"","sources":["../../../../../../src/features/project-updates/application/ports/outbound/ProjectUpdateHostPort.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ProjectUpdateDashboardEvent, ProjectUpdateDashboardState } from '../../../types/project-update-dashboard';
2
+ /*** Reduce Dashboard APM lifecycle events while invalidating reviewed plans on fresh evidence. */
3
+ export declare function reduceProjectUpdateDashboardState(state: ProjectUpdateDashboardState, event: ProjectUpdateDashboardEvent): ProjectUpdateDashboardState;
4
+ //# sourceMappingURL=reduceProjectUpdateDashboardState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduceProjectUpdateDashboardState.d.ts","sourceRoot":"","sources":["../../../../src/features/project-updates/application/reduceProjectUpdateDashboardState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AAGjD,kGAAkG;AAClG,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,2BAA2B,EAClC,KAAK,EAAE,2BAA2B,GACjC,2BAA2B,CAiD7B"}
@@ -0,0 +1,53 @@
1
+ import { createProjectUpdateDashboardState } from './createProjectUpdateDashboardState';
2
+ /*** Reduce Dashboard APM lifecycle events while invalidating reviewed plans on fresh evidence. */
3
+ export function reduceProjectUpdateDashboardState(state, event) {
4
+ switch (event.type) {
5
+ case 'project-changed':
6
+ return createProjectUpdateDashboardState(event.projectId);
7
+ case 'availability-changed':
8
+ return {
9
+ ...state,
10
+ availability: event.availability,
11
+ status: null,
12
+ plan: null,
13
+ error: null,
14
+ };
15
+ case 'request-started':
16
+ return {
17
+ ...state,
18
+ busy: event.action,
19
+ error: null,
20
+ ...(event.action === 'status' || event.action === 'plan' ? { plan: null } : {}),
21
+ };
22
+ case 'request-failed':
23
+ return { ...state, busy: null, error: event.message };
24
+ case 'status-received':
25
+ return { ...state, status: event.status, plan: null, busy: null, error: null };
26
+ case 'plan-received':
27
+ return {
28
+ ...state,
29
+ plan: event.plan,
30
+ execution: null,
31
+ verification: null,
32
+ busy: null,
33
+ error: null,
34
+ };
35
+ case 'permissions-changed':
36
+ return { ...state, permissions: event.permissions };
37
+ case 'execution-received':
38
+ return {
39
+ ...state,
40
+ plan: null,
41
+ execution: event.execution,
42
+ verification: null,
43
+ operationId: event.operationId ?? state.operationId,
44
+ busy: null,
45
+ error: null,
46
+ };
47
+ case 'verification-received':
48
+ return { ...state, verification: event.verification, busy: null, error: null };
49
+ case 'operation-id-changed':
50
+ return { ...state, operationId: event.operationId, verification: null };
51
+ }
52
+ }
53
+ //# sourceMappingURL=reduceProjectUpdateDashboardState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduceProjectUpdateDashboardState.js","sourceRoot":"","sources":["../../../../src/features/project-updates/application/reduceProjectUpdateDashboardState.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAExF,kGAAkG;AAClG,MAAM,UAAU,iCAAiC,CAC/C,KAAkC,EAClC,KAAkC;IAElC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,iBAAiB;YACpB,OAAO,iCAAiC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5D,KAAK,sBAAsB;YACzB,OAAO;gBACL,GAAG,KAAK;gBACR,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,KAAK,iBAAiB;YACpB,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,KAAK,CAAC,MAAM;gBAClB,KAAK,EAAE,IAAI;gBACX,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChF,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACxD,KAAK,iBAAiB;YACpB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACjF,KAAK,eAAe;YAClB,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,IAAI;gBAClB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,KAAK,qBAAqB;YACxB,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QACtD,KAAK,oBAAoB;YACvB,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;gBACnD,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,KAAK,uBAAuB;YAC1B,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACjF,KAAK,sBAAsB;YACzB,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC5E,CAAC;AACH,CAAC"}
@@ -0,0 +1,126 @@
1
+ import type { ProjectUpdateDashboardState } from '../../../types/project-update-dashboard';
2
+ /*** Resolve untrusted structured APM host results into the bounded Dashboard presentation model. */
3
+ export declare function resolveProjectUpdateDashboardPresentation(state: ProjectUpdateDashboardState): {
4
+ status: {
5
+ complete: boolean;
6
+ currency: string;
7
+ dependencies: {
8
+ name: string;
9
+ direct: boolean;
10
+ currentVersion: string;
11
+ availableVersion: string;
12
+ findings: {
13
+ code: string | undefined;
14
+ reason: string;
15
+ nextAction: string | undefined;
16
+ }[];
17
+ }[];
18
+ observations: {
19
+ owner: string;
20
+ projection: string;
21
+ migration: string;
22
+ reason: string | undefined;
23
+ nextAction: string | undefined;
24
+ }[];
25
+ findings: {
26
+ code: string | undefined;
27
+ reason: string;
28
+ nextAction: string | undefined;
29
+ }[];
30
+ diagnostics: {
31
+ code: string | undefined;
32
+ reason: string;
33
+ nextAction: string | undefined;
34
+ }[];
35
+ } | null;
36
+ plan: {
37
+ id: string;
38
+ complete: boolean;
39
+ hostRestartRequired: boolean;
40
+ canApply: boolean;
41
+ targets: {
42
+ name: string;
43
+ direct: boolean;
44
+ currentVersion: string;
45
+ targetVersion: string;
46
+ reason: string;
47
+ }[];
48
+ files: {
49
+ path: string;
50
+ kind: string;
51
+ }[];
52
+ steps: {
53
+ id: string;
54
+ kind: string;
55
+ reason: string;
56
+ evidence: readonly string[];
57
+ }[];
58
+ effects: {
59
+ kind: string;
60
+ state: string;
61
+ reason: string;
62
+ }[];
63
+ blockers: {
64
+ code: string;
65
+ reason: string;
66
+ nextAction: string | undefined;
67
+ }[];
68
+ findings: {
69
+ code: string | undefined;
70
+ reason: string;
71
+ nextAction: string | undefined;
72
+ }[];
73
+ diagnostics: {
74
+ code: string | undefined;
75
+ reason: string;
76
+ nextAction: string | undefined;
77
+ }[];
78
+ } | null;
79
+ execution: {
80
+ operationId: string;
81
+ status: string;
82
+ complete: boolean;
83
+ blockers: {
84
+ code: string | undefined;
85
+ reason: string;
86
+ nextAction: string | undefined;
87
+ }[];
88
+ diagnostics: {
89
+ code: string | undefined;
90
+ reason: string;
91
+ nextAction: string | undefined;
92
+ }[];
93
+ steps: {
94
+ id: string;
95
+ state: string;
96
+ attempts: number;
97
+ }[];
98
+ } | null;
99
+ verification: {
100
+ operationId: string;
101
+ verified: boolean;
102
+ checks: {
103
+ id: string;
104
+ kind: string;
105
+ status: string;
106
+ reason: string | undefined;
107
+ nextAction: string | undefined;
108
+ }[];
109
+ findings: {
110
+ code: string | undefined;
111
+ reason: string;
112
+ nextAction: string | undefined;
113
+ }[];
114
+ followUp: {
115
+ kind: string;
116
+ state: string;
117
+ reason: string;
118
+ }[];
119
+ diagnostics: {
120
+ code: string | undefined;
121
+ reason: string;
122
+ nextAction: string | undefined;
123
+ }[];
124
+ } | null;
125
+ };
126
+ //# sourceMappingURL=resolveProjectUpdateDashboardPresentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProjectUpdateDashboardPresentation.d.ts","sourceRoot":"","sources":["../../../../src/features/project-updates/application/resolveProjectUpdateDashboardPresentation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAE3F,oGAAoG;AACpG,wBAAgB,yCAAyC,CAAC,KAAK,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO3F"}