@fuzdev/fuz_gitops 0.76.0 → 0.78.0

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 (104) hide show
  1. package/README.md +5 -5
  2. package/dist/ModulesDetail.svelte +1 -1
  3. package/dist/PageFooter.svelte +2 -2
  4. package/dist/PageHeader.svelte +1 -1
  5. package/dist/PageHeader.svelte.d.ts +1 -1
  6. package/dist/ReposTable.svelte +1 -1
  7. package/dist/ReposTree.svelte +1 -1
  8. package/dist/cargo_toml.d.ts +33 -0
  9. package/dist/cargo_toml.d.ts.map +1 -0
  10. package/dist/cargo_toml.js +74 -0
  11. package/dist/changeset_generator.d.ts +1 -1
  12. package/dist/changeset_reader.d.ts +1 -1
  13. package/dist/ci_reconcile.d.ts +50 -0
  14. package/dist/ci_reconcile.d.ts.map +1 -0
  15. package/dist/ci_reconcile.js +46 -0
  16. package/dist/config_reconcile.d.ts +46 -0
  17. package/dist/config_reconcile.d.ts.map +1 -0
  18. package/dist/config_reconcile.js +60 -0
  19. package/dist/dependency_graph.d.ts +2 -2
  20. package/dist/dependency_graph.js +4 -4
  21. package/dist/dependency_updater.d.ts +1 -1
  22. package/dist/fetch_repo_data.d.ts +2 -2
  23. package/dist/fetch_repo_data.js +1 -1
  24. package/dist/fs_fetch_value_cache.d.ts +1 -1
  25. package/dist/fs_fetch_value_cache.js +3 -3
  26. package/dist/git_operations.d.ts +1 -1
  27. package/dist/git_operations.js +2 -2
  28. package/dist/github.d.ts +2 -2
  29. package/dist/github.js +1 -1
  30. package/dist/github_helpers.js +1 -1
  31. package/dist/gitops_analyze.task.d.ts.map +1 -1
  32. package/dist/gitops_analyze.task.js +15 -8
  33. package/dist/gitops_config.d.ts +27 -2
  34. package/dist/gitops_config.d.ts.map +1 -1
  35. package/dist/gitops_config.js +13 -2
  36. package/dist/gitops_run.task.js +2 -2
  37. package/dist/gitops_sync.task.js +4 -4
  38. package/dist/gitops_task_helpers.d.ts +1 -1
  39. package/dist/gitops_task_helpers.js +1 -1
  40. package/dist/gitops_validate.task.d.ts.map +1 -1
  41. package/dist/gitops_validate.task.js +54 -6
  42. package/dist/graph_validation.d.ts +2 -2
  43. package/dist/graph_validation.d.ts.map +1 -1
  44. package/dist/graph_validation.js +3 -1
  45. package/dist/local_repo.d.ts +17 -3
  46. package/dist/local_repo.d.ts.map +1 -1
  47. package/dist/local_repo.js +54 -6
  48. package/dist/log_helpers.d.ts +1 -1
  49. package/dist/multi_repo_publisher.d.ts +3 -3
  50. package/dist/multi_repo_publisher.d.ts.map +1 -1
  51. package/dist/multi_repo_publisher.js +5 -1
  52. package/dist/npm_registry.d.ts +1 -1
  53. package/dist/npm_registry.js +2 -2
  54. package/dist/operations.d.ts +4 -4
  55. package/dist/operations_defaults.js +4 -4
  56. package/dist/output_helpers.d.ts +1 -1
  57. package/dist/preflight_checks.d.ts +1 -1
  58. package/dist/preflight_checks.js +1 -1
  59. package/dist/publish_steps.js +1 -1
  60. package/dist/publishing_plan.d.ts +3 -3
  61. package/dist/publishing_plan.d.ts.map +1 -1
  62. package/dist/publishing_plan.js +11 -1
  63. package/dist/publishing_plan_logging.d.ts +1 -1
  64. package/dist/repo.svelte.d.ts +5 -5
  65. package/dist/repo.svelte.js +2 -2
  66. package/package.json +10 -10
  67. package/src/lib/cargo_toml.ts +82 -0
  68. package/src/lib/changeset_generator.ts +6 -6
  69. package/src/lib/changeset_reader.ts +3 -3
  70. package/src/lib/ci_reconcile.ts +73 -0
  71. package/src/lib/config_reconcile.ts +94 -0
  72. package/src/lib/dependency_graph.ts +5 -5
  73. package/src/lib/dependency_updater.ts +7 -7
  74. package/src/lib/fetch_repo_data.ts +6 -6
  75. package/src/lib/fs_fetch_value_cache.ts +3 -3
  76. package/src/lib/git_operations.ts +2 -2
  77. package/src/lib/github.ts +2 -2
  78. package/src/lib/github_helpers.ts +3 -3
  79. package/src/lib/gitops_analyze.task.ts +26 -18
  80. package/src/lib/gitops_config.ts +45 -5
  81. package/src/lib/gitops_plan.task.ts +4 -4
  82. package/src/lib/gitops_publish.task.ts +9 -9
  83. package/src/lib/gitops_run.task.ts +4 -4
  84. package/src/lib/gitops_sync.task.ts +8 -8
  85. package/src/lib/gitops_task_helpers.ts +7 -7
  86. package/src/lib/gitops_validate.task.ts +63 -11
  87. package/src/lib/graph_validation.ts +5 -4
  88. package/src/lib/local_repo.ts +81 -15
  89. package/src/lib/log_helpers.ts +2 -2
  90. package/src/lib/multi_repo_publisher.ts +15 -11
  91. package/src/lib/npm_registry.ts +3 -3
  92. package/src/lib/operations.ts +9 -9
  93. package/src/lib/operations_defaults.ts +9 -9
  94. package/src/lib/output_helpers.ts +1 -1
  95. package/src/lib/preflight_checks.ts +6 -6
  96. package/src/lib/publish_gate.ts +2 -2
  97. package/src/lib/publish_steps.ts +3 -3
  98. package/src/lib/publishing_event_handler.ts +1 -1
  99. package/src/lib/publishing_plan.ts +22 -10
  100. package/src/lib/publishing_plan_helpers.ts +3 -3
  101. package/src/lib/publishing_plan_logging.ts +2 -2
  102. package/src/lib/repo.svelte.ts +7 -7
  103. package/src/lib/repo_ops.ts +3 -3
  104. package/src/lib/resolved_gitops_config.ts +2 -2
