@detergent-software/atk 3.0.0 → 5.0.0-dev.1
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.
- package/README.md +361 -0
- package/build/commands/_app.d.ts.map +1 -1
- package/build/commands/_app.js +23 -3
- package/build/commands/_app.js.map +1 -1
- package/build/commands/audit.d.ts.map +1 -1
- package/build/commands/audit.js +76 -37
- package/build/commands/audit.js.map +1 -1
- package/build/commands/browse.d.ts.map +1 -1
- package/build/commands/browse.js +126 -154
- package/build/commands/browse.js.map +1 -1
- package/build/commands/cache.d.ts.map +1 -1
- package/build/commands/cache.js +13 -15
- package/build/commands/cache.js.map +1 -1
- package/build/commands/config.d.ts +1 -1
- package/build/commands/config.d.ts.map +1 -1
- package/build/commands/config.js +7 -3
- package/build/commands/config.js.map +1 -1
- package/build/commands/diff.d.ts.map +1 -1
- package/build/commands/diff.js +4 -117
- package/build/commands/diff.js.map +1 -1
- package/build/commands/freeze.d.ts +1 -2
- package/build/commands/freeze.d.ts.map +1 -1
- package/build/commands/freeze.js +17 -37
- package/build/commands/freeze.js.map +1 -1
- package/build/commands/info.d.ts +1 -2
- package/build/commands/info.d.ts.map +1 -1
- package/build/commands/info.js +43 -38
- package/build/commands/info.js.map +1 -1
- package/build/commands/init.d.ts.map +1 -1
- package/build/commands/init.js +41 -414
- package/build/commands/init.js.map +1 -1
- package/build/commands/install.d.ts.map +1 -1
- package/build/commands/install.js +79 -72
- package/build/commands/install.js.map +1 -1
- package/build/commands/list.d.ts +2 -2
- package/build/commands/list.d.ts.map +1 -1
- package/build/commands/list.js +138 -27
- package/build/commands/list.js.map +1 -1
- package/build/commands/outdated.d.ts.map +1 -1
- package/build/commands/outdated.js +20 -10
- package/build/commands/outdated.js.map +1 -1
- package/build/commands/pin.d.ts +1 -2
- package/build/commands/pin.d.ts.map +1 -1
- package/build/commands/pin.js +44 -47
- package/build/commands/pin.js.map +1 -1
- package/build/commands/prune.d.ts.map +1 -1
- package/build/commands/prune.js +76 -151
- package/build/commands/prune.js.map +1 -1
- package/build/commands/publish.d.ts +4 -1
- package/build/commands/publish.d.ts.map +1 -1
- package/build/commands/publish.js +139 -388
- package/build/commands/publish.js.map +1 -1
- package/build/commands/search.d.ts.map +1 -1
- package/build/commands/search.js +14 -19
- package/build/commands/search.js.map +1 -1
- package/build/commands/setup.d.ts +1 -1
- package/build/commands/setup.d.ts.map +1 -1
- package/build/commands/setup.js +48 -253
- package/build/commands/setup.js.map +1 -1
- package/build/commands/sync.d.ts.map +1 -1
- package/build/commands/sync.js +43 -169
- package/build/commands/sync.js.map +1 -1
- package/build/commands/thaw.d.ts +1 -2
- package/build/commands/thaw.d.ts.map +1 -1
- package/build/commands/thaw.js +19 -37
- package/build/commands/thaw.js.map +1 -1
- package/build/commands/uninstall.d.ts.map +1 -1
- package/build/commands/uninstall.js +106 -221
- package/build/commands/uninstall.js.map +1 -1
- package/build/commands/unpin.d.ts +1 -2
- package/build/commands/unpin.d.ts.map +1 -1
- package/build/commands/unpin.js +23 -38
- package/build/commands/unpin.js.map +1 -1
- package/build/commands/update.d.ts.map +1 -1
- package/build/commands/update.js +57 -54
- package/build/commands/update.js.map +1 -1
- package/build/commands/why.d.ts +1 -1
- package/build/commands/why.d.ts.map +1 -1
- package/build/commands/why.js +14 -6
- package/build/commands/why.js.map +1 -1
- package/build/components/AssetDetail.d.ts +1 -3
- package/build/components/AssetDetail.d.ts.map +1 -1
- package/build/components/AssetDetail.js +22 -21
- package/build/components/AssetDetail.js.map +1 -1
- package/build/components/AssetTable.d.ts +5 -2
- package/build/components/AssetTable.d.ts.map +1 -1
- package/build/components/AssetTable.js +37 -40
- package/build/components/AssetTable.js.map +1 -1
- package/build/components/AssetVersionLine.d.ts +27 -0
- package/build/components/AssetVersionLine.d.ts.map +1 -0
- package/build/components/AssetVersionLine.js +10 -0
- package/build/components/AssetVersionLine.js.map +1 -0
- package/build/components/BrowseExpandedBundle.d.ts +10 -1
- package/build/components/BrowseExpandedBundle.d.ts.map +1 -1
- package/build/components/BrowseExpandedBundle.js +28 -3
- package/build/components/BrowseExpandedBundle.js.map +1 -1
- package/build/components/BrowseExpandedRow.d.ts +9 -1
- package/build/components/BrowseExpandedRow.d.ts.map +1 -1
- package/build/components/BrowseExpandedRow.js +35 -3
- package/build/components/BrowseExpandedRow.js.map +1 -1
- package/build/components/BrowseList.d.ts +5 -1
- package/build/components/BrowseList.d.ts.map +1 -1
- package/build/components/BrowseList.js +57 -47
- package/build/components/BrowseList.js.map +1 -1
- package/build/components/BundleDetail.d.ts +2 -1
- package/build/components/BundleDetail.d.ts.map +1 -1
- package/build/components/BundleDetail.js +3 -2
- package/build/components/BundleDetail.js.map +1 -1
- package/build/components/DiffView.d.ts +0 -2
- package/build/components/DiffView.d.ts.map +1 -1
- package/build/components/DiffView.js +11 -5
- package/build/components/DiffView.js.map +1 -1
- package/build/components/DryRunBanner.d.ts +3 -3
- package/build/components/DryRunBanner.d.ts.map +1 -1
- package/build/components/DryRunBanner.js +2 -2
- package/build/components/DryRunBanner.js.map +1 -1
- package/build/components/FilterBar.d.ts +10 -3
- package/build/components/FilterBar.d.ts.map +1 -1
- package/build/components/FilterBar.js +4 -4
- package/build/components/FilterBar.js.map +1 -1
- package/build/components/FrozenSkippedHint.d.ts +11 -0
- package/build/components/FrozenSkippedHint.d.ts.map +1 -0
- package/build/components/FrozenSkippedHint.js +12 -0
- package/build/components/FrozenSkippedHint.js.map +1 -0
- package/build/components/HelpBar.d.ts.map +1 -1
- package/build/components/HelpBar.js +3 -3
- package/build/components/HelpBar.js.map +1 -1
- package/build/components/InitSuccess.d.ts +5 -0
- package/build/components/InitSuccess.d.ts.map +1 -0
- package/build/components/InitSuccess.js +20 -0
- package/build/components/InitSuccess.js.map +1 -0
- package/build/components/InstallSummary.d.ts +3 -3
- package/build/components/InstallSummary.d.ts.map +1 -1
- package/build/components/InstallSummary.js +2 -2
- package/build/components/InstallSummary.js.map +1 -1
- package/build/components/Link.d.ts +7 -0
- package/build/components/Link.d.ts.map +1 -0
- package/build/components/Link.js +6 -0
- package/build/components/Link.js.map +1 -0
- package/build/components/ListActionBar.d.ts +11 -0
- package/build/components/ListActionBar.d.ts.map +1 -0
- package/build/components/ListActionBar.js +30 -0
- package/build/components/ListActionBar.js.map +1 -0
- package/build/components/ListBrowseList.d.ts +27 -0
- package/build/components/ListBrowseList.d.ts.map +1 -0
- package/build/components/ListBrowseList.js +57 -0
- package/build/components/ListBrowseList.js.map +1 -0
- package/build/components/ListExpandedRow.d.ts +38 -0
- package/build/components/ListExpandedRow.d.ts.map +1 -0
- package/build/components/ListExpandedRow.js +49 -0
- package/build/components/ListExpandedRow.js.map +1 -0
- package/build/components/ListHelpBar.d.ts +19 -0
- package/build/components/ListHelpBar.d.ts.map +1 -0
- package/build/components/ListHelpBar.js +11 -0
- package/build/components/ListHelpBar.js.map +1 -0
- package/build/components/OrphanListItem.d.ts +15 -0
- package/build/components/OrphanListItem.d.ts.map +1 -0
- package/build/components/OrphanListItem.js +6 -0
- package/build/components/OrphanListItem.js.map +1 -0
- package/build/components/PromptField.d.ts +19 -0
- package/build/components/PromptField.d.ts.map +1 -0
- package/build/components/PromptField.js +7 -0
- package/build/components/PromptField.js.map +1 -0
- package/build/components/SkippedAssetSection.d.ts +35 -0
- package/build/components/SkippedAssetSection.d.ts.map +1 -0
- package/build/components/SkippedAssetSection.js +15 -0
- package/build/components/SkippedAssetSection.js.map +1 -0
- package/build/components/StatusBadge.d.ts +1 -1
- package/build/components/StatusBadge.d.ts.map +1 -1
- package/build/components/StatusBadge.js +4 -0
- package/build/components/StatusBadge.js.map +1 -1
- package/build/components/SyncAllInSync.d.ts +14 -0
- package/build/components/SyncAllInSync.d.ts.map +1 -0
- package/build/components/SyncAllInSync.js +10 -0
- package/build/components/SyncAllInSync.js.map +1 -0
- package/build/components/SyncDriftedList.d.ts +24 -0
- package/build/components/SyncDriftedList.d.ts.map +1 -0
- package/build/components/SyncDriftedList.js +17 -0
- package/build/components/SyncDriftedList.js.map +1 -0
- package/build/components/SyncNoAssets.d.ts +12 -0
- package/build/components/SyncNoAssets.d.ts.map +1 -0
- package/build/components/SyncNoAssets.js +9 -0
- package/build/components/SyncNoAssets.js.map +1 -0
- package/build/components/index.d.ts +16 -2
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +16 -2
- package/build/components/index.js.map +1 -1
- package/build/hooks/useBrowseState.d.ts +44 -1
- package/build/hooks/useBrowseState.d.ts.map +1 -1
- package/build/hooks/useBrowseState.js +148 -13
- package/build/hooks/useBrowseState.js.map +1 -1
- package/build/hooks/useConfirmation.d.ts +18 -0
- package/build/hooks/useConfirmation.d.ts.map +1 -0
- package/build/hooks/useConfirmation.js +56 -0
- package/build/hooks/useConfirmation.js.map +1 -0
- package/build/hooks/useInitState.d.ts +109 -0
- package/build/hooks/useInitState.d.ts.map +1 -0
- package/build/hooks/useInitState.js +474 -0
- package/build/hooks/useInitState.js.map +1 -0
- package/build/hooks/useListActions.d.ts +15 -0
- package/build/hooks/useListActions.d.ts.map +1 -0
- package/build/hooks/useListActions.js +155 -0
- package/build/hooks/useListActions.js.map +1 -0
- package/build/hooks/useListState.d.ts +151 -0
- package/build/hooks/useListState.d.ts.map +1 -0
- package/build/hooks/useListState.js +448 -0
- package/build/hooks/useListState.js.map +1 -0
- package/build/hooks/usePruneState.d.ts +76 -0
- package/build/hooks/usePruneState.d.ts.map +1 -0
- package/build/hooks/usePruneState.js +252 -0
- package/build/hooks/usePruneState.js.map +1 -0
- package/build/hooks/usePublishState.d.ts +147 -0
- package/build/hooks/usePublishState.d.ts.map +1 -0
- package/build/hooks/usePublishState.js +916 -0
- package/build/hooks/usePublishState.js.map +1 -0
- package/build/hooks/useSetupState.d.ts +57 -0
- package/build/hooks/useSetupState.d.ts.map +1 -0
- package/build/hooks/useSetupState.js +236 -0
- package/build/hooks/useSetupState.js.map +1 -0
- package/build/hooks/useUninstallState.d.ts +102 -0
- package/build/hooks/useUninstallState.d.ts.map +1 -0
- package/build/hooks/useUninstallState.js +342 -0
- package/build/hooks/useUninstallState.js.map +1 -0
- package/build/lib/adapter.d.ts +21 -0
- package/build/lib/adapter.d.ts.map +1 -1
- package/build/lib/adapter.js +59 -1
- package/build/lib/adapter.js.map +1 -1
- package/build/lib/checksum.d.ts +39 -0
- package/build/lib/checksum.d.ts.map +1 -1
- package/build/lib/checksum.js +98 -13
- package/build/lib/checksum.js.map +1 -1
- package/build/lib/config.d.ts +38 -18
- package/build/lib/config.d.ts.map +1 -1
- package/build/lib/config.js +103 -55
- package/build/lib/config.js.map +1 -1
- package/build/lib/detector.d.ts +2 -11
- package/build/lib/detector.d.ts.map +1 -1
- package/build/lib/detector.js +2 -64
- package/build/lib/detector.js.map +1 -1
- package/build/lib/diagnostics.d.ts +7 -0
- package/build/lib/diagnostics.d.ts.map +1 -1
- package/build/lib/diagnostics.js +54 -34
- package/build/lib/diagnostics.js.map +1 -1
- package/build/lib/diff-command.d.ts +40 -0
- package/build/lib/diff-command.d.ts.map +1 -0
- package/build/lib/diff-command.js +145 -0
- package/build/lib/diff-command.js.map +1 -0
- package/build/lib/diff.d.ts +7 -0
- package/build/lib/diff.d.ts.map +1 -1
- package/build/lib/diff.js +15 -10
- package/build/lib/diff.js.map +1 -1
- package/build/lib/format.d.ts +6 -0
- package/build/lib/format.d.ts.map +1 -0
- package/build/lib/format.js +18 -0
- package/build/lib/format.js.map +1 -0
- package/build/lib/github.d.ts +35 -0
- package/build/lib/github.d.ts.map +1 -1
- package/build/lib/github.js +44 -0
- package/build/lib/github.js.map +1 -1
- package/build/lib/gitignore.d.ts +17 -0
- package/build/lib/gitignore.d.ts.map +1 -1
- package/build/lib/gitignore.js +17 -1
- package/build/lib/gitignore.js.map +1 -1
- package/build/lib/init.d.ts +22 -0
- package/build/lib/init.d.ts.map +1 -1
- package/build/lib/init.js +163 -18
- package/build/lib/init.js.map +1 -1
- package/build/lib/installer.d.ts +1 -0
- package/build/lib/installer.d.ts.map +1 -1
- package/build/lib/installer.js +7 -7
- package/build/lib/installer.js.map +1 -1
- package/build/lib/lockfile.d.ts +19 -17
- package/build/lib/lockfile.d.ts.map +1 -1
- package/build/lib/lockfile.js +45 -68
- package/build/lib/lockfile.js.map +1 -1
- package/build/lib/publisher.d.ts +41 -12
- package/build/lib/publisher.d.ts.map +1 -1
- package/build/lib/publisher.js +226 -64
- package/build/lib/publisher.js.map +1 -1
- package/build/lib/registry.d.ts +20 -5
- package/build/lib/registry.d.ts.map +1 -1
- package/build/lib/registry.js +45 -33
- package/build/lib/registry.js.map +1 -1
- package/build/lib/sanitize.d.ts +25 -0
- package/build/lib/sanitize.d.ts.map +1 -0
- package/build/lib/sanitize.js +61 -0
- package/build/lib/sanitize.js.map +1 -0
- package/build/lib/schemas/config.d.ts +31 -3
- package/build/lib/schemas/config.d.ts.map +1 -1
- package/build/lib/schemas/config.js +21 -2
- package/build/lib/schemas/config.js.map +1 -1
- package/build/lib/schemas/index.d.ts +1 -1
- package/build/lib/schemas/index.d.ts.map +1 -1
- package/build/lib/schemas/index.js +1 -1
- package/build/lib/schemas/index.js.map +1 -1
- package/build/lib/schemas/lockfile.d.ts +20 -4
- package/build/lib/schemas/lockfile.d.ts.map +1 -1
- package/build/lib/schemas/lockfile.js +7 -1
- package/build/lib/schemas/lockfile.js.map +1 -1
- package/build/lib/schemas/manifest.d.ts +1 -1
- package/build/lib/schemas/manifest.d.ts.map +1 -1
- package/build/lib/schemas/manifest.js +7 -2
- package/build/lib/schemas/manifest.js.map +1 -1
- package/build/lib/schemas/registry.d.ts +2 -4
- package/build/lib/schemas/registry.d.ts.map +1 -1
- package/build/lib/schemas/registry.js +1 -1
- package/build/lib/schemas/registry.js.map +1 -1
- package/build/lib/search.d.ts +15 -1
- package/build/lib/search.d.ts.map +1 -1
- package/build/lib/search.js +65 -65
- package/build/lib/search.js.map +1 -1
- package/build/lib/setup.d.ts +28 -0
- package/build/lib/setup.d.ts.map +1 -0
- package/build/lib/setup.js +98 -0
- package/build/lib/setup.js.map +1 -0
- package/build/lib/sync.d.ts +109 -0
- package/build/lib/sync.d.ts.map +1 -0
- package/build/lib/sync.js +217 -0
- package/build/lib/sync.js.map +1 -0
- package/build/lib/tool-resolver.d.ts +29 -6
- package/build/lib/tool-resolver.d.ts.map +1 -1
- package/build/lib/tool-resolver.js +54 -15
- package/build/lib/tool-resolver.js.map +1 -1
- package/build/lib/updater.d.ts +7 -4
- package/build/lib/updater.d.ts.map +1 -1
- package/build/lib/updater.js +10 -6
- package/build/lib/updater.js.map +1 -1
- package/build/lib/version.js +1 -1
- package/build/lib/version.js.map +1 -1
- package/package.json +79 -65
- package/tool-adapters/claude-code.json +1 -1
- package/tool-adapters/copilot-cli.json +1 -1
|
@@ -16,7 +16,6 @@ export declare const RegistryAssetVersionSchema: z.ZodObject<{
|
|
|
16
16
|
}, z.core.$strip>>>;
|
|
17
17
|
description: z.ZodString;
|
|
18
18
|
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
19
|
-
readme: z.ZodOptional<z.ZodString>;
|
|
20
19
|
security: z.ZodOptional<z.ZodObject<{
|
|
21
20
|
permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
22
21
|
reviewedAt: z.ZodOptional<z.ZodString>;
|
|
@@ -42,7 +41,6 @@ export declare const RegistryAssetVersionsMapSchema: z.ZodRecord<z.ZodString, z.
|
|
|
42
41
|
}, z.core.$strip>>>;
|
|
43
42
|
description: z.ZodString;
|
|
44
43
|
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
45
|
-
readme: z.ZodOptional<z.ZodString>;
|
|
46
44
|
security: z.ZodOptional<z.ZodObject<{
|
|
47
45
|
permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
48
46
|
reviewedAt: z.ZodOptional<z.ZodString>;
|
|
@@ -81,7 +79,6 @@ export declare const RegistryAsset: z.ZodObject<{
|
|
|
81
79
|
}, z.core.$strip>>>;
|
|
82
80
|
description: z.ZodString;
|
|
83
81
|
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
84
|
-
readme: z.ZodOptional<z.ZodString>;
|
|
85
82
|
security: z.ZodOptional<z.ZodObject<{
|
|
86
83
|
permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
87
84
|
reviewedAt: z.ZodOptional<z.ZodString>;
|
|
@@ -109,6 +106,7 @@ export declare const RegistryBundle: z.ZodObject<{
|
|
|
109
106
|
author: z.ZodString;
|
|
110
107
|
description: z.ZodString;
|
|
111
108
|
name: z.ZodString;
|
|
109
|
+
org: z.ZodOptional<z.ZodString>;
|
|
112
110
|
tags: z.ZodArray<z.ZodString>;
|
|
113
111
|
version: z.ZodString;
|
|
114
112
|
}, z.core.$strip>;
|
|
@@ -159,7 +157,6 @@ export declare const RegistrySchema: z.ZodObject<{
|
|
|
159
157
|
}, z.core.$strip>>>;
|
|
160
158
|
description: z.ZodString;
|
|
161
159
|
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
162
|
-
readme: z.ZodOptional<z.ZodString>;
|
|
163
160
|
security: z.ZodOptional<z.ZodObject<{
|
|
164
161
|
permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
165
162
|
reviewedAt: z.ZodOptional<z.ZodString>;
|
|
@@ -186,6 +183,7 @@ export declare const RegistrySchema: z.ZodObject<{
|
|
|
186
183
|
author: z.ZodString;
|
|
187
184
|
description: z.ZodString;
|
|
188
185
|
name: z.ZodString;
|
|
186
|
+
org: z.ZodOptional<z.ZodString>;
|
|
189
187
|
tags: z.ZodArray<z.ZodString>;
|
|
190
188
|
version: z.ZodString;
|
|
191
189
|
}, z.core.$strip>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;iBAwBrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;kBAAmD,CAAC;AAC/F,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;iBASzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAM1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -14,7 +14,6 @@ export const RegistryAssetVersionSchema = z.object({
|
|
|
14
14
|
.describe('Asset dependencies'),
|
|
15
15
|
description: z.string().describe('Short description'),
|
|
16
16
|
files: z.array(z.string()).optional().describe('Files included in this version'),
|
|
17
|
-
readme: z.string().optional().describe('README content for this asset version'),
|
|
18
17
|
security: z
|
|
19
18
|
.object({
|
|
20
19
|
permissions: z.array(z.string()).optional().describe('Permissions this asset requires'),
|
|
@@ -40,6 +39,7 @@ export const RegistryBundle = z.object({
|
|
|
40
39
|
author: z.string().describe('Author'),
|
|
41
40
|
description: z.string().describe('Short description'),
|
|
42
41
|
name: z.string().describe('Bundle name'),
|
|
42
|
+
org: z.string().optional().describe('Organization scope for this bundle'),
|
|
43
43
|
tags: z.array(z.string()).describe('Tags'),
|
|
44
44
|
version: z.string().describe('Latest version'),
|
|
45
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/lib/schemas/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACxE,YAAY,EAAE,CAAC;SACZ,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAC3E,CAAC,CACH;SACA,QAAQ,EAAE;SACV,QAAQ,CAAC,oBAAoB,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACrD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAChF,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/lib/schemas/registry.ts"],"names":[],"mappings":"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"}
|
package/build/lib/search.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AssetType } from './schemas/manifest.js';
|
|
2
1
|
import type { Registry, RegistryAsset, RegistryBundle } from './schemas/registry.js';
|
|
2
|
+
import { AssetType } from './schemas/manifest.js';
|
|
3
3
|
export interface SearchOptions {
|
|
4
4
|
org?: string;
|
|
5
5
|
query: string;
|
|
@@ -16,6 +16,20 @@ export type SearchResult = {
|
|
|
16
16
|
kind: 'bundle';
|
|
17
17
|
score: number;
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Parse and validate a type filter string.
|
|
21
|
+
* Returns 'bundle' for the bundle type, or a validated AssetType.
|
|
22
|
+
* Throws an Error if the type string is not recognized.
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseTypeFilter(type: string): 'bundle' | AssetType;
|
|
25
|
+
/**
|
|
26
|
+
* Score an item (asset or bundle) against search terms.
|
|
27
|
+
* Higher score = better match.
|
|
28
|
+
*
|
|
29
|
+
* Accepts pre-lowercased name, description, and author strings,
|
|
30
|
+
* the raw tags array, the search terms, and the full query string.
|
|
31
|
+
*/
|
|
32
|
+
export declare function scoreItem(name: string, description: string, author: string, tags: string[], terms: string[], fullQuery: string): number;
|
|
19
33
|
/**
|
|
20
34
|
* Search the registry for assets and bundles matching a query.
|
|
21
35
|
* Returns results sorted by relevance score (highest first).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CASlE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAsCR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,EAAE,CAqDzF"}
|
package/build/lib/search.js
CHANGED
|
@@ -1,4 +1,62 @@
|
|
|
1
1
|
import { filterVisibleAssets } from './registry.js';
|
|
2
|
+
import { AssetType } from './schemas/manifest.js';
|
|
3
|
+
/**
|
|
4
|
+
* Parse and validate a type filter string.
|
|
5
|
+
* Returns 'bundle' for the bundle type, or a validated AssetType.
|
|
6
|
+
* Throws an Error if the type string is not recognized.
|
|
7
|
+
*/
|
|
8
|
+
export function parseTypeFilter(type) {
|
|
9
|
+
if (type === 'bundle') {
|
|
10
|
+
return 'bundle';
|
|
11
|
+
}
|
|
12
|
+
const result = AssetType.safeParse(type);
|
|
13
|
+
if (!result.success) {
|
|
14
|
+
throw new Error(`Invalid type '${type}'. Valid types are: ${AssetType.options.join(', ')}, bundle`);
|
|
15
|
+
}
|
|
16
|
+
return result.data;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Score an item (asset or bundle) against search terms.
|
|
20
|
+
* Higher score = better match.
|
|
21
|
+
*
|
|
22
|
+
* Accepts pre-lowercased name, description, and author strings,
|
|
23
|
+
* the raw tags array, the search terms, and the full query string.
|
|
24
|
+
*/
|
|
25
|
+
export function scoreItem(name, description, author, tags, terms, fullQuery) {
|
|
26
|
+
let score = 0;
|
|
27
|
+
// Exact name match — highest weight
|
|
28
|
+
if (name === fullQuery) {
|
|
29
|
+
score += 100;
|
|
30
|
+
}
|
|
31
|
+
// Name contains the full query
|
|
32
|
+
else if (name.includes(fullQuery)) {
|
|
33
|
+
score += 50;
|
|
34
|
+
}
|
|
35
|
+
// Description contains the full query
|
|
36
|
+
if (description.includes(fullQuery)) {
|
|
37
|
+
score += 20;
|
|
38
|
+
}
|
|
39
|
+
// Per-term matching
|
|
40
|
+
for (const term of terms) {
|
|
41
|
+
// Name contains term
|
|
42
|
+
if (name.includes(term)) {
|
|
43
|
+
score += 10;
|
|
44
|
+
}
|
|
45
|
+
// Description contains term
|
|
46
|
+
if (description.includes(term)) {
|
|
47
|
+
score += 5;
|
|
48
|
+
}
|
|
49
|
+
// Tag exact match
|
|
50
|
+
if (tags.some((t) => t.toLowerCase() === term)) {
|
|
51
|
+
score += 8;
|
|
52
|
+
}
|
|
53
|
+
// Author matches
|
|
54
|
+
if (author.includes(term)) {
|
|
55
|
+
score += 3;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return score;
|
|
59
|
+
}
|
|
2
60
|
/**
|
|
3
61
|
* Search the registry for assets and bundles matching a query.
|
|
4
62
|
* Returns results sorted by relevance score (highest first).
|
|
@@ -18,7 +76,9 @@ export function searchRegistry(registry, options) {
|
|
|
18
76
|
if (tag && !asset.tags.some((t) => t.toLowerCase() === tag.toLowerCase()))
|
|
19
77
|
continue;
|
|
20
78
|
const latestVersion = asset.versions[asset.latest];
|
|
21
|
-
if (
|
|
79
|
+
if (!latestVersion)
|
|
80
|
+
continue;
|
|
81
|
+
if (tool && !latestVersion.tools.includes(tool))
|
|
22
82
|
continue;
|
|
23
83
|
let score = scoreAsset(asset, queryTerms, queryLower);
|
|
24
84
|
// Org-scoped assets get a small scoring bonus when org is active
|
|
@@ -53,83 +113,23 @@ export function searchRegistry(registry, options) {
|
|
|
53
113
|
}
|
|
54
114
|
/**
|
|
55
115
|
* Score an asset against search terms.
|
|
56
|
-
*
|
|
116
|
+
* Thin wrapper that extracts fields from the asset and delegates to scoreItem.
|
|
57
117
|
*/
|
|
58
118
|
function scoreAsset(asset, terms, fullQuery) {
|
|
59
|
-
let score = 0;
|
|
60
119
|
const nameLower = asset.name.toLowerCase();
|
|
61
120
|
const latestVersion = asset.versions[asset.latest];
|
|
62
121
|
const descLower = (latestVersion?.description ?? '').toLowerCase();
|
|
63
122
|
const authorLower = (latestVersion?.author ?? '').toLowerCase();
|
|
64
|
-
|
|
65
|
-
if (nameLower === fullQuery) {
|
|
66
|
-
score += 100;
|
|
67
|
-
}
|
|
68
|
-
// Name contains the full query
|
|
69
|
-
else if (nameLower.includes(fullQuery)) {
|
|
70
|
-
score += 50;
|
|
71
|
-
}
|
|
72
|
-
// Description contains the full query
|
|
73
|
-
if (descLower.includes(fullQuery)) {
|
|
74
|
-
score += 20;
|
|
75
|
-
}
|
|
76
|
-
// Per-term matching
|
|
77
|
-
for (const term of terms) {
|
|
78
|
-
// Name contains term
|
|
79
|
-
if (nameLower.includes(term)) {
|
|
80
|
-
score += 10;
|
|
81
|
-
}
|
|
82
|
-
// Description contains term
|
|
83
|
-
if (descLower.includes(term)) {
|
|
84
|
-
score += 5;
|
|
85
|
-
}
|
|
86
|
-
// Tag exact match
|
|
87
|
-
if (asset.tags.some((t) => t.toLowerCase() === term)) {
|
|
88
|
-
score += 8;
|
|
89
|
-
}
|
|
90
|
-
// Author matches
|
|
91
|
-
if (authorLower.includes(term)) {
|
|
92
|
-
score += 3;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return score;
|
|
123
|
+
return scoreItem(nameLower, descLower, authorLower, asset.tags, terms, fullQuery);
|
|
96
124
|
}
|
|
97
125
|
/**
|
|
98
126
|
* Score a bundle against search terms.
|
|
99
|
-
*
|
|
127
|
+
* Thin wrapper that extracts fields from the bundle and delegates to scoreItem.
|
|
100
128
|
*/
|
|
101
129
|
function scoreBundle(bundle, terms, fullQuery) {
|
|
102
|
-
let score = 0;
|
|
103
130
|
const nameLower = bundle.name.toLowerCase();
|
|
104
131
|
const descLower = bundle.description.toLowerCase();
|
|
105
132
|
const authorLower = bundle.author.toLowerCase();
|
|
106
|
-
|
|
107
|
-
if (nameLower === fullQuery) {
|
|
108
|
-
score += 100;
|
|
109
|
-
}
|
|
110
|
-
// Name contains the full query
|
|
111
|
-
else if (nameLower.includes(fullQuery)) {
|
|
112
|
-
score += 50;
|
|
113
|
-
}
|
|
114
|
-
// Description contains the full query
|
|
115
|
-
if (descLower.includes(fullQuery)) {
|
|
116
|
-
score += 20;
|
|
117
|
-
}
|
|
118
|
-
// Per-term matching
|
|
119
|
-
for (const term of terms) {
|
|
120
|
-
if (nameLower.includes(term)) {
|
|
121
|
-
score += 10;
|
|
122
|
-
}
|
|
123
|
-
if (descLower.includes(term)) {
|
|
124
|
-
score += 5;
|
|
125
|
-
}
|
|
126
|
-
if (bundle.tags.some((t) => t.toLowerCase() === term)) {
|
|
127
|
-
score += 8;
|
|
128
|
-
}
|
|
129
|
-
if (authorLower.includes(term)) {
|
|
130
|
-
score += 3;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return score;
|
|
133
|
+
return scoreItem(nameLower, descLower, authorLower, bundle.tags, terms, fullQuery);
|
|
134
134
|
}
|
|
135
135
|
//# sourceMappingURL=search.js.map
|
package/build/lib/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regex for valid org identifiers. Must start with a letter, then letters,
|
|
3
|
+
* digits, or hyphens. Matches the constraint in the manifest schema.
|
|
4
|
+
*/
|
|
5
|
+
export declare const ORG_PATTERN: RegExp;
|
|
6
|
+
export interface SetupCreationOptions {
|
|
7
|
+
orgLocked: boolean;
|
|
8
|
+
orgValue: string;
|
|
9
|
+
projectDir: string;
|
|
10
|
+
selectedTools: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface SetupCreationResult {
|
|
13
|
+
actions: SummaryAction[];
|
|
14
|
+
warnings: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface SummaryAction {
|
|
17
|
+
detail?: string;
|
|
18
|
+
label: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Perform the setup creation step: write project config, write/update the
|
|
22
|
+
* lockfile, and ensure gitignore entries are present for the selected tools.
|
|
23
|
+
*
|
|
24
|
+
* This is the extracted business logic from the `useSetupState` creating
|
|
25
|
+
* effect, made independently testable without React rendering overhead.
|
|
26
|
+
*/
|
|
27
|
+
export declare function performSetupCreation(options: SetupCreationOptions): Promise<SetupCreationResult>;
|
|
28
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,eAAO,MAAM,WAAW,QAA4B,CAAC;AAMrD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiFtG"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { loadAdapter } from './adapter.js';
|
|
3
|
+
import { saveProjectConfig } from './config.js';
|
|
4
|
+
import { ensureGitignoreEntries, ensureGitignorePatterns } from './gitignore.js';
|
|
5
|
+
import { getLockfilePath, readLockfile, writeLockfile } from './lockfile.js';
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Constants
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
/**
|
|
10
|
+
* Regex for valid org identifiers. Must start with a letter, then letters,
|
|
11
|
+
* digits, or hyphens. Matches the constraint in the manifest schema.
|
|
12
|
+
*/
|
|
13
|
+
export const ORG_PATTERN = /^[a-zA-Z][a-zA-Z0-9-]*$/;
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Main function
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
/**
|
|
18
|
+
* Perform the setup creation step: write project config, write/update the
|
|
19
|
+
* lockfile, and ensure gitignore entries are present for the selected tools.
|
|
20
|
+
*
|
|
21
|
+
* This is the extracted business logic from the `useSetupState` creating
|
|
22
|
+
* effect, made independently testable without React rendering overhead.
|
|
23
|
+
*/
|
|
24
|
+
export async function performSetupCreation(options) {
|
|
25
|
+
const { orgLocked, orgValue, projectDir, selectedTools } = options;
|
|
26
|
+
const actions = [];
|
|
27
|
+
const warnings = [];
|
|
28
|
+
const resolvedOrg = orgLocked ? orgValue.trim() : orgValue.trim() || undefined;
|
|
29
|
+
// Validate org format when non-empty
|
|
30
|
+
if (resolvedOrg !== undefined && !ORG_PATTERN.test(resolvedOrg)) {
|
|
31
|
+
throw new Error(`Invalid org "${resolvedOrg}": must start with a letter and contain only letters, digits, or hyphens.`);
|
|
32
|
+
}
|
|
33
|
+
// 1. Write .atkrc.json with { tools: [...] }
|
|
34
|
+
await saveProjectConfig(projectDir, { tools: selectedTools });
|
|
35
|
+
actions.push({ detail: `tools: ${selectedTools.join(', ')}`, label: 'Wrote .atkrc.json' });
|
|
36
|
+
// 2. Write/update .atk-lock.json
|
|
37
|
+
const lockfilePath = getLockfilePath(projectDir);
|
|
38
|
+
if (existsSync(lockfilePath)) {
|
|
39
|
+
// Preserve existing assets and org
|
|
40
|
+
const existing = await readLockfile(projectDir);
|
|
41
|
+
// Only update org if it's not already set and we have a new one
|
|
42
|
+
const updatedLockfile = {
|
|
43
|
+
...existing,
|
|
44
|
+
lockVersion: 1,
|
|
45
|
+
...(resolvedOrg !== undefined && !existing.org ? { org: resolvedOrg } : {}),
|
|
46
|
+
};
|
|
47
|
+
await writeLockfile(projectDir, updatedLockfile);
|
|
48
|
+
actions.push({
|
|
49
|
+
detail: `${(existing.assets ?? []).length} existing asset(s) preserved`,
|
|
50
|
+
label: 'Updated .atk-lock.json',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
await writeLockfile(projectDir, {
|
|
55
|
+
assets: [],
|
|
56
|
+
lockVersion: 1,
|
|
57
|
+
...(resolvedOrg !== undefined ? { org: resolvedOrg } : {}),
|
|
58
|
+
});
|
|
59
|
+
actions.push({
|
|
60
|
+
detail: resolvedOrg ? `org: ${resolvedOrg}` : 'no org',
|
|
61
|
+
label: 'Created .atk-lock.json',
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
// 3. Ensure .atkrc.json is in .gitignore via the adapters' gitignore entries
|
|
65
|
+
const allAdded = [];
|
|
66
|
+
let anyAdapterLoaded = false;
|
|
67
|
+
for (const tool of selectedTools) {
|
|
68
|
+
try {
|
|
69
|
+
const adapter = await loadAdapter(tool);
|
|
70
|
+
anyAdapterLoaded = true;
|
|
71
|
+
const { added } = await ensureGitignoreEntries(projectDir, adapter);
|
|
72
|
+
allAdded.push(...added);
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
// Individual adapter load failure is non-fatal; record warning and continue
|
|
76
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
77
|
+
warnings.push(`Failed to load adapter for "${tool}": ${message}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (!anyAdapterLoaded) {
|
|
81
|
+
// If no adapters could be loaded, manually ensure critical files are gitignored
|
|
82
|
+
try {
|
|
83
|
+
const { added } = await ensureGitignorePatterns(projectDir, ['.atkrc.json', '.atk-lock.json.lock']);
|
|
84
|
+
allAdded.push(...added);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
88
|
+
warnings.push(`Failed to update .gitignore: ${message}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (allAdded.length > 0) {
|
|
92
|
+
// Deduplicate entries
|
|
93
|
+
const uniqueAdded = [...new Set(allAdded)];
|
|
94
|
+
actions.push({ detail: uniqueAdded.join(', '), label: 'Updated .gitignore' });
|
|
95
|
+
}
|
|
96
|
+
return { actions, warnings };
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { InstallResult } from './installer.js';
|
|
2
|
+
import type { Adapter } from './schemas/adapter.js';
|
|
3
|
+
import type { ProjectConfig } from './schemas/config.js';
|
|
4
|
+
import type { InstalledAsset } from './schemas/lockfile.js';
|
|
5
|
+
import type { Registry } from './schemas/registry.js';
|
|
6
|
+
export interface ClassifySyncEntriesOptions {
|
|
7
|
+
adapter: Adapter;
|
|
8
|
+
assets: InstalledAsset[];
|
|
9
|
+
force: boolean;
|
|
10
|
+
onProgress?: (msg: string) => void;
|
|
11
|
+
projectConfig: null | ProjectConfig;
|
|
12
|
+
projectDir: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ClassifySyncEntriesResult {
|
|
15
|
+
frozenSkipped: number;
|
|
16
|
+
skipped: number;
|
|
17
|
+
toSync: SyncEntry[];
|
|
18
|
+
}
|
|
19
|
+
export interface DryRunSyncOptions {
|
|
20
|
+
force: boolean;
|
|
21
|
+
onProgress?: (msg: string) => void;
|
|
22
|
+
projectConfig: null | ProjectConfig;
|
|
23
|
+
projectDir: string;
|
|
24
|
+
tools: Array<{
|
|
25
|
+
adapter: Adapter;
|
|
26
|
+
tool: string;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
export interface SyncAssetsOptions {
|
|
30
|
+
force: boolean;
|
|
31
|
+
onProgress?: (msg: string) => void;
|
|
32
|
+
projectConfig: null | ProjectConfig;
|
|
33
|
+
projectDir: string;
|
|
34
|
+
registry: Registry;
|
|
35
|
+
tools: Array<{
|
|
36
|
+
adapter: Adapter;
|
|
37
|
+
tool: string;
|
|
38
|
+
}>;
|
|
39
|
+
}
|
|
40
|
+
export interface SyncEntry {
|
|
41
|
+
asset: InstalledAsset;
|
|
42
|
+
reason: 'forced' | 'missing' | 'modified';
|
|
43
|
+
result?: InstallResult;
|
|
44
|
+
}
|
|
45
|
+
export interface SyncFailure {
|
|
46
|
+
assetName: string;
|
|
47
|
+
assetType: string;
|
|
48
|
+
error: string;
|
|
49
|
+
version: string;
|
|
50
|
+
}
|
|
51
|
+
export type SyncOutcome = {
|
|
52
|
+
outcome: 'dry-run';
|
|
53
|
+
toolResults: ToolDryRunResult[];
|
|
54
|
+
} | {
|
|
55
|
+
outcome: 'synced';
|
|
56
|
+
toolResults: ToolSyncResult[];
|
|
57
|
+
};
|
|
58
|
+
export interface ToolDryRunResult {
|
|
59
|
+
bootstrapHint?: string;
|
|
60
|
+
frozenSkipped: number;
|
|
61
|
+
skipped: number;
|
|
62
|
+
tool: string;
|
|
63
|
+
toSync: SyncEntry[];
|
|
64
|
+
}
|
|
65
|
+
export interface ToolSyncResult {
|
|
66
|
+
bootstrapHint?: string;
|
|
67
|
+
failures: SyncFailure[];
|
|
68
|
+
frozenSkipped: number;
|
|
69
|
+
skipped: number;
|
|
70
|
+
synced: SyncEntry[];
|
|
71
|
+
tool: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Classify installed assets into entries that need syncing vs. those that
|
|
75
|
+
* can be skipped. This consolidates the duplicated checksum-checking loop
|
|
76
|
+
* that previously appeared in both the dry-run and live sync paths.
|
|
77
|
+
*
|
|
78
|
+
* For each asset the function:
|
|
79
|
+
* 1. Checks if the asset is frozen — if so, increments `frozenSkipped`.
|
|
80
|
+
* 2. If `force` is true, marks it as `forced` without checking checksums.
|
|
81
|
+
* 3. Otherwise, resolves installed paths via the adapter, verifies checksums,
|
|
82
|
+
* and classifies as `missing` or `modified` when checksums fail, or
|
|
83
|
+
* increments `skipped` when all checksums pass.
|
|
84
|
+
*/
|
|
85
|
+
export declare function classifySyncEntries(options: ClassifySyncEntriesOptions): Promise<ClassifySyncEntriesResult>;
|
|
86
|
+
/**
|
|
87
|
+
* Perform a dry-run sync: read the lockfile (without locking), classify each
|
|
88
|
+
* tool's assets, and return the results so the UI can display what *would*
|
|
89
|
+
* be synced.
|
|
90
|
+
*
|
|
91
|
+
* This fixes finding O10.3 by populating `bootstrapHint` when a tool has no
|
|
92
|
+
* installed assets, which the original inline dry-run path in sync.tsx omitted.
|
|
93
|
+
*/
|
|
94
|
+
export declare function dryRunSync(options: DryRunSyncOptions): Promise<ToolDryRunResult[]>;
|
|
95
|
+
/**
|
|
96
|
+
* Perform a live sync: acquire the lockfile lock, classify each tool's assets,
|
|
97
|
+
* then remove and reinstall drifted entries.
|
|
98
|
+
*
|
|
99
|
+
* Uses `removeSingleAsset()` for disk-only cleanup (no lockfile I/O) and
|
|
100
|
+
* manages lockfile state in-memory with a single read at the start and a
|
|
101
|
+
* single write at the end. This follows the same pattern established by
|
|
102
|
+
* `executeBundleUninstall()` in `uninstaller.ts`.
|
|
103
|
+
*
|
|
104
|
+
* NOTE: Sync reinstalls only the direct asset, not its dependencies. This is
|
|
105
|
+
* intentional per F4.2 — dependencies are assumed to already be installed and
|
|
106
|
+
* are not re-fetched during a sync operation.
|
|
107
|
+
*/
|
|
108
|
+
export declare function syncAssets(options: SyncAssetsOptions): Promise<ToolSyncResult[]>;
|
|
109
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"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"}
|