@angelmsger/fx 0.12.0 → 0.13.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 (48) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/defaults/tools.yaml +14 -2
  3. package/dist/adapters/ci/jenkins-cli/recipes.js +5 -1
  4. package/dist/adapters/ci/jenkins-cli/recipes.js.map +1 -1
  5. package/dist/adapters/family/service.js +5 -0
  6. package/dist/adapters/family/service.js.map +1 -1
  7. package/dist/adapters/log-store/openobserve-cli/provider.js +1 -1
  8. package/dist/adapters/log-store/openobserve-cli/provider.js.map +1 -1
  9. package/dist/adapters/log-store/openobserve-cli/recipes.js +5 -1
  10. package/dist/adapters/log-store/openobserve-cli/recipes.js.map +1 -1
  11. package/dist/adapters/metrics/prometheus-cli/provider.js +1 -1
  12. package/dist/adapters/metrics/prometheus-cli/provider.js.map +1 -1
  13. package/dist/adapters/process/deadline-process.js +27 -5
  14. package/dist/adapters/process/deadline-process.js.map +1 -1
  15. package/dist/application/hook/observe.js +9 -3
  16. package/dist/application/hook/observe.js.map +1 -1
  17. package/dist/application/init/standalone.js +341 -0
  18. package/dist/application/init/standalone.js.map +1 -0
  19. package/dist/application/login/verify.js +4 -2
  20. package/dist/application/login/verify.js.map +1 -1
  21. package/dist/application/skill/fx-copies.js.map +1 -1
  22. package/dist/application/skill/tool-skills.js.map +1 -1
  23. package/dist/application/tool/show.js +6 -1
  24. package/dist/application/tool/show.js.map +1 -1
  25. package/dist/application/tool/toolchain.js +1 -1
  26. package/dist/application/tool/toolchain.js.map +1 -1
  27. package/dist/cli/base.js +6 -1
  28. package/dist/cli/base.js.map +1 -1
  29. package/dist/cli/commands/init.js +27 -4
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/preparation-view.js +61 -4
  32. package/dist/cli/preparation-view.js.map +1 -1
  33. package/dist/composition/command-wiring.js +14 -0
  34. package/dist/composition/command-wiring.js.map +1 -1
  35. package/dist/domain/manifest/rules/tools.js +1 -0
  36. package/dist/domain/manifest/rules/tools.js.map +1 -1
  37. package/dist/domain/manifest/tools.schema.js +6 -0
  38. package/dist/domain/manifest/tools.schema.js.map +1 -1
  39. package/dist/domain/preparation.js.map +1 -1
  40. package/dist/domain/setup/planner.js +5 -1
  41. package/dist/domain/setup/planner.js.map +1 -1
  42. package/dist/domain/setup/types.js.map +1 -1
  43. package/dist/domain/toolchain/resolve.js +26 -16
  44. package/dist/domain/toolchain/resolve.js.map +1 -1
  45. package/package.json +1 -1
  46. package/skills/fx-workspace/SKILL.md +6 -6
  47. package/skills/fx-workspace/references/commands.md +4 -1
  48. package/skills/fx-workspace/references/initialization.md +17 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,51 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## 0.13.0 (2026-10-27)
