@detergent-software/atk 7.13.0-dev.1 → 7.13.0-dev.2

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 (68) hide show
  1. package/README.md +6 -5
  2. package/build/commands/promote.d.ts +10 -1
  3. package/build/commands/promote.d.ts.map +1 -1
  4. package/build/commands/promote.js +30 -31
  5. package/build/commands/promote.js.map +1 -1
  6. package/build/commands/release-notes.js +1 -1
  7. package/build/commands/release-notes.js.map +1 -1
  8. package/build/commands/unpublish.d.ts +10 -1
  9. package/build/commands/unpublish.d.ts.map +1 -1
  10. package/build/commands/unpublish.js +30 -19
  11. package/build/commands/unpublish.js.map +1 -1
  12. package/build/components/RegistryChangeSummary.d.ts +21 -0
  13. package/build/components/RegistryChangeSummary.d.ts.map +1 -0
  14. package/build/components/RegistryChangeSummary.js +24 -0
  15. package/build/components/RegistryChangeSummary.js.map +1 -0
  16. package/build/components/index.d.ts +1 -0
  17. package/build/components/index.d.ts.map +1 -1
  18. package/build/components/index.js +1 -0
  19. package/build/components/index.js.map +1 -1
  20. package/build/hooks/useRegistryChangeState.d.ts +57 -0
  21. package/build/hooks/useRegistryChangeState.d.ts.map +1 -0
  22. package/build/hooks/useRegistryChangeState.js +112 -0
  23. package/build/hooks/useRegistryChangeState.js.map +1 -0
  24. package/build/lib/api/index.d.ts +2 -2
  25. package/build/lib/api/index.d.ts.map +1 -1
  26. package/build/lib/api/index.js +1 -1
  27. package/build/lib/api/index.js.map +1 -1
  28. package/build/lib/api/sdk.gen.d.ts +21 -1
  29. package/build/lib/api/sdk.gen.d.ts.map +1 -1
  30. package/build/lib/api/sdk.gen.js +56 -0
  31. package/build/lib/api/sdk.gen.js.map +1 -1
  32. package/build/lib/api/types.gen.d.ts +387 -0
  33. package/build/lib/api/types.gen.d.ts.map +1 -1
  34. package/build/lib/api-client.d.ts +5 -0
  35. package/build/lib/api-client.d.ts.map +1 -1
  36. package/build/lib/api-client.js +31 -0
  37. package/build/lib/api-client.js.map +1 -1
  38. package/build/lib/auth.d.ts +1 -14
  39. package/build/lib/auth.d.ts.map +1 -1
  40. package/build/lib/auth.js +1 -30
  41. package/build/lib/auth.js.map +1 -1
  42. package/build/lib/diagnostics.d.ts.map +1 -1
  43. package/build/lib/diagnostics.js +1 -19
  44. package/build/lib/diagnostics.js.map +1 -1
  45. package/build/lib/publisher.d.ts.map +1 -1
  46. package/build/lib/publisher.js +1 -7
  47. package/build/lib/publisher.js.map +1 -1
  48. package/build/lib/registry-mutate.d.ts +23 -64
  49. package/build/lib/registry-mutate.d.ts.map +1 -1
  50. package/build/lib/registry-mutate.js +50 -409
  51. package/build/lib/registry-mutate.js.map +1 -1
  52. package/build/lib/registry-repo.d.ts +2 -3
  53. package/build/lib/registry-repo.d.ts.map +1 -1
  54. package/build/lib/registry-repo.js +2 -3
  55. package/build/lib/registry-repo.js.map +1 -1
  56. package/build/lib/release-notes.d.ts +18 -14
  57. package/build/lib/release-notes.d.ts.map +1 -1
  58. package/build/lib/release-notes.js +10 -42
  59. package/build/lib/release-notes.js.map +1 -1
  60. package/package.json +1 -1
  61. package/build/hooks/usePromoteState.d.ts +0 -51
  62. package/build/hooks/usePromoteState.d.ts.map +0 -1
  63. package/build/hooks/usePromoteState.js +0 -139
  64. package/build/hooks/usePromoteState.js.map +0 -1
  65. package/build/hooks/useUnpublishState.d.ts +0 -52
  66. package/build/hooks/useUnpublishState.d.ts.map +0 -1
  67. package/build/hooks/useUnpublishState.js +0 -140
  68. package/build/hooks/useUnpublishState.js.map +0 -1