@@ -10,8 +10,8 @@
10
10
  *
11
11
  * @module
12
12
  */
13
- import type { Url } from '@fuzdev/fuz_util/url.js';
14
- import type { GitBranch } from '@fuzdev/fuz_util/git.js';
13
+ import type { Url } from '@fuzdev/fuz_util/url.ts';
14
+ import type { GitBranch } from '@fuzdev/fuz_util/git.ts';
15
15
  export interface GitopsConfig {
16
16
  repos: Array<GitopsRepoConfig>;
17
17
  repos_dir: string;
@@ -21,6 +21,12 @@ export interface RawGitopsConfig {
21
21
  repos?: Array<Url | RawGitopsRepoConfig>;
22
22
  repos_dir?: string;
23
23
  }
24
+ /**
25
+ * Visibility of a repo on its host, mirroring the host's own model
26
+ * (e.g. GitHub's `visibility` field). Named to avoid confusion with the npm
27
+ * `package.json` `private` flag, which is a separate publishing concern.
28
+ */
29
+ export type GitopsRepoVisibility = 'public' | 'private';
24
30
  export interface GitopsRepoConfig {
25
31
  /**
26
32
  * The HTTPS URL to the repo. Does not include a `.git` suffix.
@@ -47,11 +53,30 @@ export interface GitopsRepoConfig {
47
53
  * The branch name to use when fetching the repo. Defaults to `main`.
48
54
  */
49
55
  branch: GitBranch;
56
+ /**
57
+ * Visibility of the repo on its host. Defaults to `'public'`.
58
+ */
59
+ visibility: GitopsRepoVisibility;
60
+ /**
61
+ * Whether the repo runs CI. Defaults to `true` for public repos and `false`
62
+ * for private repos, unless set explicitly.
63
+ */
64
+ ci: boolean;
65
+ /**
66
+ * Whether the repo is archived (read-only) on its host. Defaults to `false`.
67
+ */
68
+ archived: boolean;
50
69
  }
51
70
  export interface RawGitopsRepoConfig {
52
71
  repo_url: Url;
53
72
  repo_dir?: string | null;
54
73
  branch?: GitBranch;
74
+ /** Visibility of the repo on its host. Defaults to `'public'`. */
75
+ visibility?: GitopsRepoVisibility;
76
+ /** Whether the repo runs CI. Defaults to `true` for public, `false` for private. */
77
+ ci?: boolean;
78
+ /** Whether the repo is archived (read-only) on its host. Defaults to `false`. */
79
+ archived?: boolean;
55
80
  }
56
81
  export declare const create_empty_gitops_config: () => GitopsConfig;
57
82
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"gitops_config.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,yBAAyB,CAAC;AAGjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAIvD,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAChC,WAAW,EAAE,YAAY,KACrB,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAChC;;;;;;OAMG;IACH,QAAQ,EAAE,GAAG,CAAC;IAEd;;;;;;;;;;;OAWG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,eAAO,MAAM,0BAA0B,QAAO,YAG5C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,YAAY,eAAe,KAAG,YAUrE,CAAC;AAaF,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,kBAAkB,CAAC;CACvD;AAED,eAAO,MAAM,kBAAkB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAazF,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,CAC3C,aAAa,EAAE,GAAG,EAClB,WAAW,EAAE,MAAM,KACf,OAAO,CAAC,aAAa,IAAI,kBAS7B,CAAC"}
1
+ {"version":3,"file":"gitops_config.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,yBAAyB,CAAC;AAGjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAIvD,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAChC,WAAW,EAAE,YAAY,KACrB,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAChC;;;;;;OAMG;IACH,QAAQ,EAAE,GAAG,CAAC;IAEd;;;;;;;;;;;OAWG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,UAAU,EAAE,oBAAoB,CAAC;IAEjC;;;OAGG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kEAAkE;IAClE,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,oFAAoF;IACpF,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,0BAA0B,QAAO,YAG5C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,YAAY,eAAe,KAAG,YAUrE,CAAC;AAwBF,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,kBAAkB,CAAC;CACvD;AAED,eAAO,MAAM,kBAAkB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAazF,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,CAC3C,aAAa,EAAE,GAAG,EAClB,WAAW,EAAE,MAAM,KACf,OAAO,CAAC,aAAa,IAAI,kBAS7B,CAAC"}
@@ -11,7 +11,7 @@
11
11
  * @module
