@angelmsger/fx 0.10.1 → 0.11.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.
- package/CHANGELOG.md +56 -0
- package/README.md +7 -8
- package/defaults/tools.yaml +9 -0
- package/dist/adapters/ci/github-actions/ci.js +95 -0
- package/dist/adapters/ci/github-actions/ci.js.map +1 -0
- package/dist/adapters/ci/github-actions/provider.js +33 -0
- package/dist/adapters/ci/github-actions/provider.js.map +1 -0
- package/dist/adapters/code-host/github/provider.js +207 -0
- package/dist/adapters/code-host/github/provider.js.map +1 -0
- package/dist/adapters/github/gh.js +103 -0
- package/dist/adapters/github/gh.js.map +1 -0
- package/dist/adapters/process/launch.js +55 -0
- package/dist/adapters/process/launch.js.map +1 -0
- package/dist/adapters/process/node-process.js +3 -3
- package/dist/adapters/process/node-process.js.map +1 -1
- package/dist/adapters/process/powershell.js +13 -2
- package/dist/adapters/process/powershell.js.map +1 -1
- package/dist/adapters/process/stdio-bridge.js +2 -2
- package/dist/adapters/process/stdio-bridge.js.map +1 -1
- package/dist/application/docs/derive.js +14 -5
- package/dist/application/docs/derive.js.map +1 -1
- package/dist/application/import.js +2 -1
- package/dist/application/import.js.map +1 -1
- package/dist/application/login/collect.js +12 -6
- package/dist/application/login/collect.js.map +1 -1
- package/dist/application/release/ci.js +15 -4
- package/dist/application/release/ci.js.map +1 -1
- package/dist/application/release/errors.js +4 -0
- package/dist/application/release/errors.js.map +1 -1
- package/dist/application/release/facts.js +24 -3
- package/dist/application/release/facts.js.map +1 -1
- package/dist/application/release/index.js +14 -5
- package/dist/application/release/index.js.map +1 -1
- package/dist/application/release/repo.js +109 -0
- package/dist/application/release/repo.js.map +1 -0
- package/dist/application/sync/checks.js +11 -0
- package/dist/application/sync/checks.js.map +1 -1
- package/dist/application/sync/stages.js +11 -1
- package/dist/application/sync/stages.js.map +1 -1
- package/dist/application/workspace/go-work.js +77 -0
- package/dist/application/workspace/go-work.js.map +1 -0
- package/dist/application/workspace/resources.js +9 -0
- package/dist/application/workspace/resources.js.map +1 -1
- package/dist/application/workspace/root-entries.js +3 -0
- package/dist/application/workspace/root-entries.js.map +1 -1
- package/dist/cli/base.js +3 -1
- package/dist/cli/base.js.map +1 -1
- package/dist/cli/commands/aliases.js +1 -0
- package/dist/cli/commands/aliases.js.map +1 -1
- package/dist/cli/commands/index.js +3 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/{release.js → release/check.js} +14 -13
- package/dist/cli/commands/release/check.js.map +1 -0
- package/dist/cli/commands/self/info.js +2 -2
- package/dist/cli/commands/self/info.js.map +1 -1
- package/dist/cli/flags.js +2 -2
- package/dist/cli/flags.js.map +1 -1
- package/dist/cli/help.js +2 -8
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/release-view.js +105 -17
- package/dist/cli/release-view.js.map +1 -1
- package/dist/cli/render/report.js +1 -1
- package/dist/cli/render/report.js.map +1 -1
- package/dist/cli/route/index.js +13 -1
- package/dist/cli/route/index.js.map +1 -1
- package/dist/composition/bundled.js +4 -1
- package/dist/composition/bundled.js.map +1 -1
- package/dist/composition/registry.js +4 -0
- package/dist/composition/registry.js.map +1 -1
- package/dist/domain/manifest/files.js +8 -7
- package/dist/domain/manifest/files.js.map +1 -1
- package/dist/domain/manifest/lint.js +4 -3
- package/dist/domain/manifest/lint.js.map +1 -1
- package/dist/domain/manifest/workspace.schema.js +9 -0
- package/dist/domain/manifest/workspace.schema.js.map +1 -1
- package/dist/domain/release/ci.js +11 -8
- package/dist/domain/release/ci.js.map +1 -1
- package/dist/domain/release/deps.js +3 -1
- package/dist/domain/release/deps.js.map +1 -1
- package/dist/domain/release/errors.js +8 -8
- package/dist/domain/release/errors.js.map +1 -1
- package/dist/domain/release/merge.js +26 -13
- package/dist/domain/release/merge.js.map +1 -1
- package/dist/domain/release/policy.js +2 -0
- package/dist/domain/release/policy.js.map +1 -1
- package/dist/domain/release/types.js +2 -1
- package/dist/domain/release/types.js.map +1 -1
- package/dist/domain/release/version.js +133 -0
- package/dist/domain/release/version.js.map +1 -0
- package/dist/domain/release/window.js +1 -1
- package/dist/domain/release/window.js.map +1 -1
- package/dist/domain/setup/planner.js +7 -5
- package/dist/domain/setup/planner.js.map +1 -1
- package/dist/domain/workspace/commits.js +4 -1
- package/dist/domain/workspace/commits.js.map +1 -1
- package/dist/domain/workspace/go-work.js +75 -0
- package/dist/domain/workspace/go-work.js.map +1 -0
- package/dist/domain/workspace/ref.js +3 -0
- package/dist/domain/workspace/ref.js.map +1 -1
- package/package.json +4 -1
- package/skills/fx-workspace/SKILL.md +1 -1
- package/skills/fx-workspace/references/commands.md +33 -31
- package/skills/fx-workspace/references/workspace-tasks.md +6 -5
- package/dist/cli/commands/release.js.map +0 -1
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
// What a code host says about a repository's history, in the host-neutral
|
|
2
2
|
// shape the release check reasons about.
|
|
3
|
-
|
|
3
|
+
// How a person names a commit: its first seven hexadecimal digits.
|
|
4
|
+
export function shortSha(sha) {
|
|
5
|
+
return sha.slice(0, 7);
|
|
6
|
+
}
|
|
4
7
|
//# sourceMappingURL=commits.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commits.js","sourceRoot":"","sources":["../../../src/domain/workspace/commits.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,yCAAyC"}
|
|
1
|
+
{"version":3,"file":"commits.js","sourceRoot":"","sources":["../../../src/domain/workspace/commits.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,yCAAyC;AAuBzC,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// The Go workspace file fx keeps at the root when the manifest asks for one: every
|
|
2
|
+
// Go module checked out there, at the newest `go` version any of them requires, so
|
|
3
|
+
// each module builds against its siblings' checkouts. The file announces itself on
|
|
4
|
+
// its first line, so fx can tell its own go.work from a person's and never replace
|
|
5
|
+
// the latter.
|
|
6
|
+
export const GO_WORK = 'go.work';
|
|
7
|
+
export const GO_WORK_SUM = 'go.work.sum';
|
|
8
|
+
const PREFIX = '// fx:derived ';
|
|
9
|
+
export const isDerivedGoWork = (text) => text.startsWith(PREFIX);
|
|
10
|
+
export function goDirective(goMod) {
|
|
11
|
+
return /^[ \t]*go[ \t]+([^\s/]+)/m.exec(goMod)?.[1];
|
|
12
|
+
}
|
|
13
|
+
// Null when no module is checked out: an empty go.work would only break builds.
|
|
14
|
+
export function renderGoWork(modules) {
|
|
15
|
+
if (modules.length === 0)
|
|
16
|
+
return null;
|
|
17
|
+
const go = modules.reduce((newest, module) => newer(newest, module.go), undefined);
|
|
18
|
+
const uses = modules.map((module) => `./${module.path}`).sort();
|
|
19
|
+
return [
|
|
20
|
+
`${PREFIX}from the checked-out Go modules; regenerated by fx sync, do not edit`,
|
|
21
|
+
...(go === undefined ? [] : ['', `go ${go}`]),
|
|
22
|
+
'',
|
|
23
|
+
'use (',
|
|
24
|
+
...uses.map((use) => `\t${goToken(use)}`),
|
|
25
|
+
')',
|
|
26
|
+
'',
|
|
27
|
+
].join('\n');
|
|
28
|
+
}
|
|
29
|
+
// Go reads a token that would split, start a comment or hold an unprintable
|
|
30
|
+
// character only as a quoted string literal, and a JSON string is one.
|
|
31
|
+
function goToken(text) {
|
|
32
|
+
const bare = !/["'`()[\]{},]|\/\/|\/\*|[^\p{L}\p{M}\p{N}\p{P}\p{S}]/u.test(text);
|
|
33
|
+
return bare ? text : JSON.stringify(text);
|
|
34
|
+
}
|
|
35
|
+
function newer(a, b) {
|
|
36
|
+
if (a === undefined)
|
|
37
|
+
return b;
|
|
38
|
+
if (b === undefined)
|
|
39
|
+
return a;
|
|
40
|
+
return compareGoVersions(a, b) < 0 ? b : a;
|
|
41
|
+
}
|
|
42
|
+
// Go's own order: the language version `1.21` sorts before its release candidate
|
|
43
|
+
// `1.21rc1`, which sorts before the release `1.21.0`. Before 1.21 a missing patch
|
|
44
|
+
// means `.0`. A malformed version sorts before every valid one.
|
|
45
|
+
function compareGoVersions(a, b) {
|
|
46
|
+
const [x, y] = [parseGoVersion(a), parseGoVersion(b)];
|
|
47
|
+
for (const field of ['major', 'minor', 'patch']) {
|
|
48
|
+
const order = compareNumbers(x[field], y[field]);
|
|
49
|
+
if (order !== 0)
|
|
50
|
+
return order;
|
|
51
|
+
}
|
|
52
|
+
if (x.kind !== y.kind)
|
|
53
|
+
return x.kind < y.kind ? -1 : 1;
|
|
54
|
+
return compareNumbers(x.pre, y.pre);
|
|
55
|
+
}
|
|
56
|
+
function parseGoVersion(text) {
|
|
57
|
+
const number = '(0|[1-9]\\d*)';
|
|
58
|
+
const match = new RegExp(`^${number}(?:\\.${number}(?:\\.${number}|([a-z]+)${number}?)?)?$`).exec(text);
|
|
59
|
+
if (match === null)
|
|
60
|
+
return { major: '', minor: '', patch: '', kind: '', pre: '' };
|
|
61
|
+
const [, major = '', minor, patch, kind = '', pre = ''] = match;
|
|
62
|
+
if (minor === undefined)
|
|
63
|
+
return { major, minor: '0', patch: '0', kind, pre };
|
|
64
|
+
const defaultPatch = kind === '' && compareNumbers(minor, '21') < 0 ? '0' : '';
|
|
65
|
+
return { major, minor, patch: patch ?? defaultPatch, kind, pre };
|
|
66
|
+
}
|
|
67
|
+
// Decimal strings without leading zeros; the empty string sorts first.
|
|
68
|
+
function compareNumbers(a, b) {
|
|
69
|
+
if (a.length !== b.length)
|
|
70
|
+
return a.length < b.length ? -1 : 1;
|
|
71
|
+
if (a === b)
|
|
72
|
+
return 0;
|
|
73
|
+
return a < b ? -1 : 1;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=go-work.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go-work.js","sourceRoot":"","sources":["../../../src/domain/workspace/go-work.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,9 @@ export function repoUrl(host, owner, name) {
|
|
|
28
28
|
return `${host.replace(/\/+$/, '')}/${owner}/${name}.git`;
|
|
29
29
|
}
|
|
30
30
|
function fileLocation(url) {
|
|
31
|
+
// A Windows path, as a local remote often is there, separates with either slash.
|
|
32
|
+
if (/^(?:[a-z]:[\\/]|\\\\)/i.test(url))
|
|
33
|
+
return url.replaceAll('\\', '/');
|
|
31
34
|
if (!/^file:\/\//i.test(url))
|
|
32
35
|
return url;
|
|
33
36
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../../src/domain/workspace/ref.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,iFAAiF;AACjF,8EAA8E;AAS9E,MAAM,UAAU,OAAO,CACrB,IAAyD;IAEzD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,IAA4C;IAC9D,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7F,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,MAAM,QAAQ,GAAG,QAAQ;SACtB,OAAO,CAAC,2BAA2B,EAAE,KAAK,CAAC;SAC3C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,KAAK,CAAC,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;IAC/D,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC;QACnD,OAAO,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../../src/domain/workspace/ref.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,iFAAiF;AACjF,8EAA8E;AAS9E,MAAM,UAAU,OAAO,CACrB,IAAyD;IAEzD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,IAA4C;IAC9D,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7F,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,MAAM,QAAQ,GAAG,QAAQ;SACtB,OAAO,CAAC,2BAA2B,EAAE,KAAK,CAAC;SAC3C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,KAAK,CAAC,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;IAC/D,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,iFAAiF;IACjF,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC;QACnD,OAAO,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angelmsger/fx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Manifest-driven multi-repository workspaces for people and coding agents",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -113,6 +113,9 @@
|
|
|
113
113
|
},
|
|
114
114
|
"workspace": {
|
|
115
115
|
"description": "Workspace identities: discover, inspect, relocate, rebind and unregister"
|
|
116
|
+
},
|
|
117
|
+
"release": {
|
|
118
|
+
"description": "Release checklist: what each repository would release, and whether it is ready"
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
121
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fx-workspace
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.11.0
|
|
4
4
|
description: 'Use only when the user explicitly asks for the fx workspace CLI or manifest, or the current task is inside an fx-managed workspace or routed by its fx-derived AGENTS.md. Drive workspace init and sync, repository status and selection, manifest validation and editing, companion tools and login, doctor, agent Skills, repository ownership, environment coordinates and readiness through can/where, and release checks across dependencies, branches, builds and errors. Do not use for generic Sentry, OpenObserve, Jenkins, Kubernetes, logs, errors or builds outside an fx-managed workspace.'
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
@@ -1,34 +1,18 @@
|
|
|
1
1
|
# Command reference
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| ------------------------------ | ------------------------------------------------------------------ |
|
|
10
|
-
| `--format json\|ndjson\|human` | output format; agents use `json` |
|
|
11
|
-
| `--details` | full workflow reports; fact queries are already complete |
|
|
12
|
-
| `--fields a,b.c` | keep only these dot paths |
|
|
13
|
-
| `--workspace <name-or-root>` | a registered name or root instead of the workspace containing cwd |
|
|
14
|
-
| `--no-input` | never prompt; a needed answer becomes a structured error |
|
|
15
|
-
| `--yes` | confirm prompts, including trust-on-first-use of manifest commands |
|
|
16
|
-
| `--dry-run` | on write commands: print the plan, change nothing |
|
|
17
|
-
| `--allow-writes` | override read-only posture once |
|
|
18
|
-
| `--quiet` | drop notices and progress (errors stay) |
|
|
19
|
-
|
|
20
|
-
Every `--help` ends with an `AGENT USAGE` block that restates the output
|
|
21
|
-
and error contract.
|
|
22
|
-
|
|
23
|
-
Use a registered name or root directory with `--workspace`; an unknown value
|
|
24
|
-
never selects a different default. When a host truncates a large response, use
|
|
3
|
+
`fx <command> --help` describes every flag the running executable accepts,
|
|
4
|
+
including the global ones, and ends with an `AGENT USAGE` block that restates
|
|
5
|
+
the output and error contract. This guide covers what the help cannot: how to
|
|
6
|
+
read the results.
|
|
7
|
+
|
|
8
|
+
An unknown `--workspace` value never selects a different default. When a host truncates a large response, use
|
|
25
9
|
`--fields` on a read-only query to retrieve the required facts. If you capture full
|
|
26
10
|
output, keep it within the task's authorized directory: shell redirection writes a
|
|
27
11
|
file even when the fx command is read-only.
|
|
28
12
|
|
|
29
13
|
## Workflow report views
|
|
30
14
|
|
|
31
|
-
The four workflow reports (`init`, `sync`, `doctor`, `release`) default to compact
|
|
15
|
+
The four workflow reports (`init`, `sync`, `doctor`, `release check`) default to compact
|
|
32
16
|
JSON. `output_mode: summary` and `omitted` describe the view; omitted counts are
|
|
33
17
|
not pagination. All warning/failure rows and exact pending command vectors remain.
|
|
34
18
|
`--details` returns the full application result; explicit `--fields` projects it.
|
|
@@ -173,9 +157,10 @@ same ambiguous setup. Doctor marks its missing verification as incomplete.
|
|
|
173
157
|
`fx doctor` returns `preparation`, diagnostic `coverage` (`complete` or `incomplete`),
|
|
174
158
|
`summary {ok, warn, fail}` and `findings[]`. The preparation verdict owns task completion;
|
|
175
159
|
optional host activation can remain unverified. An incomplete verdict exits 12.
|
|
176
|
-
`fx release` retains `ok`, `complete`, summary and findings and exits zero when its
|
|
160
|
+
`fx release check` retains `ok`, `complete`, summary and findings and exits zero when its
|
|
177
161
|
checklist was produced. Findings carry group, id, level, coverage, message, fix and
|
|
178
|
-
handoff; full results also carry evidence.
|
|
162
|
+
handoff; full results also carry evidence. `repos[]` says what each release would ship,
|
|
163
|
+
in summaries too. For `can`, inspect its capability status.
|
|
179
164
|
|
|
180
165
|
Doctor groups are `repos`, `root`, `tools`, `login`, `agents`, `manifest`, `self`,
|
|
181
166
|
`hooks`, `mcp` and `rules`. `root` lists entries at the workspace root that nothing
|
|
@@ -190,19 +175,36 @@ repair rows; use `--details` to inspect all attempts. Each attempt is
|
|
|
190
175
|
structured recovery errors before post-repair findings are collected.
|
|
191
176
|
`completed` means the repair ran, not that the subsequent check passed.
|
|
192
177
|
|
|
193
|
-
`fx release [<repo>...] [--tag] [--only deps,merge,ci,errors] [--env] [--since]
|
|
194
|
-
[--jobs]` covers repositories selected by manifest release policy
|
|
195
|
-
is
|
|
178
|
+
`fx release check [<repo>...] [--tag] [--only deps,merge,ci,errors] [--env] [--since]
|
|
179
|
+
[--jobs]` covers repositories selected by manifest release policy; `fx release` is its
|
|
180
|
+
compatibility name. It is read-only: it never merges, tags, publishes or deploys.
|
|
181
|
+
|
|
182
|
+
Each `repos[]` entry is `{name, source, target, version_file, unmerged, note,
|
|
183
|
+
unanswered}`. `source`
|
|
184
|
+
and `target` are the branch heads `{branch, sha, date, message, version}`; `version` is
|
|
185
|
+
what the repository's dependency file declares at that commit, null when it declares
|
|
186
|
+
none. `target` is null for a repository releasing from one branch, and both are null
|
|
187
|
+
when the code host was not asked or did not answer, which the findings explain.
|
|
188
|
+
`unmerged` is `{commits, authors}`: how many people's commits the source has that the
|
|
189
|
+
target lacks, and how many people wrote them; null when not compared. To read those
|
|
190
|
+
commits, ask the code host's own CLI for the range from `target.sha` to `source.sha`;
|
|
191
|
+
`fx repo show <repo>` gives where the repository lives on the host. `unanswered[]` lists
|
|
192
|
+
each question to the code host that failed as `{field, reason}`, where `field` is the
|
|
193
|
+
value left null (`version_file`, `source.commit`, `source.version`, `target.commit`,
|
|
194
|
+
`target.version`, `unmerged`); a null without an entry means the repository declares
|
|
195
|
+
none.
|
|
196
|
+
|
|
197
|
+
Evidence is grouped by check:
|
|
196
198
|
|
|
197
199
|
| Group | Evidence |
|
|
198
200
|
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
199
201
|
| `merge` | `source`, `target`, `ahead[]`, `behind[]`, `filtered`, `unknown[]` directions; commits have `sha`, `author {id, name}`, `date`, `message` |
|
|
200
202
|
| `deps` | `file`, `offending[] {name, version, section, runtime}` |
|
|
201
|
-
| `ci` | `builds[] {side, env, branch, path, number, status, started_at, url, current}`; null `path` means no declared job
|
|
203
|
+
| `ci` | `builds[] {side, env, branch, path, number, status, started_at, url, head, current}`; null `path` means no declared job |
|
|
202
204
|
| `errors` | `env`, `slug`, `since`, `capped`, `undated`, `issues[] {short_id, title, level, first_seen, last_seen, count, url}` |
|
|
203
205
|
|
|
204
|
-
CI `current` compares build start time with branch
|
|
205
|
-
has no built-commit field, so it is a freshness heuristic, not revision verification.
|
|
206
|
+
CI `current` compares build start time with the time of the branch head `head`. The CI
|
|
207
|
+
result has no built-commit field, so it is a freshness heuristic, not revision verification.
|
|
206
208
|
Use the companion's SCM/build details when the task requires an exact commit match.
|
|
207
209
|
The full report's merge/dependency/issue evidence is available with `--details`.
|
|
208
210
|
|
|
@@ -23,7 +23,7 @@ covered by the [Skill reference](commands.md#standalone-companion-skill).
|
|
|
23
23
|
|
|
24
24
|
## Read a result before continuing
|
|
25
25
|
|
|
26
|
-
- `init`, `sync`, `doctor`, `release` default to JSON summaries. `omitted` counts
|
|
26
|
+
- `init`, `sync`, `doctor`, `release check` default to JSON summaries. `omitted` counts
|
|
27
27
|
normal rows/evidence; exceptions and recovery remain. Start with the summary;
|
|
28
28
|
use `--fields` for needed evidence or `--details` when all rows are necessary.
|
|
29
29
|
Explicit `--fields` projects the full result in any format: JSON/NDJSON emit one
|
|
@@ -34,8 +34,9 @@ covered by the [Skill reference](commands.md#standalone-companion-skill).
|
|
|
34
34
|
retains all blockers and exits 12. Follow `preparation.next`; `next_actions` are Agent work, while `resume` waits
|
|
35
35
|
for changed prerequisites.
|
|
36
36
|
Optional activation stays separate. Doctor's `coverage` describes diagnostics.
|
|
37
|
-
- For `release`, inspect `ok`, coverage `complete
|
|
38
|
-
It can exit zero with failures and does
|
|
37
|
+
- For `release check`, inspect `ok`, coverage `complete`, warning/failure findings and
|
|
38
|
+
`repos[]`, what each repository would ship. It can exit zero with failures and does
|
|
39
|
+
not publish anything.
|
|
39
40
|
- For `login`, retain `summary`, `problems` and step recovery fields. `handoff`
|
|
40
41
|
needs input; `blocked` has an unfinished prerequisite; `not_started` was not attempted.
|
|
41
42
|
- Read partial stdout after a nonzero exit. It preserves completed effects and
|
|
@@ -120,7 +121,7 @@ stand in for `fx`; `self update` cannot repair an entry that cannot execute.
|
|
|
120
121
|
| Inspect one repository and owners | `fx repo show <repo>`; `fx member show <name>` |
|
|
121
122
|
| Find service diagnostics | `fx where <repo> --env <env>` |
|
|
122
123
|
| Check tools/access | `fx can <capability-or-tool>`; `fx doctor --tool <tool>` |
|
|
123
|
-
| Inspect repository release criteria | `fx release <repo> --only merge --details`
|
|
124
|
+
| Inspect repository release criteria | `fx release check <repo> --only merge --details` |
|
|
124
125
|
| Install/update a companion | `fx tool install <tool> --dry-run`; `fx tool update <tool> --dry-run` |
|
|
125
126
|
| Review tool provenance | `fx tool history [tool]`; `fx tool inventory` |
|
|
126
127
|
| Inspect host resources | `fx agent skills`; `fx hook list`; `fx mcp list/show` |
|
|
@@ -149,7 +150,7 @@ includes untracked files; `dirty` itself keeps its tracked-change meaning and
|
|
|
149
150
|
Use `--format json` for results and `--help` for exact arguments. The table's
|
|
150
151
|
`pick/unpick` notation means separate commands. Bare topics show their commands;
|
|
151
152
|
help and completion prefer canonical names while preserving compatibility aliases.
|
|
152
|
-
`release` evaluates a checklist; it does not publish packages or deploy services.
|
|
153
|
+
`release check` evaluates a checklist; it does not publish packages or deploy services.
|
|
153
154
|
|
|
154
155
|
## What sync will and will not do
|
|
155
156
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../../src/cli/commands/release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAc,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,SAAS;IACnD,MAAM,CAAU,WAAW,GACzB,iGAAiG,CAAC;IACpG,MAAM,CAAU,QAAQ,GAAG;QACzB,yCAAyC;QACzC,wGAAwG;KACzG,CAAC;IACF,MAAM,CAAU,MAAM,GAAG,KAAK,CAAC;IAC/B,MAAM,CAAU,IAAI,GAAG;QACrB,IAAI,EAAE,QAAQ,CAAC,yDAAyD,CAAC;KAC1E,CAAC;IACF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,EAAE,QAAQ,CAAC,uCAAuC,CAAC;QACtD,IAAI,EAAE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QAC3C,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC;QAC1F,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC;QAC/F,IAAI,EAAE,QAAQ;KACf,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;YACrF,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,IAAiB;YACzD,IAAI,EAAE,KAAK,CAAC,GAAG;YACf,IAAI,EAAE,KAAK,CAAC,IAA2B;YACvC,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;QACH,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,SAAS;YACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,WAAW,CAAC,MAAM,EAAE;gBAClB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG;gBAClC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,KAAK,IAAI;aAC7C,CAAC,CACH,CAAC;;YACC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC"}
|