@@ -1,17 +1,12 @@
1
1
  import { eq as semverEq, gt as semverGt, prerelease as semverPrerelease, rcompare as semverRcompare, valid as semverValid, } from 'semver';
2
- import { getGitHubToken } from './auth.js';
3
- import { fetchWithRetry } from './fetch-retry.js';
2
+ import { getApiClient, unwrap } from './api-client.js';
3
+ import { getCliReleases } from './api/sdk.gen.js';
4
4
  import { CLI_VERSION, isPreRelease } from './version.js';
5
5
  /** Default number of releases shown in list mode before `--all` is needed. */
6
6
  export const DEFAULT_RELEASE_LIMIT = 15;
7
7
  /**
8
- * The CLI's own source repository (distinct from the registry repo).
9
- * GitHub Releases for this repo are the source of the `release-notes` command.
10
- */
11
- const DEFAULT_CLI_REPO = 'EmergentSoftware/agentic-toolkit-cli';
12
- const RELEASES_URL = `https://api.github.com/repos/${DEFAULT_CLI_REPO}/releases?per_page=100`;
13
- /**
14
- * Fetch GitHub Releases for the CLI repo and return release notes for browsing.
8
+ * Fetch the CLI's releases from the ATK API (`GET /cli/releases`) and return
9
+ * release notes for browsing.
15
10
  *
16
11
  * Without a `version`, returns the release history (newest-first), channel-filtered
17
12
  * and capped at a limit, with each entry flagged for whether it is the installed
@@ -26,14 +21,9 @@ const RELEASES_URL = `https://api.github.com/repos/${DEFAULT_CLI_REPO}/releases?
26
21
  * command can surface them via `ErrorView`.
27
22
  */
28
23
  export async function getReleaseNotes(options = {}, progress) {
29
- progress?.('Authenticating...');
30
- const token = await getGitHubToken();
31
24
  progress?.('Fetching releases...');
32
- const response = await fetchWithRetry(RELEASES_URL, { headers: buildGitHubHeaders(token) });
33
- if (!response.ok) {
34
- throw new Error(httpErrorMessage(response.status, 'CLI releases'));
35
- }
36
- const raw = (await response.json());
25
+ const client = await getApiClient();
26
+ const raw = unwrap(await getCliReleases({ client }), 'CLI releases').releases;
37
27
  // A specific version lookup ignores the channel filter so you can always read
38
28
  // the notes for any published version (including pre-releases).
39
29
  if (options.version) {
@@ -58,7 +48,7 @@ export async function getReleaseNotes(options = {}, progress) {
58
48
  };
59
49
  }
60
50
  /**
61
- * Pure selection logic: from raw GitHub releases, return valid releases ordered
51
+ * Pure selection logic: from raw releases, return valid releases ordered
62
52
  * newest-first, optionally including pre-releases, with each entry flagged for
63
53
  * whether it is the installed version or newer than it. Exported separately so
64
54
  * channel filtering, version comparison, and flagging are unit-testable without
@@ -66,14 +56,14 @@ export async function getReleaseNotes(options = {}, progress) {
66
56
  *
67
57
  * - Tags are normalized by stripping a leading `v`; entries that aren't valid
68
58
  * semver are skipped.
69
- * - A release's channel is `dev` when GitHub's `prerelease` flag is set OR the
59
+ * - A release's channel is `dev` when its `prerelease` flag is set OR the
70
60
  * version carries a semver pre-release component; otherwise `latest`.
71
61
  * - When `includePrerelease` is false, `dev` releases are dropped.
72
62
  */
73
63
  export function selectReleaseNotes(raw, currentVersion, includePrerelease) {
74
64
  const notes = [];
75
65
  for (const entry of raw) {
76
- const version = normalizeTag(entry.tag_name);
66
+ const version = normalizeTag(entry.version ?? entry.tag);
77
67
  if (!version || !semverValid(version)) {
78
68
  continue;
79
69
  }
@@ -88,35 +78,13 @@ export function selectReleaseNotes(raw, currentVersion, includePrerelease) {
88
78
  installed: semverValid(currentVersion) ? semverEq(version, currentVersion) : false,
89
79
  newer: semverValid(currentVersion) ? semverGt(version, currentVersion) : false,
90
80
  prerelease,
91
- publishedAt: entry.published_at ?? null,
81
+ publishedAt: entry.publishedAt ?? null,
92
82
  version,
93
83
  });
94
84
  }
95
85
  notes.sort((a, b) => semverRcompare(a.version, b.version));
96
86
  return notes;
97
87
  }