12
12
  */
13
13
  import { existsSync } from 'node:fs';
14
- import { strip_end } from '@fuzdev/fuz_util/string.js';
14
+ import { strip_end } from '@fuzdev/fuz_util/string.ts';
15
15
  import { DEFAULT_REPOS_DIR } from './paths.js';
16
16
  export const create_empty_gitops_config = () => ({
17
17
  repos: [],
@@ -34,12 +34,23 @@ export const normalize_gitops_config = (raw_config) => {
34
34
  };
35
35
  const parse_fuz_repo_config = (r) => {
36
36
  if (typeof r === 'string') {
37
- return { repo_url: r, repo_dir: null, branch: 'main' }; // TODO @zts use flavored for GitBranch
37
+ return {
38
+ repo_url: r,
39
+ repo_dir: null,
40
+ branch: 'main', // TODO @zts use flavored for GitBranch
41
+ visibility: 'public',
42
+ ci: true,
43
+ archived: false,
44
+ };
38
45
  }
46
+ const visibility = r.visibility ?? 'public';
39
47
  return {
40
48
  repo_url: strip_end(r.repo_url, '.git'),
41
49
  repo_dir: r.repo_dir ?? null,
42
50
  branch: r.branch ?? 'main', // TODO @zts use flavored for GitBranch
51
+ visibility,
52
+ ci: r.ci ?? visibility === 'public',
53
+ archived: r.archived ?? false,
43
54
  };
44
55
  };
45
56
  export const load_gitops_config = async (config_path) => {
@@ -1,7 +1,7 @@
1
1
  import { TaskError } from '@fuzdev/gro';
2
2
  import { z } from 'zod';
3
- import { map_concurrent_settled } from '@fuzdev/fuz_util/async.js';
4
- import { spawn_out } from '@fuzdev/fuz_util/process.js';
3
+ import { map_concurrent_settled } from '@fuzdev/fuz_util/async.ts';
4
+ import { spawn_out } from '@fuzdev/fuz_util/process.ts';
5
5
  import { writeFile } from 'node:fs/promises';
6
6
  import { styleText as st } from 'node:util';
7
7
  import { resolve } from 'node:path';
@@ -1,11 +1,11 @@
1
1
  import { TaskError } from '@fuzdev/gro';
2
2
  import { z } from 'zod';
3
3
  import { readFile, writeFile } from 'node:fs/promises';
4
- import { format_file } from '@fuzdev/gro/format_file.js';
4
+ import { format_file } from '@fuzdev/gro/format_file.ts';
5
5
  import { basename, resolve } from 'node:path';
6
- import { print_path } from '@fuzdev/gro/paths.js';
7
- import { load_from_env } from '@fuzdev/gro/env.js';
8
- import { package_json_load } from '@fuzdev/gro/package_json.js';
6
+ import { print_path } from '@fuzdev/gro/paths.ts';
7
+ import { load_from_env } from '@fuzdev/gro/env.ts';
8
+ import { package_json_load } from '@fuzdev/gro/package_json.ts';
9
9
  import { existsSync } from 'node:fs';
10
10
  import { compactReplacer } from 'svelte-docinfo';
11
11
  import { fetch_repo_data } from './fetch_repo_data.js';
@@ -15,7 +15,7 @@
15
15
  *
16
16
  * @module
17
17
  */
18
- import type { Logger } from '@fuzdev/fuz_util/log.js';
18
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
19
19
  import { type GitopsConfig } from './gitops_config.js';
20
20
  import { type LocalRepo } from './local_repo.js';
21
21
  import type { GitOperations, NpmOperations } from './operations.js';
@@ -18,7 +18,7 @@
18
18
  import { TaskError } from '@fuzdev/gro';
19
19
  import { styleText as st } from 'node:util';
20
20
  import { resolve, dirname } from 'node:path';
21
- import { print_path } from '@fuzdev/gro/paths.js';
21
+ import { print_path } from '@fuzdev/gro/paths.ts';
22
22
  import { load_gitops_config } from './gitops_config.js';
23
23
  import { local_repos_load, local_repos_ensure } from './local_repo.js';
24
24
  import { resolve_gitops_config } from './resolved_gitops_config.js';
@@ -1 +1 @@
1
- {"version":3,"file":"gitops_validate.task.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_validate.task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AActB,cAAc;AACd,eAAO,MAAM,IAAI;;;;;kBAiBf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,cAAc;AACd,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CA2N3B,CAAC"}
1
+ {"version":3,"file":"gitops_validate.task.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_validate.task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAetB,cAAc;AACd,eAAO,MAAM,IAAI;;;;;kBAiBf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,cAAc;AACd,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CA8Q3B,CAAC"}
@@ -6,6 +6,7 @@ import { generate_publishing_plan, log_publishing_plan, } from './publishing_pla
6
6
  import { execute_publishing_plan } from './multi_repo_publisher.js';
7
7
  import { log_dependency_analysis } from './log_helpers.js';
8
8
  import { GITOPS_CONFIG_PATH_DEFAULT } from './gitops_constants.js';
9
+ import { reconcile_ci, repo_has_workflows } from './ci_reconcile.js';
9
10
  /** @nodocs */
10
11
  export const Args = z.strictObject({
11
12
  config: z
@@ -58,7 +59,7 @@ export const task = {
58
59
  const errors = analysis.production_cycles.length > 0 ? 1 : 0;
59
60
  results.push({
60
61
  command: 'gitops_analyze',
61
- success: true,
62
+ success: errors === 0,
62
63
  warnings,
63
64
  errors,
64
65
  duration: analyze_duration,
@@ -96,7 +97,7 @@ export const task = {
96
97
  const errors = plan.errors.length;
97
98
  results.push({
98
99
  command: 'gitops_plan',
99
- success: true,
100
+ success: errors === 0,
100
101
  warnings,
101
102
  errors,
102
103
  duration: plan_duration,
@@ -160,6 +161,53 @@ export const task = {
160
161
  });
161
162
  log.error(st('red', ` ✗ gitops_publish (dry run) failed: ${error}`));
162
163
  }
164
+ // 4. Reconcile each repo's declared `ci` against actual workflow files on disk.
165
+ log.info(st('yellow', 'Running ci_reconcile...'));
166
+ const ci_start = Date.now();
167
+ try {
168
+ const ci_drift = reconcile_ci(local_repos.map((r) => ({
169
+ repo_url: r.repo_config.repo_url,
170
+ ci: r.repo_config.ci,
171
+ has_workflows: repo_has_workflows(r.repo_dir),
172
+ // TODO: `local_repos` only ever holds checked-out repos — a missing repo
173
+ // throws in `local_repos_ensure` before we reach here — so `checkable` is
174
+ // always `true` today. The gate exists for a future caller that loads a
175
+ // partial set; until then the skip path is inert and untested.
176
+ checkable: true,
177
+ archived: r.repo_config.archived,
178
+ })));
179
+ const ci_duration = Date.now() - ci_start;
180
+ const drift_details = ci_drift.map((d) => d.kind === 'missing_ci'
181
+ ? `${d.repo_url}: ci=true but no workflow files`
182
+ : `${d.repo_url}: ci=false but workflow files present`);
183
+ results.push({
184
+ command: 'ci_reconcile',
185
+ success: ci_drift.length === 0,
186
+ warnings: 0,
187
+ errors: ci_drift.length,
188
+ duration: ci_duration,
189
+ });
190
+ if (ci_drift.length === 0) {
191
+ log.info(st('green', ` ✓ ci_reconcile completed in ${ci_duration}ms`));
192
+ }
193
+ else {
194
+ log.error(st('red', ` ❌ ci_reconcile found ${ci_drift.length} drift(s)`));
195
+ for (const detail of drift_details) {
196
+ log.error(st('red', ` - ${detail}`));
197
+ }
198
+ }
199
+ }
200
+ catch (error) {
201
+ const ci_duration = Date.now() - ci_start;
202
+ results.push({
203
+ command: 'ci_reconcile',
204
+ success: false,
205
+ warnings: 0,
206
+ errors: 1,
207
+ duration: ci_duration,
208
+ });
209
+ log.error(st('red', ` ✗ ci_reconcile failed: ${error}`));
210
+ }
163
211
  // Summary
164
212
  const total_duration = Date.now() - start_time;
165
213
  const all_success = results.every((r) => r.success);
@@ -200,11 +248,11 @@ export const task = {
200
248
  log.warn(st('yellow', `⚠️ Note: ${total_warnings} warning(s) found - review output above.`));
201
249
  }
202
250
  }
203
- else if (all_success && total_errors > 0) {
204
- log.warn(st('yellow', '⚠️ Validation completed but found errors - review output above.'));
205
- }
206
251
  else {
207
- log.error(st('red', '❌ Validation failed - one or more commands did not complete.'));
252
+ // Hard-fail on any error or failed command. These run manually (and
253
+ // increasingly via agents), so a clear problem should stop the pipeline
254
+ // rather than scroll past in the summary. Warnings stay non-fatal.
255
+ log.error(st('red', '❌ Validation failed - review the errors above.'));
208
256
  throw new Error('Validation failed');
209
257
  }
210
258
  },
@@ -12,9 +12,9 @@
12
12
  *
13
13
  * @module
14
14
  */
15
- import type { Logger } from '@fuzdev/fuz_util/log.js';
15
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
16
16
  import { DependencyGraph, DependencyGraphBuilder } from './dependency_graph.js';
17
- import type { LocalRepo } from './local_repo.js';
17
+ import { type LocalRepo } from './local_repo.js';
18
18
  export interface GraphValidationResult {
19
19
  graph: DependencyGraph;
20
20
  publishing_order: Array<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"graph_validation.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/graph_validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAIpD,OAAO,EAAC,eAAe,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,eAAe,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GACrC,OAAO,KAAK,CAAC,SAAS,CAAC,EACvB,UAAS;IACR,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACf,KACJ,qBA8DF,CAAC;AAEF,6FAA6F;AAC7F,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sFAAsF;IACtF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACvC;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,CAAC,SAAS,CAAC,KAAG,YAQvD,CAAC"}
1
+ {"version":3,"file":"graph_validation.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/graph_validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAIpD,OAAO,EAAC,eAAe,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAc,KAAK,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,eAAe,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GACrC,OAAO,KAAK,CAAC,SAAS,CAAC,EACvB,UAAS;IACR,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACf,KACJ,qBA8DF,CAAC;AAEF,6FAA6F;AAC7F,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sFAAsF;IACtF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACvC;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,CAAC,SAAS,CAAC,KAAG,YASvD,CAAC"}
@@ -15,6 +15,7 @@
15
15
  import { TaskError } from '@fuzdev/gro';
16
16
  import { styleText as st } from 'node:util';
17
17
  import { DependencyGraph, DependencyGraphBuilder } from './dependency_graph.js';
18
+ import { repo_is_npm } from './local_repo.js';
18
19
  /**
19
20
  * Shared utility for building dependency graph, detecting cycles, and computing publishing order.
20
21
  * This centralizes logic that was duplicated across `multi_repo_publisher`, `publishing_plan`, and `gitops_analyze`.
@@ -86,7 +87,8 @@ export const validate_dependency_graph = (repos, options = {}) => {
86
87
  * (no `log`) to avoid emitting a redundant "Analyzing dependencies" line.
87
88
  */
88
89
  export const analyze_repos = (repos) => {
89
- const { graph, publishing_order: order } = validate_dependency_graph(repos, {
90
+ // Only npm packages form the dependency graph; non-npm repos (e.g. cargo) are excluded.
91
+ const { graph, publishing_order: order } = validate_dependency_graph(repos.filter(repo_is_npm), {
90
92
  throw_on_prod_cycles: false, // report, don't throw
91
93
  log_cycles: false, // callers format their own cycle output
92
94
  log_order: false,
@@ -1,6 +1,6 @@
1
- import type { PackageJson } from '@fuzdev/fuz_util/package_json.js';
2
- import { Library } from '@fuzdev/fuz_ui/library.svelte.js';
3
- import type { Logger } from '@fuzdev/fuz_util/log.js';
1
+ import type { PackageJson } from '@fuzdev/fuz_util/package_json.ts';
2
+ import { Library } from '@fuzdev/fuz_ui/library.svelte.ts';
3
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
4
4
  import type { GitOperations, NpmOperations } from './operations.js';
5
5
  import type { GitopsConfig, GitopsRepoConfig } from './gitops_config.js';
6
6
  import type { ResolvedGitopsConfig } from './resolved_gitops_config.js';
@@ -9,6 +9,14 @@ import type { ResolvedGitopsConfig } from './resolved_gitops_config.js';
9
9
  * Does not extend `LocalRepoPath` - `Library` is source of truth for name/repo_url/etc.
10
10
  */
11
11
  export interface LocalRepo {
12
+ /**
13
+ * Which packaging ecosystem the repo belongs to. `npm` repos (with a
14
+ * `package.json`) take part in the changeset publishing cascade; `cargo` repos
15
+ * (a Rust `Cargo.toml`, no `package.json`) are dashboard-only — fetched and
16
+ * rendered like any repo but excluded from publishing/analysis. See
17
+ * `repo_is_npm`.
18
+ */
19
+ kind: 'npm' | 'cargo';
12
20
  library: Library;
13
21
  /** The repo's full `package.json` (with `dependencies`/`devDependencies`). */
14
22
  package_json: PackageJson;
@@ -74,6 +82,12 @@ export declare const local_repo_load: ({ local_repo_path, log: _log, git_ops, np
74
82
  sync?: boolean;
75
83
  allow_dirty?: boolean;
76
84
  }) => Promise<LocalRepo>;
85
+ /**
86
+ * Whether a repo is an npm package and so participates in publishing and
87
+ * dependency analysis. Non-npm repos (e.g. Rust `cargo` repos) are still synced
88
+ * and rendered on the dashboard, but excluded from the changeset cascade.
89
+ */
90
+ export declare const repo_is_npm: (repo: LocalRepo) => boolean;
77
91
  export declare const local_repos_ensure: ({ resolved_config, repos_dir, gitops_config, download, log, npm_ops, }: {
78
92
  resolved_config: ResolvedGitopsConfig;
79
93
  repos_dir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"local_repo.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/local_repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local_repo.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/local_repo.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,16 @@
1
- import { strip_end } from '@fuzdev/fuz_util/string.js';
2
- import { Library } from '@fuzdev/fuz_ui/library.svelte.js';
1
+ import { strip_end } from '@fuzdev/fuz_util/string.ts';
2
+ import { to_error_message } from '@fuzdev/fuz_util/error.ts';
3
+ import { library_json_from_modules } from '@fuzdev/fuz_util/library_json.ts';
4
+ import { Library } from '@fuzdev/fuz_ui/library.svelte.ts';
3
5
  import { existsSync } from 'node:fs';
4
6
  import { join } from 'node:path';
5
7
  import { TaskError } from '@fuzdev/gro';
6
- import { library_load_from_repo } from '@fuzdev/gro/library_load.js';
7
- import { spawn_out } from '@fuzdev/fuz_util/process.js';
8
- import { map_concurrent_settled } from '@fuzdev/fuz_util/async.js';
8
+ import { library_load_from_repo } from '@fuzdev/gro/library_load.ts';
9
+ import { spawn_out } from '@fuzdev/fuz_util/process.ts';
10
+ import { map_concurrent_settled } from '@fuzdev/fuz_util/async.ts';
9
11
  import { default_git_operations, default_npm_operations } from './operations_defaults.js';
10
12
  import { GITOPS_CONCURRENCY_DEFAULT } from './gitops_constants.js';
13
+ import { cargo_toml_load } from './cargo_toml.js';
11
14
  /**
12
15
  * Loads repo data, optionally syncing the working tree first.
13
16
  *
@@ -117,6 +120,13 @@ export const local_repo_load = async ({ local_repo_path, log: _log, git_ops = de
117
120
  }
118
121
  }
119
122
  }
123
+ // A repo with no `package.json` but a Rust `Cargo.toml` isn't an npm package and can't be
124
+ // analyzed as a library. Load it as a dashboard-only `cargo` repo (CI, PRs, identity) that
125
+ // publishing/analysis skips. Anything else falls through to the npm loader below, whose
126
+ // error covers a genuinely missing or unreadable manifest.
127
+ if (!existsSync(join(repo_dir, 'package.json')) && existsSync(join(repo_dir, 'Cargo.toml'))) {
128
+ return local_repo_load_cargo({ local_repo_path });
129
+ }
120
130
  // Load library metadata via svelte-docinfo analysis (cached under `.gro/library.json`).
121
131
  let library_json;
122
132
  let package_json;
@@ -124,12 +134,13 @@ export const local_repo_load = async ({ local_repo_path, log: _log, git_ops = de
124
134
  ({ library_json, package_json } = await library_load_from_repo(repo_dir, { log: _log }));
125
135
  }
126
136
  catch (err) {
127
- const message = err instanceof Error ? err.message : String(err);
137
+ const message = to_error_message(err);
128
138
  _log?.warn(`Failed to load library metadata for repo "${repo_name}" in ${repo_dir}: ${message}`);
129
139
  throw new TaskError(`Failed to load library metadata for repo "${repo_name}" in ${repo_dir}: ${message}`);
130
140
  }
131
141
  const library = new Library(library_json);
132
142
  const local_repo = {
143
+ kind: 'npm',
133
144
  library,
134
145
  package_json,
135
146
  repo_dir,
@@ -148,6 +159,43 @@ export const local_repo_load = async ({ local_repo_path, log: _log, git_ops = de
148
159
  }
149
160
  return local_repo;
150
161
  };
162
+ /**
163
+ * Whether a repo is an npm package and so participates in publishing and
164
+ * dependency analysis. Non-npm repos (e.g. Rust `cargo` repos) are still synced
165
+ * and rendered on the dashboard, but excluded from the changeset cascade.
166
+ */
167
+ export const repo_is_npm = (repo) => repo.kind === 'npm';
168
+ /**
169
+ * Loads a non-npm Rust repo as a dashboard-only `LocalRepo`. It has no
170
+ * `package.json`, so there's no `svelte-docinfo` analysis and no npm dependency
171
+ * graph — a lightweight `Library` is synthesized from the repo's `Cargo.toml`
172
+ * (best-effort name/version/description) and its configured repo URL, which is
173
+ * what the dashboard renders (CI status, PRs, identity). Marked `private` so it
174
+ * never reads as an npm publish target, and tagged `cargo` so the publishing and
175
+ * analysis paths skip it (see `repo_is_npm`).
176
+ */
177
+ const local_repo_load_cargo = async ({ local_repo_path, }) => {
178
+ const { repo_config, repo_dir, repo_name, repo_url, repo_git_ssh_url } = local_repo_path;
179
+ const cargo = await cargo_toml_load(repo_dir);
180
+ // A Cargo workspace root has no `name`, so fall back to the repo name parsed from
181
+ // the URL; the config's `repo_url` is the authoritative `repository`.
182
+ const package_json = {
183
+ name: cargo?.name ?? repo_name,
184
+ version: cargo?.version ?? '0.0.0',
185
+ repository: cargo?.repository ?? repo_url,
186
+ private: true,
187
+ ...(cargo?.description ? { description: cargo.description } : null),
188
+ };
189
+ const library = new Library(library_json_from_modules(package_json, []));
190
+ return {
191
+ kind: 'cargo',
192
+ library,
193
+ package_json,
194
+ repo_dir,
195
+ repo_git_ssh_url,
196
+ repo_config,
197
+ };
198
+ };
151
199
  export const local_repos_ensure = async ({ resolved_config, repos_dir, gitops_config, download, log, npm_ops = default_npm_operations, }) => {
152
200
  let local_repo_paths = null;
153
201
  if (!resolved_config.local_repos_missing) {
@@ -1,4 +1,4 @@
1
- import type { Logger } from '@fuzdev/fuz_util/log.js';
1
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
2
2
  import type { DependencyGraphBuilder } from './dependency_graph.js';
3
3
  /**
4
4
  * Formats wildcard dependencies as styled strings.
@@ -1,5 +1,5 @@
1
- import type { Logger } from '@fuzdev/fuz_util/log.js';
2
- import type { LocalRepo } from './local_repo.js';
1
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
2
+ import { type LocalRepo } from './local_repo.js';
3
3
  import { type VersionStrategy } from './dependency_updater.js';
4
4
  import { type DependencyUpdate, type PublishingPlan } from './publishing_plan.js';
5
5
  import type { GitopsOperations } from './operations.js';
@@ -50,7 +50,7 @@ export declare const publish_repos: (repos: Array<LocalRepo>, options: Publishin
50
50
  * before any side effect, a dry run still reports the partial cascade but returns
51
51
  * `ok: false`. This is the single error gate — `--no-plan` can't bypass it.
52
52
  */
53
- export declare const execute_publishing_plan: (repos: Array<LocalRepo>, plan: PublishingPlan, options: PublishingOptions) => Promise<PublishingResult>;
53
+ export declare const execute_publishing_plan: (all_repos: Array<LocalRepo>, plan: PublishingPlan, options: PublishingOptions) => Promise<PublishingResult>;
54
54
  /**
55
55
  * Groups dependency updates by dependent package — `dependent → (dependency → new
56
56
  * version)`, the shape `update_package_json` consumes. Restricted by `predicate` (e.g.
@@ -1 +1 @@
1
- {"version":3,"file":"multi_repo_publisher.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/multi_repo_publisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAKpD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAsB,KAAK,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAGN,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,KAAK,sBAAsB,EAG3B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,sFAAsF;IACtF,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,oBAAoB,CAAC;IAC9B,+FAA+F;IAC/F,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,yEAAyE;IACzE,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,aAAa,GACzB,OAAO,KAAK,CAAC,SAAS,CAAC,EACvB,SAAS,iBAAiB,KACxB,OAAO,CAAC,gBAAgB,CAO1B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GACnC,OAAO,KAAK,CAAC,SAAS,CAAC,EACvB,MAAM,cAAc,EACpB,SAAS,iBAAiB,KACxB,OAAO,CAAC,gBAAgB,CAwX1B,CAAC;AA+EF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GACpC,SAAS,KAAK,CAAC,gBAAgB,CAAC,EAChC,WAAW,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACxC,WAAW,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,KAC9C,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAcjC,CAAC"}
1
+ {"version":3,"file":"multi_repo_publisher.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/multi_repo_publisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAKpD,OAAO,EAAc,KAAK,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAsB,KAAK,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAGN,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,KAAK,sBAAsB,EAG3B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,sFAAsF;IACtF,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,oBAAoB,CAAC;IAC9B,+FAA+F;IAC/F,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,yEAAyE;IACzE,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,aAAa,GACzB,OAAO,KAAK,CAAC,SAAS,CAAC,EACvB,SAAS,iBAAiB,KACxB,OAAO,CAAC,gBAAgB,CAO1B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GACnC,WAAW,KAAK,CAAC,SAAS,CAAC,EAC3B,MAAM,cAAc,EACpB,SAAS,iBAAiB,KACxB,OAAO,CAAC,gBAAgB,CA4X1B,CAAC;AA+EF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GACpC,SAAS,KAAK,CAAC,gBAAgB,CAAC,EAChC,WAAW,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACxC,WAAW,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,KAC9C,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAcjC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { TaskError } from '@fuzdev/gro';
2
2
  import { join } from 'node:path';
3
3
  import { styleText as st } from 'node:util';
4
+ import { repo_is_npm } from './local_repo.js';
4
5
  import { update_package_json } from './dependency_updater.js';
5
6
  import { generate_publishing_plan, } from './publishing_plan.js';
6
7
  import { default_gitops_operations } from './operations_defaults.js';
@@ -23,9 +24,12 @@ export const publish_repos = async (repos, options) => {
23
24
  * before any side effect, a dry run still reports the partial cascade but returns
24
25
  * `ok: false`. This is the single error gate — `--no-plan` can't bypass it.
25
26
  */
26
- export const execute_publishing_plan = async (repos, plan, options) => {
27
+ export const execute_publishing_plan = async (all_repos, plan, options) => {
27
28
  const start_time = Date.now();
28
29
  const { wetrun, log, ops = default_gitops_operations } = options;
30
+ // Only npm repos publish; drop any non-npm repos (e.g. cargo) so preflight and the
31
+ // executor's name lookup never touch them. The plan already excludes them too.
32
+ const repos = all_repos.filter(repo_is_npm);
29
33
  // Fail loud on an incomplete plan. Executing one with errors would silently skip the
30
34
  // affected packages. A wetrun aborts before touching npm or git; a dry run proceeds
31
35
  // (no side effects) but the result is not ok (see the summary below).
@@ -1,4 +1,4 @@
1
- import type { Logger } from '@fuzdev/fuz_util/log.js';
1
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
2
2
  export interface WaitOptions {
3
3
  log?: Logger;
4
4
  max_attempts?: number;
@@ -1,5 +1,5 @@
1
- import { spawn_out } from '@fuzdev/fuz_util/process.js';
2
- import { wait } from '@fuzdev/fuz_util/async.js';
1
+ import { spawn_out } from '@fuzdev/fuz_util/process.ts';
2
+ import { wait } from '@fuzdev/fuz_util/async.ts';
3
3
  import { styleText as st } from 'node:util';
4
4
  export const check_package_available = async (pkg, version, options = {}) => {
5
5
  const { log } = options;
@@ -33,9 +33,9 @@
33
33
  *
34
34
  * @module
35
35
  */
36
- import type { Result } from '@fuzdev/fuz_util/result.js';
37
- import type { FsError } from '@fuzdev/fuz_util/fs.js';
38
- import type { Logger } from '@fuzdev/fuz_util/log.js';
36
+ import type { Result } from '@fuzdev/fuz_util/result.ts';
37
+ import type { FsError } from '@fuzdev/fuz_util/fs.ts';
38
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
39
39
  import type { LocalRepo } from './local_repo.js';
40
40
  import type { ChangesetInfo } from './changeset_reader.js';
41
41
  import type { BumpType } from './version_utils.js';
@@ -359,7 +359,7 @@ export interface PreflightOperations {
359
359
  *
360
360
  * Errors are typed via `FsError` (`not_found | permission_denied |
361
361
  * already_exists | io_error`) so callers can branch on `kind` instead of
362
- * regex-matching `message`. See `@fuzdev/fuz_util/fs.js`.
362
+ * regex-matching `message`. See `@fuzdev/fuz_util/fs.ts`.
363
363
  */
364
364
  export interface FsOperations {
365
365
  /**
@@ -6,11 +6,11 @@
6
6
  *
7
7
  * @module
8
8
  */
9
- import { spawn_out } from '@fuzdev/fuz_util/process.js';
9
+ import { spawn_out } from '@fuzdev/fuz_util/process.ts';
10
10
  import { readFile, writeFile, mkdir, stat } from 'node:fs/promises';
11
- import { git_checkout } from '@fuzdev/fuz_util/git.js';
12
- import { fs_classify_error } from '@fuzdev/fuz_util/fs.js';
13
- import { EMPTY_OBJECT } from '@fuzdev/fuz_util/object.js';
11
+ import { git_checkout } from '@fuzdev/fuz_util/git.ts';
12
+ import { fs_classify_error } from '@fuzdev/fuz_util/fs.ts';
13
+ import { EMPTY_OBJECT } from '@fuzdev/fuz_util/object.ts';
14
14
  import { has_changesets, read_changesets, predict_next_version } from './changeset_reader.js';
15
15
  import { wait_for_package } from './npm_registry.js';
16
16
  import { run_preflight_checks } from './preflight_checks.js';
@@ -1,4 +1,4 @@
1
- import type { Logger } from '@fuzdev/fuz_util/log.js';
1
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
2
2
  export type OutputFormat = 'stdout' | 'json' | 'markdown';
3
3
  export interface OutputOptions {
4
4
  format: OutputFormat;
@@ -1,4 +1,4 @@
1
- import type { Logger } from '@fuzdev/fuz_util/log.js';
1
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
2
2
  import type { LocalRepo } from './local_repo.js';
3
3
  import type { GitOperations, NpmOperations, BuildOperations, ChangesetOperations } from './operations.js';
4
4
  export interface PreflightOptions {
@@ -1,4 +1,4 @@
1
- import { spawn_out } from '@fuzdev/fuz_util/process.js';
1
+ import { spawn_out } from '@fuzdev/fuz_util/process.ts';
2
2
  import { styleText as st } from 'node:util';
3
3
  import { default_git_operations, default_npm_operations, default_build_operations, default_changeset_operations, } from './operations_defaults.js';
4
4
  /**
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @module
9
9
  */
10
- import { UnreachableError } from '@fuzdev/fuz_util/error.js';
10
+ import { UnreachableError } from '@fuzdev/fuz_util/error.ts';
11
11
  const step_via = (change) => change.needs_bump_escalation
12
12
  ? 'escalation'
13
13
  : change.has_changesets
@@ -1,5 +1,5 @@
1
- import type { Logger } from '@fuzdev/fuz_util/log.js';
2
- import type { LocalRepo } from './local_repo.js';
1
+ import type { Logger } from '@fuzdev/fuz_util/log.ts';
2
+ import { type LocalRepo } from './local_repo.js';
3
3
  import { type BumpType } from './version_utils.js';
4
4
  import type { ChangesetOperations } from './operations.js';
5
5
  export { log_publishing_plan, type LogPlanOptions } from './publishing_plan_logging.js';
@@ -95,5 +95,5 @@ export interface GeneratePlanOptions {
95
95
  * Shows version changes, dependency updates, and breaking change cascades.
96
96
  * Uses fixed-point iteration to resolve transitive cascades.
97
97
  */
98
- export declare const generate_publishing_plan: (repos: Array<LocalRepo>, options?: GeneratePlanOptions) => Promise<PublishingPlan>;
98
+ export declare const generate_publishing_plan: (all_repos: Array<LocalRepo>, options?: GeneratePlanOptions) => Promise<PublishingPlan>;
99
99
  //# sourceMappingURL=publishing_plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"publishing_plan.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/publishing_plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publishing_plan.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/publishing_plan.ts"],"names":[],"mappings":"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"}