6
+
7
+ ### Added
8
+
9
+ - Set up companion tools without a manifest. `fx init` with no directory and no source
10
+ lists the tools in fx's catalog and asks which to set up, by number or name, with
11
+ Enter taking all of them; `fx init --tools <name,...>` or `--tools all` names them
12
+ for agents and scripts, and `--dry-run` previews. fx installs the tools that are
13
+ missing, has each one install its Skill for your coding agents, adds its own
14
+ `fx-workspace` Skill, and checks whether each one is signed in. On a terminal it
15
+ offers to start the setup of a tool that is not signed in (`<tool> config init`,
16
+ `gh auth login`), which asks for the service and your credentials; otherwise, and
17
+ with `--yes`, the report hands that command to you. No workspace is registered, and
18
+ a manifest still decides the tools and presets the services they point at. The JSON
19
+ report has `tools`, `tool_install` and `skills`, and `preparation.scope.workspace`
20
+ is `null`.
21
+ - Let a tool's `auth` in the catalog or a manifest name the JSON field its status must
22
+ report (`json`) and the tool's own interactive setup (`login`). The bundled catalog
23
+ names both for the family CLIs and `login` for `gh`, and `fx tool show` reports them.
24
+
25
+ ### Changed
26
+
27
+ - Tell a companion's reuse check in a background hook run how long the run can give
28
+ it, through the companion's own `--timeout`, and leave the check unasked when that is
29
+ under the ten seconds by which a companion bounds the lookups a reuse adds. The check
30
+ used to be ended when the run's time for it ran out. The reuse step's `verify` in
31
+ `fx login --list` and the init preview gains `deadline`, with the flag and the least
32
+ time the check needs (`minimumMs`).
33
+ - Record `LOGIN_UNCHECKED` in place of `LOGIN_REQUIRED` when every login check of a
34
+ background hook run that did not pass was not asked or gave no answer, which
35
+ `fx doctor` reports as incomplete coverage, as when the run ran out of time for it.
36
+
37
+ ### Fixed
38
+
39
+ - Count a Jenkins or OpenObserve environment as signed in only when
40
+ `jenkins-cli auth status` or `openobserve-cli auth status` reports
41
+ `authenticated: true`. Both exit zero when nobody is signed in, so on a machine
42
+ without credentials the sign-in step counted as done and `fx init` and `fx sync`
43
+ did not ask for it.
44
+ - Leave the declared authentication method out of the OpenObserve and Prometheus
45
+ commands `fx where` prints and probes, as checks have done since 0.9.1. A probe of
46
+ an OpenObserve context that uses basic authentication was sent with
47
+ `--auth-scheme session` and refused; the commands now name only the server's URL
48
+ and organization besides the context.
49
+
5
50
  ## 0.12.0 (2026-10-19)
6
51
 
7
52
  ### Added
@@ -14,7 +14,7 @@ defaults:
14
14
  version_args: [--version]
15
15
  install: [{ via: npm }]
16
16
  skill: { command: [skill, install], dir_flag: --dir }
17
- auth: { command: [auth, status] }
17
+ auth: { command: [auth, status], json: { path: configured, equals: true }, login: [config, init] }
18
18
  tools:
19
19
  - name: bitbucket-cli
20
20
  desc: Repositories, forks, pull requests and code review on Bitbucket
@@ -30,16 +30,28 @@ tools:
30
30
  min_version: '0.10.0'
31
31
  desc: Jobs, builds and console output in Jenkins
32
32
  install: [{ via: npm, spec: '@angelmsger/jenkins-cli' }]
33
+ auth:
34
+ command: [auth, status]
35
+ json: { path: authenticated, equals: true }
36
+ login: [config, init]
33
37
  docs: https://github.com/AngelMsger/jenkins-cli
34
38
  - name: openobserve-cli
35
39
  min_version: '0.14.0'
36
40
  desc: Logs, metrics and traces in OpenObserve
37
41
  install: [{ via: npm, spec: '@angelmsger/openobserve-cli' }]
42
+ auth:
43
+ command: [auth, status]
44
+ json: { path: authenticated, equals: true }
45
+ login: [config, init]
38
46
  docs: https://github.com/AngelMsger/openobserve-cli
39
47
  - name: prometheus-cli
40
48
  min_version: '0.2.0'
41
49
  desc: PromQL queries, series discovery, scrape targets and alerts in Prometheus
42
50
  install: [{ via: npm, spec: '@angelmsger/prometheus-cli' }]
51
+ auth:
52
+ command: [auth, status]
53
+ json: { path: authenticated, equals: true }
54
+ login: [config, init]
43
55
  docs: https://github.com/AngelMsger/prometheus-cli
44
56
  - name: jira-cli
45
57
  min_version: '0.7.0'
@@ -58,7 +70,7 @@ tools:
58
70
  - { via: brew, spec: gh }
59
71
  - { via: manual }
60
72
  skill: { command: [] }
61
- auth: { command: [auth, status] }
73
+ auth: { command: [auth, status], login: [auth, login] }
62
74
  docs: https://cli.github.com/
63
75
  - name: sentry
64
76
  min_version: '0.44.1'
@@ -9,7 +9,11 @@ export const JENKINS_RECIPES = [
9
9
  title: 'Log in to Jenkins',
10
10
  instructions: 'Prompts for your user name and an API token (Jenkins: your profile → Configure → API Token).',
11
11
  run: ['auth', 'login'],
12
- verify: { command: ['auth', 'status'] },
12
+ // `auth status` exits zero when nobody is signed in, so only `authenticated` tells.
13
+ verify: {
14
+ command: ['auth', 'status'],
15
+ json: { path: 'authenticated', equals: true, reason: 'error' },
16
+ },
13
17
  },
14
18
  ];