98
- /** Standard GitHub REST API headers for the releases request. */
99
- function buildGitHubHeaders(token) {
100
- return {
101
- Accept: 'application/vnd.github+json',
102
- Authorization: `Bearer ${token}`,
103
- 'X-GitHub-Api-Version': '2022-11-28',
104
- };
105
- }
106
- /** User-friendly message for a failed GitHub API response. */
107
- function httpErrorMessage(status, resource) {
108
- switch (status) {
109
- case 401:
110
- case 403:
111
- return 'Authentication failed. Check your GitHub token or run `gh auth login`.';
112
- case 404:
113
- return `File not found at ${resource}.`;
114
- case 429:
115
- return 'GitHub API rate limit exceeded. Try again later.';
116
- default:
117
- return `Failed to fetch ${resource}: HTTP ${status}`;
118
- }
119
- }
120
88
  /** Strip a single leading `v` from a release tag, returning undefined when empty. */
121
89
  function normalizeTag(tagName) {
122
90
  if (!tagName)
@@ -1 +1 @@
1
- {"version":3,"file":"release-notes.js","sourceRoot":"","sources":["../../src/lib/release-notes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release-notes.js","sourceRoot":"","sources":["../../src/lib/release-notes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@detergent-software/atk",
3
- "version": "7.13.0-dev.1",
3
+ "version": "7.13.0-dev.2",
4
4
  "description": "Agentic Tool Kit — CLI for managing AI coding tool assets.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,51 +0,0 @@
1
- import { type PromotePlan, type RegistryMutateResult } from '../lib/registry-mutate.js';
2
- export type PromoteAction = {
3
- command?: string;
4
- hint?: string;
5
- message: string;
6
- type: 'ERROR';
7
- } | {
8
- message: string;
9
- type: 'PROGRESS';
10
- } | {
11
- plan: PromotePlan;
12
- token: string;
13
- type: 'PLAN_READY';
14
- } | {
15
- result: RegistryMutateResult;
16
- type: 'DONE';
17
- } | {
18
- type: 'CANCEL';
19
- } | {
20
- type: 'CONFIRM';
21
- } | {
22
- type: 'SET_CONFIRM_VALUE';
23
- value: string;
24
- } | {
25
- type: 'SUBMIT_CONFIRM';
26
- };
27
- export interface PromoteFlags {
28
- dryRun: boolean;
29
- name: string;
30
- org: string;
31
- projectRoot?: string;
32
- refresh?: boolean;
33
- yes?: boolean;
34
- }
35
- export type PromotePhase = 'confirming' | 'done' | 'dry-run-result' | 'error' | 'executing' | 'loading-registry';
36
- export interface PromoteState {
37
- confirmValue: string;
38
- errorCommand?: string;
39
- errorHint?: string;
40
- errorMessage: string;
41
- flags: PromoteFlags;
42
- phase: PromotePhase;
43
- plan: PromotePlan | undefined;
44
- progressMessage: string;
45
- result: RegistryMutateResult | undefined;
46
- token: string | undefined;
47
- }
48
- export declare function createInitialState(flags: PromoteFlags): PromoteState;
49
- export declare function promoteReducer(state: PromoteState, action: PromoteAction): PromoteState;
50
- export declare function usePromoteState(flags: PromoteFlags): readonly [PromoteState, React.Dispatch<PromoteAction>];
51
- //# sourceMappingURL=usePromoteState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePromoteState.d.ts","sourceRoot":"","sources":["../../src/hooks/usePromoteState.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAOnC,MAAM,MAAM,aAAa,GACrB;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACnE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GACxD;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,MAAM,GAAG,gBAAgB,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAEjH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAWpE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY,CA+CvF;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAiF3G"}
@@ -1,139 +0,0 @@
1
- import { useEffect, useReducer } from 'react';
2
- import { getGitHubToken } from '../lib/auth.js';
3
- import { findProjectRoot } from '../lib/paths.js';
4
- import { buildPromotePlan, executePromote, mapRegistryMutateError, } from '../lib/registry-mutate.js';
5
- import { fetchRegistry } from '../lib/registry.js';
6
- // ---------------------------------------------------------------------------
7
- // Reducer
8
- // ---------------------------------------------------------------------------
9
- export function createInitialState(flags) {
10
- return {
11
- confirmValue: '',
12
- errorMessage: '',
13
- flags,
14
- phase: 'loading-registry',
15
- plan: undefined,
16
- progressMessage: '',
17
- result: undefined,
18
- token: undefined,
19
- };
20
- }
21
- export function promoteReducer(state, action) {
22
- switch (action.type) {
23
- case 'CANCEL':
24
- if (state.phase !== 'confirming')
25
- return state;
26
- return { ...state, errorMessage: 'Promote cancelled.', phase: 'error' };
27
- case 'CONFIRM':
28
- if (state.phase !== 'confirming')
29
- return state;
30
- return { ...state, phase: 'executing' };
31
- case 'DONE':
32
- return { ...state, phase: 'done', result: action.result };
33
- case 'ERROR':
34
- return {
35
- ...state,
36
- errorCommand: action.command,
37
- errorHint: action.hint,
38
- errorMessage: action.message,
39
- phase: 'error',
40
- };
41
- case 'PLAN_READY': {
42
- const nextPhase = state.flags.dryRun ? 'dry-run-result' : 'confirming';
43
- return { ...state, phase: nextPhase, plan: action.plan, token: action.token };
44
- }
45
- case 'PROGRESS':
46
- return { ...state, progressMessage: action.message };
47
- case 'SET_CONFIRM_VALUE':
48
- return { ...state, confirmValue: action.value };
49
- case 'SUBMIT_CONFIRM': {
50
- const trimmed = state.confirmValue.trim().toLowerCase();
51
- if (trimmed === 'y' || trimmed === 'yes') {
52
- return { ...state, phase: 'executing' };
53
- }
54
- if (trimmed === 'n' || trimmed === 'no') {
55
- return { ...state, errorMessage: 'Promote cancelled.', phase: 'error' };
56
- }
57
- return state;
58
- }
59
- default:
60
- return state;
61
- }
62
- }
63
- // ---------------------------------------------------------------------------
64
- // Hook
65
- // ---------------------------------------------------------------------------
66
- export function usePromoteState(flags) {
67
- const [state, dispatch] = useReducer(promoteReducer, undefined, () => createInitialState(flags));
68
- // --- Phase: loading-registry → build plan ---
69
- useEffect(() => {
70
- if (state.phase !== 'loading-registry')
71
- return;
72
- let cancelled = false;
73
- const run = async () => {
74
- findProjectRoot(state.flags.projectRoot);
75
- const token = await getGitHubToken();
76
- if (cancelled)
77
- return;
78
- const registry = await fetchRegistry({ force: state.flags.refresh });
79
- if (cancelled)
80
- return;
81
- const plan = buildPromotePlan(registry, state.flags.name, state.flags.org);
82
- if (cancelled)
83
- return;
84
- dispatch({ plan, token, type: 'PLAN_READY' });
85
- };
86
- run().catch((err) => {
87
- if (!cancelled) {
88
- dispatch({
89
- command: typeof err?.command === 'string'
90
- ? err.command
91
- : undefined,
92
- hint: typeof err?.hint === 'string' ? err.hint : undefined,
93
- message: mapRegistryMutateError(err),
94
- type: 'ERROR',
95
- });
96
- }
97
- });
98
- return () => {
99
- cancelled = true;
100
- };
101
- // eslint-disable-next-line react-hooks/exhaustive-deps
102
- }, [state.phase]);
103
- // --- Phase: executing ---
104
- useEffect(() => {
105
- if (state.phase !== 'executing')
106
- return;
107
- if (!state.plan || !state.token)
108
- return;
109
- let cancelled = false;
110
- const run = async () => {
111
- const progress = (msg) => {
112
- if (!cancelled)
113
- dispatch({ message: msg, type: 'PROGRESS' });
114
- };
115
- const result = await executePromote(state.plan, state.token, progress);
116
- if (cancelled)
117
- return;
118
- dispatch({ result, type: 'DONE' });
119
- };
120
- run().catch((err) => {
121
- if (!cancelled) {
122
- dispatch({
123
- command: typeof err?.command === 'string'
124
- ? err.command
125
- : undefined,
126
- hint: typeof err?.hint === 'string' ? err.hint : undefined,
127
- message: mapRegistryMutateError(err),
128
- type: 'ERROR',
129
- });
130
- }
131
- });
132
- return () => {
133
- cancelled = true;
134
- };
135
- // eslint-disable-next-line react-hooks/exhaustive-deps
136
- }, [state.phase]);
137
- return [state, dispatch];
138
- }
139
- //# sourceMappingURL=usePromoteState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePromoteState.js","sourceRoot":"","sources":["../../src/hooks/usePromoteState.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { type RegistryMutateResult, type UnpublishPlan } from '../lib/registry-mutate.js';
2
- export type UnpublishAction = {
3
- command?: string;
4
- hint?: string;
5
- message: string;
6
- type: 'ERROR';
7
- } | {
8
- message: string;
9
- type: 'PROGRESS';
10
- } | {
11
- plan: UnpublishPlan;
12
- token: string;
13
- type: 'PLAN_READY';
14
- } | {
15
- result: RegistryMutateResult;
16
- type: 'DONE';
17
- } | {
18
- type: 'CANCEL';
19
- } | {
20
- type: 'CONFIRM';
21
- } | {
22
- type: 'SET_CONFIRM_VALUE';
23
- value: string;
24
- } | {
25
- type: 'SUBMIT_CONFIRM';
26
- };
27
- export interface UnpublishFlags {
28
- dryRun: boolean;
29
- name: string;
30
- org?: string;
31
- projectRoot?: string;
32
- refresh?: boolean;
33
- version?: string;
34
- yes?: boolean;
35
- }
36
- export type UnpublishPhase = 'confirming' | 'done' | 'dry-run-result' | 'error' | 'executing' | 'loading-registry';
37
- export interface UnpublishState {
38
- confirmValue: string;
39
- errorCommand?: string;
40
- errorHint?: string;
41
- errorMessage: string;
42
- flags: UnpublishFlags;
43
- phase: UnpublishPhase;
44
- plan: undefined | UnpublishPlan;
45
- progressMessage: string;
46
- result: RegistryMutateResult | undefined;
47
- token: string | undefined;
48
- }
49
- export declare function createInitialState(flags: UnpublishFlags): UnpublishState;
50
- export declare function unpublishReducer(state: UnpublishState, action: UnpublishAction): UnpublishState;
51
- export declare function useUnpublishState(flags: UnpublishFlags): readonly [UnpublishState, React.Dispatch<UnpublishAction>];
52
- //# sourceMappingURL=useUnpublishState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUnpublishState.d.ts","sourceRoot":"","sources":["../../src/hooks/useUnpublishState.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAOnC,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACnE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,MAAM,GAAG,gBAAgB,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAEnH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAWxE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CA+C/F;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAkFnH"}
@@ -1,140 +0,0 @@
1
- import { useEffect, useReducer } from 'react';
2
- import { getGitHubToken } from '../lib/auth.js';
3
- import { findProjectRoot } from '../lib/paths.js';
4
- import { buildUnpublishPlan, executeUnpublish, mapRegistryMutateError, } from '../lib/registry-mutate.js';
5
- import { fetchRegistry } from '../lib/registry.js';
6
- // ---------------------------------------------------------------------------
7
- // Reducer
8
- // ---------------------------------------------------------------------------
9
- export function createInitialState(flags) {
10
- return {
11
- confirmValue: '',
12
- errorMessage: '',
13
- flags,
14
- phase: 'loading-registry',
15
- plan: undefined,
16
- progressMessage: '',
17
- result: undefined,
18
- token: undefined,
19
- };
20
- }
21
- export function unpublishReducer(state, action) {
22
- switch (action.type) {
23
- case 'CANCEL':
24
- if (state.phase !== 'confirming')
25
- return state;
26
- return { ...state, errorMessage: 'Unpublish cancelled.', phase: 'error' };
27
- case 'CONFIRM':
28
- if (state.phase !== 'confirming')
29
- return state;
30
- return { ...state, phase: 'executing' };
31
- case 'DONE':
32
- return { ...state, phase: 'done', result: action.result };
33
- case 'ERROR':
34
- return {
35
- ...state,
36
- errorCommand: action.command,
37
- errorHint: action.hint,
38
- errorMessage: action.message,
39
- phase: 'error',
40
- };
41
- case 'PLAN_READY': {
42
- const nextPhase = state.flags.dryRun ? 'dry-run-result' : 'confirming';
43
- return { ...state, phase: nextPhase, plan: action.plan, token: action.token };
44
- }
45
- case 'PROGRESS':
46
- return { ...state, progressMessage: action.message };
47
- case 'SET_CONFIRM_VALUE':
48
- return { ...state, confirmValue: action.value };
49
- case 'SUBMIT_CONFIRM': {
50
- const trimmed = state.confirmValue.trim().toLowerCase();
51
- if (trimmed === 'y' || trimmed === 'yes') {
52
- return { ...state, phase: 'executing' };
53
- }
54
- if (trimmed === 'n' || trimmed === 'no') {
55
- return { ...state, errorMessage: 'Unpublish cancelled.', phase: 'error' };
56
- }
57
- return state;
58
- }
59
- default:
60
- return state;
61
- }
62
- }
63
- // ---------------------------------------------------------------------------
64
- // Hook
65
- // ---------------------------------------------------------------------------
66
- export function useUnpublishState(flags) {
67
- const [state, dispatch] = useReducer(unpublishReducer, undefined, () => createInitialState(flags));
68
- // --- Phase: loading-registry → build plan ---
69
- useEffect(() => {
70
- if (state.phase !== 'loading-registry')
71
- return;
72
- let cancelled = false;
73
- const run = async () => {
74
- // Resolve project root to keep setup-gateway behavior consistent with publish.
75
- findProjectRoot(state.flags.projectRoot);
76
- const token = await getGitHubToken();
77
- if (cancelled)
78
- return;
79
- const registry = await fetchRegistry({ force: state.flags.refresh });
80
- if (cancelled)
81
- return;
82
- const plan = buildUnpublishPlan(registry, state.flags.name, state.flags.org, state.flags.version);
83
- if (cancelled)
84
- return;
85
- dispatch({ plan, token, type: 'PLAN_READY' });
86
- };
87
- run().catch((err) => {
88
- if (!cancelled) {
89
- dispatch({
90
- command: typeof err?.command === 'string'
91
- ? err.command
92
- : undefined,
93
- hint: typeof err?.hint === 'string' ? err.hint : undefined,
94
- message: mapRegistryMutateError(err),
95
- type: 'ERROR',
96
- });
97
- }
98
- });
99
- return () => {
100
- cancelled = true;
101
- };
102
- // eslint-disable-next-line react-hooks/exhaustive-deps
103
- }, [state.phase]);
104
- // --- Phase: executing ---
105
- useEffect(() => {
106
- if (state.phase !== 'executing')
107
- return;
108
- if (!state.plan || !state.token)
109
- return;
110
- let cancelled = false;
111
- const run = async () => {
112
- const progress = (msg) => {
113
- if (!cancelled)
114
- dispatch({ message: msg, type: 'PROGRESS' });
115
- };
116
- const result = await executeUnpublish(state.plan, state.token, progress);
117
- if (cancelled)
118
- return;
119
- dispatch({ result, type: 'DONE' });
120
- };
121
- run().catch((err) => {
122
- if (!cancelled) {
123
- dispatch({
124
- command: typeof err?.command === 'string'
125
- ? err.command
126
- : undefined,
127
- hint: typeof err?.hint === 'string' ? err.hint : undefined,
128
- message: mapRegistryMutateError(err),
129
- type: 'ERROR',
130
- });
131
- }
132
- });
133
- return () => {
134
- cancelled = true;
135
- };
136
- // eslint-disable-next-line react-hooks/exhaustive-deps
137
- }, [state.phase]);
138
- return [state, dispatch];
139
- }
140
- //# sourceMappingURL=useUnpublishState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUnpublishState.js","sourceRoot":"","sources":["../../src/hooks/useUnpublishState.ts"],"names":[],"mappings":"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"}