15
19
  //# sourceMappingURL=recipes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../../src/adapters/ci/jenkins-cli/recipes.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAIvE,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,mBAAmB;QAC1B,YAAY,EACV,8FAA8F;QAChG,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACtB,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;KACxC;CACF,CAAC"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../../src/adapters/ci/jenkins-cli/recipes.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAIvE,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,mBAAmB;QAC1B,YAAY,EACV,8FAA8F;QAChG,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACtB,oFAAoF;QACpF,MAAM,EAAE;YACN,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;SAC/D;KACF;CACF,CAAC"}
@@ -56,6 +56,10 @@ export function signInFlags(settings) {
56
56
  function flagsOf(settings, keys) {
57
57
  return keys.flatMap((key) => settings[key] === undefined ? [] : [`--${key.replaceAll('_', '-')}`, settings[key]]);
58
58
  }
59
+ // A companion bounds the lookups a reuse adds by ten seconds, or by a shorter `--timeout`.
60
+ // A lookup cut short still answers that nothing would change, which this check reads as
61
+ // passing, so the check is not asked with less than the full ten seconds.
62
+ const REUSE_DEADLINE = { flag: '--timeout', minimumMs: 10_000 };
59
63
  function reuseRecipe(tool, scope) {
60
64
  return {
61
65
  id: 'reuse',
@@ -69,6 +73,7 @@ function reuseRecipe(tool, scope) {
69
73
  verify: {
70
74
  command: [...scope, 'auth', 'reuse', '--dry-run', '--format', 'json'],
71
75
  json: { path: 'changed', equals: false, unmet: 'an existing login can be reused' },
76
+ deadline: REUSE_DEADLINE,
72
77
  },
73
78
  };
74
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/adapters/family/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/adapters/family/service.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export const openobserveCliProvider = {
23
23
  id: 'openobserve-cli',
24
24
  capability: 'log-store',
25
25
  label: 'OpenObserve stream {stream}',
26
- optionalFlags: { base_url: '--base-url', org: '--org', auth_scheme: '--auth-scheme' },
26
+ optionalFlags: { base_url: '--base-url', org: '--org' },
27
27
  command: [
28
28
  'openobserve-cli',
29
29
  'search',
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/adapters/log-store/openobserve-cli/provider.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,2DAA2D;AAI3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAiC;IAClE,EAAE,EAAE,iBAAiB;IACrB,UAAU,EAAE,WAAW;IACvB,iBAAiB,EAAE,CAAC,aAAa,CAAC;IAClC,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC;QACvE,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;KAC3C;IACD,KAAK,EAAE,CAAC,iBAAiB,CAAC;IAC1B,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC;IAC5F,OAAO,EAAE,mBAAmB;IAC5B,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,mDAAmD,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9F,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,oCAAoC,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC/E;IACD,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,gBAAgB,CAAC;QACnB,EAAE,EAAE,iBAAiB;QACrB,UAAU,EAAE,WAAW;QACvB,KAAK,EAAE,6BAA6B;QACpC,aAAa,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE;QACrF,OAAO,EAAE;YACP,iBAAiB;YACjB,QAAQ;YACR,KAAK;YACL,eAAe;YACf,WAAW;YACX,UAAU;YACV,UAAU;YACV,QAAQ;YACR,QAAQ;SACT;QACD,KAAK,EAAE;YACL,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE;gBACP,iBAAiB;gBACjB,QAAQ;gBACR,KAAK;gBACL,eAAe;gBACf,WAAW;gBACX,IAAI;gBACJ,UAAU;aACX;SACF;KACF,CAAC;CACL,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/adapters/log-store/openobserve-cli/provider.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,2DAA2D;AAI3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAiC;IAClE,EAAE,EAAE,iBAAiB;IACrB,UAAU,EAAE,WAAW;IACvB,iBAAiB,EAAE,CAAC,aAAa,CAAC;IAClC,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC;QACvE,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;KAC3C;IACD,KAAK,EAAE,CAAC,iBAAiB,CAAC;IAC1B,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC;IAC5F,OAAO,EAAE,mBAAmB;IAC5B,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,mDAAmD,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9F,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,oCAAoC,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC/E;IACD,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,gBAAgB,CAAC;QACnB,EAAE,EAAE,iBAAiB;QACrB,UAAU,EAAE,WAAW;QACvB,KAAK,EAAE,6BAA6B;QACpC,aAAa,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE;QACvD,OAAO,EAAE;YACP,iBAAiB;YACjB,QAAQ;YACR,KAAK;YACL,eAAe;YACf,WAAW;YACX,UAAU;YACV,UAAU;YACV,QAAQ;YACR,QAAQ;SACT;QACD,KAAK,EAAE;YACL,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE;gBACP,iBAAiB;gBACjB,QAAQ;gBACR,KAAK;gBACL,eAAe;gBACf,WAAW;gBACX,IAAI;gBACJ,UAAU;aACX;SACF;KACF,CAAC;CACL,CAAC"}
@@ -10,7 +10,11 @@ export const OPENOBSERVE_RECIPES = [
10
10
  title: 'Add the OpenObserve context "{context}" for {env}',
11
11
  instructions: 'The wizard asks for the server URL, organization and credentials of the {env} OpenObserve.',
12
12
  run: ['config', 'init', '--context', '{context}'],
13
- verify: { command: ['auth', 'status', '--use-context', '{context}'] },
13
+ // `auth status` exits zero when nobody is signed in, so only `authenticated` tells.
14
+ verify: {
15
+ command: ['auth', 'status', '--use-context', '{context}'],
16
+ json: { path: 'authenticated', equals: true, reason: 'error' },
17
+ },
14
18
  },
15
19
  ];
16
20
  //# sourceMappingURL=recipes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../../src/adapters/log-store/openobserve-cli/recipes.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,8CAA8C;AAI9C,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,mDAAmD;QAC1D,YAAY,EACV,4FAA4F;QAC9F,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;QACjD,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE;KACtE;CACF,CAAC"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../../src/adapters/log-store/openobserve-cli/recipes.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,8CAA8C;AAI9C,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,mDAAmD;QAC1D,YAAY,EACV,4FAA4F;QAC9F,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;QACjD,oFAAoF;QACpF,MAAM,EAAE;YACN,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC;YACzD,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;SAC/D;KACF;CACF,CAAC"}
@@ -25,7 +25,7 @@ export const prometheusCliProvider = {
25
25
  id: BINARY,
26
26
  capability: 'metrics',
27
27
  label: 'Prometheus job {job}',
28
- optionalFlags: { base_url: '--base-url', auth_scheme: '--auth-scheme' },
28
+ optionalFlags: { base_url: '--base-url' },
29
29
  command: [
30
30
  BINARY,
31
31
  'query',
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/adapters/metrics/prometheus-cli/provider.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,yFAAyF;AACzF,yFAAyF;AACzF,wEAAwE;AAIxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IAChE,EAAE,EAAE,MAAM;IACV,UAAU,EAAE,SAAS;IACrB,iBAAiB,EAAE,CAAC,YAAY,CAAC;IACjC,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC;QAChE,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;KACzC;IACD,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,kBAAkB;IAC3B,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,kDAAkD,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7F,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5E;IACD,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,gBAAgB,CAAC;QACnB,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,sBAAsB;QAC7B,aAAa,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE;QACvE,OAAO,EAAE;YACP,MAAM;YACN,OAAO;YACP,SAAS;YACT,eAAe;YACf,WAAW;YACX,SAAS;YACT,iBAAiB;SAClB;KACF,CAAC;CACL,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/adapters/metrics/prometheus-cli/provider.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,yFAAyF;AACzF,yFAAyF;AACzF,wEAAwE;AAIxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IAChE,EAAE,EAAE,MAAM;IACV,UAAU,EAAE,SAAS;IACrB,iBAAiB,EAAE,CAAC,YAAY,CAAC;IACjC,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC;QAChE,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;KACzC;IACD,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,kBAAkB;IAC3B,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,kDAAkD,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7F,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5E;IACD,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,gBAAgB,CAAC;QACnB,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,sBAAsB;QAC7B,aAAa,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;QACzC,OAAO,EAAE;YACP,MAAM;YACN,OAAO;YACP,SAAS;YACT,eAAe;YACf,WAAW;YACX,SAAS;YACT,iBAAiB;SAClB;KACF,CAAC;CACL,CAAC"}
@@ -1,5 +1,9 @@
1
- // A lifecycle worker lends every companion command the remaining task budget.
2
- // The underlying process adapter retains responsibility for cancellation.
1
+ // A lifecycle worker lends every companion command the remaining task budget, and tells
2
+ // a command that takes a deadline of its own what it was lent. The underlying process
3
+ // adapter retains responsibility for cancellation.
4
+ import { DevkitError } from '../../domain/errors.js';
5
+ // A command is told at least this much less than it is lent, so it answers before it is ended.
6
+ const ANSWER_MS = 1000;
3
7
  export class DeadlineProcess {
4
8
  process;
5
9
  budget;
@@ -12,14 +16,32 @@ export class DeadlineProcess {
12
16
  which(binary, options) {
13
17
  return this.process.which(binary, options);
14
18
  }
15
- run(vector, options = {}) {
19
+ async run(vector, options = {}) {
16
20
  const { commandMs } = this.budget;
17
- return this.process.run(vector, {
21
+ const lentMs = Math.max(1, Math.min(options.timeoutMs ?? commandMs, commandMs, this.deadline - performance.now()));
22
+ const told = options.deadline === undefined ? vector : tell(vector, options.deadline, lentMs);
23
+ return this.process.run(told, {
18
24
  ...options,
19
25
  interactive: false,
20
- timeoutMs: Math.max(1, Math.min(options.timeoutMs ?? commandMs, commandMs, this.deadline - performance.now())),
26
+ timeoutMs: lentMs,
21
27
  env: { ...options.env, GIT_TERMINAL_PROMPT: '0', GCM_INTERACTIVE: 'Never' },
22
28
  });
23
29
  }
24
30
  }
31
+ // The flag goes before an end-of-options separator, where the command still reads flags.
32
+ function tell(vector, deadline, lentMs) {
33
+ const seconds = Math.floor((lentMs - ANSWER_MS) / 1000);
34
+ if (seconds * 1000 < deadline.minimumMs)
35
+ throw shortOf(vector, lentMs, deadline);
36
+ const separator = vector.indexOf('--');
37
+ const at = separator < 0 ? vector.length : separator;
38
+ return [...vector.slice(0, at), deadline.flag, `${seconds}s`, ...vector.slice(at)];
39
+ }
40
+ function shortOf(vector, lentMs, deadline) {
41
+ const needs = Math.ceil((deadline.minimumMs + ANSWER_MS) / 1000);
42
+ return new DevkitError('internal', 'PROCESS_TIMEOUT', `${vector[0] ?? ''} was not started with ${Math.floor(lentMs / 1000)}s of the run left`, {
43
+ hint: `It needs ${needs}s to answer, so the run left it unasked rather than end it early.`,
44
+ nextSteps: [`Run \`${vector.join(' ')}\` by hand to see its answer.`],
45
+ });
46
+ }
25
47
  //# sourceMappingURL=deadline-process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deadline-process.js","sourceRoot":"","sources":["../../../src/adapters/process/deadline-process.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAW1E,MAAM,OAAO,eAAe;IAGP;IACA;IAHF,QAAQ,CAAS;IAClC,YACmB,OAAgB,EAChB,MAAsB;QADtB,YAAO,GAAP,OAAO,CAAS;QAChB,WAAM,GAAN,MAAM,CAAgB;QAEvC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,MAAc,EAAE,OAAyC;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,GAAG,CAAC,MAAyB,EAAE,UAAsB,EAAE;QACrD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;YAC9B,GAAG,OAAO;YACV,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,IAAI,CAAC,GAAG,CACjB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CACvF;YACD,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE;SAC5E,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"deadline-process.js","sourceRoot":"","sources":["../../../src/adapters/process/deadline-process.ts"],"names":[],"mappings":"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"}
@@ -122,9 +122,15 @@ async function checkSelf(deps) {
122
122
  async function checkServices(deps) {
123
123
  const context = await deps.context();
124
124
  const findings = await Tally.during(context.activity, 'checks', (checks) => checkLogin(context, deps.login, {}, checks));
125
- return [
126
- observer(deps, 'checks')(findings.some((finding) => finding.level !== 'ok') ? 'LOGIN_REQUIRED' : 'LOGIN_CHECKED', 'fx login --list'),
127
- ];
125
+ return [observer(deps, 'checks')(loginCode(findings), 'fx login --list')];
126
+ }
127
+ // Only a finding with evidence asks for a login. One whose coverage is incomplete, a
128
+ // check that was not asked or gave no answer in the time the run had, leaves it unknown.
129
+ function loginCode(findings) {
130
+ const open = findings.filter((finding) => finding.level !== 'ok');
131
+ if (open.some((finding) => finding.coverage === 'checked'))
132
+ return 'LOGIN_REQUIRED';
133
+ return open.length > 0 ? 'LOGIN_UNCHECKED' : 'LOGIN_CHECKED';
128
134
  }
129
135
  async function updatesEnabled(deps) {
130
136
  return readSettings({ env: deps.env, file: await deps.config.read() }).updateCheck;
@@ -1 +1 @@
1
- {"version":3,"file":"observe.js","sourceRoot":"","sources":["../../../src/application/hook/observe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../../../src/application/hook/observe.ts"],"names":[],"mappings":"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"}