@angelmsger/fx 0.10.1 → 0.12.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 +166 -0
- package/README.md +13 -47
- package/defaults/tools.yaml +14 -0
- package/dist/adapters/agent-host/toml-mcp.js +1 -3
- package/dist/adapters/agent-host/toml-mcp.js.map +1 -1
- package/dist/adapters/calendar/wecom-calendar-cli/provider.js +42 -0
- package/dist/adapters/calendar/wecom-calendar-cli/provider.js.map +1 -0
- package/dist/adapters/ci/github-actions/ci.js +97 -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/ci/jenkins-cli/ci.js +6 -1
- package/dist/adapters/ci/jenkins-cli/ci.js.map +1 -1
- package/dist/adapters/cluster/kubectl/provider.js +2 -3
- package/dist/adapters/cluster/kubectl/provider.js.map +1 -1
- package/dist/adapters/code-host/bitbucket-cli/contribution-call.js +5 -27
- package/dist/adapters/code-host/bitbucket-cli/contribution-call.js.map +1 -1
- package/dist/adapters/code-host/bitbucket-cli/provider.js.map +1 -1
- package/dist/adapters/code-host/bitbucket-cli/pull-request-reference.js +1 -19
- package/dist/adapters/code-host/bitbucket-cli/pull-request-reference.js.map +1 -1
- package/dist/adapters/code-host/bitbucket-cli/pull-request.js +3 -17
- package/dist/adapters/code-host/bitbucket-cli/pull-request.js.map +1 -1
- package/dist/adapters/code-host/bitbucket-cli/repository-identity.js +1 -4
- package/dist/adapters/code-host/bitbucket-cli/repository-identity.js.map +1 -1
- package/dist/adapters/code-host/github/contribution.js +179 -0
- package/dist/adapters/code-host/github/contribution.js.map +1 -0
- package/dist/adapters/code-host/github/import.js +27 -0
- package/dist/adapters/code-host/github/import.js.map +1 -0
- package/dist/adapters/code-host/github/provider.js +205 -0
- package/dist/adapters/code-host/github/provider.js.map +1 -0
- package/dist/adapters/code-host/local-git/import.js +2 -2
- package/dist/adapters/code-host/local-git/import.js.map +1 -1
- package/dist/adapters/code-host/local-git/provider.js +3 -3
- package/dist/adapters/code-host/local-git/provider.js.map +1 -1
- package/dist/adapters/error-tracker/sentry/client.js +1 -1
- package/dist/adapters/error-tracker/sentry/client.js.map +1 -1
- package/dist/adapters/family/cli.js +15 -17
- package/dist/adapters/family/cli.js.map +1 -1
- package/dist/adapters/family/contribution.js +65 -0
- package/dist/adapters/family/contribution.js.map +1 -0
- package/dist/adapters/family/service-protocol.js +1 -0
- package/dist/adapters/family/service-protocol.js.map +1 -1
- package/dist/adapters/fs/node-fs.js +5 -8
- package/dist/adapters/fs/node-fs.js.map +1 -1
- package/dist/adapters/git/run.js +17 -0
- package/dist/adapters/git/run.js.map +1 -0
- package/dist/adapters/git/system-git.js +36 -16
- package/dist/adapters/git/system-git.js.map +1 -1
- package/dist/adapters/github/gh.js +103 -0
- package/dist/adapters/github/gh.js.map +1 -0
- package/dist/adapters/manifest-source/git-repo.js +38 -18
- package/dist/adapters/manifest-source/git-repo.js.map +1 -1
- package/dist/adapters/manifest-source/stdin.js +4 -6
- package/dist/adapters/manifest-source/stdin.js.map +1 -1
- package/dist/adapters/metrics/prometheus-cli/service.js +9 -1
- package/dist/adapters/metrics/prometheus-cli/service.js.map +1 -1
- package/dist/adapters/process/deadline-process.js +7 -3
- package/dist/adapters/process/deadline-process.js.map +1 -1
- package/dist/adapters/process/diagnostic-process.js +2 -3
- package/dist/adapters/process/diagnostic-process.js.map +1 -1
- 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/adapters/registry/registry-policy.js +4 -14
- package/dist/adapters/registry/registry-policy.js.map +1 -1
- package/dist/application/agent/list.js +12 -0
- package/dist/application/agent/list.js.map +1 -1
- package/dist/application/agent/pick.js +12 -30
- package/dist/application/agent/pick.js.map +1 -1
- package/dist/application/agent/workspace-cleanup.js +4 -1
- package/dist/application/agent/workspace-cleanup.js.map +1 -1
- package/dist/application/config/export.js +3 -2
- package/dist/application/config/export.js.map +1 -1
- package/dist/application/config/import-registry.js +3 -3
- package/dist/application/config/import-registry.js.map +1 -1
- package/dist/application/config/import.js +12 -4
- package/dist/application/config/import.js.map +1 -1
- package/dist/application/config/resolve.js +2 -4
- package/dist/application/config/resolve.js.map +1 -1
- package/dist/application/contribution/identity.js +3 -3
- package/dist/application/contribution/identity.js.map +1 -1
- package/dist/application/contribution/push-registered.js +77 -0
- package/dist/application/contribution/push-registered.js.map +1 -0
- package/dist/application/contribution/push.js +12 -19
- package/dist/application/contribution/push.js.map +1 -1
- package/dist/application/contribution/validate.js +12 -13
- package/dist/application/contribution/validate.js.map +1 -1
- package/dist/application/docs/derive.js +14 -5
- package/dist/application/docs/derive.js.map +1 -1
- package/dist/application/docs/rendered.js +2 -1
- package/dist/application/docs/rendered.js.map +1 -1
- package/dist/application/doctor/index.js +43 -27
- package/dist/application/doctor/index.js.map +1 -1
- package/dist/application/doctor/manifest.js +5 -1
- package/dist/application/doctor/manifest.js.map +1 -1
- package/dist/application/doctor/repos.js +1 -1
- package/dist/application/doctor/repos.js.map +1 -1
- package/dist/application/doctor/tools.js +20 -31
- package/dist/application/doctor/tools.js.map +1 -1
- package/dist/application/doctor/types.js +0 -8
- package/dist/application/doctor/types.js.map +1 -1
- package/dist/application/env/names.js.map +1 -1
- package/dist/application/harness/apply.js +4 -3
- package/dist/application/harness/apply.js.map +1 -1
- package/dist/application/harness/cleanup.js +5 -14
- package/dist/application/harness/cleanup.js.map +1 -1
- package/dist/application/harness/mcp-readiness.js +3 -1
- package/dist/application/harness/mcp-readiness.js.map +1 -1
- package/dist/application/harness/names.js +2 -4
- package/dist/application/harness/names.js.map +1 -1
- package/dist/application/harness/plan.js +12 -10
- package/dist/application/harness/plan.js.map +1 -1
- package/dist/application/harness/reconcile.js +4 -14
- package/dist/application/harness/reconcile.js.map +1 -1
- package/dist/application/harness/session.js +2 -13
- package/dist/application/harness/session.js.map +1 -1
- package/dist/application/harness/stages.js +8 -18
- package/dist/application/harness/stages.js.map +1 -1
- package/dist/application/harness/types.js +1 -8
- package/dist/application/harness/types.js.map +1 -1
- package/dist/application/hook/apply.js +5 -4
- package/dist/application/hook/apply.js.map +1 -1
- package/dist/application/hook/automatic-sync.js +8 -3
- package/dist/application/hook/automatic-sync.js.map +1 -1
- package/dist/application/hook/cleanup.js +5 -14
- package/dist/application/hook/cleanup.js.map +1 -1
- package/dist/application/hook/dispatch.js +24 -3
- package/dist/application/hook/dispatch.js.map +1 -1
- package/dist/application/hook/observe.js +11 -9
- package/dist/application/hook/observe.js.map +1 -1
- package/dist/application/hook/plan.js.map +1 -1
- package/dist/application/hook/reconcile.js +2 -9
- package/dist/application/hook/reconcile.js.map +1 -1
- package/dist/application/hook/session.js +5 -12
- package/dist/application/hook/session.js.map +1 -1
- package/dist/application/hook/supervisor-report.js +2 -1
- package/dist/application/hook/supervisor-report.js.map +1 -1
- package/dist/application/hook/types.js +8 -1
- package/dist/application/hook/types.js.map +1 -1
- package/dist/application/init/errors.js +19 -19
- package/dist/application/init/errors.js.map +1 -1
- package/dist/application/init/index.js +60 -42
- package/dist/application/init/index.js.map +1 -1
- package/dist/application/init/preview-initialization.js +40 -0
- package/dist/application/init/preview-initialization.js.map +1 -0
- package/dist/application/init/preview.js +37 -19
- package/dist/application/init/preview.js.map +1 -1
- package/dist/application/init/resume.js +30 -0
- package/dist/application/init/resume.js.map +1 -0
- package/dist/application/init/source.js +8 -0
- package/dist/application/init/source.js.map +1 -0
- package/dist/application/{doctor/login.js → login/check.js} +22 -43
- package/dist/application/login/check.js.map +1 -0
- package/dist/application/login/collect.js +14 -7
- package/dist/application/login/collect.js.map +1 -1
- package/dist/application/login/command-failure.js +2 -0
- package/dist/application/login/command-failure.js.map +1 -1
- package/dist/application/login/deps.js +2 -3
- package/dist/application/login/deps.js.map +1 -1
- package/dist/application/login/run.js +149 -54
- package/dist/application/login/run.js.map +1 -1
- package/dist/application/login/stage.js +146 -0
- package/dist/application/login/stage.js.map +1 -0
- package/dist/application/login/verify.js +45 -34
- package/dist/application/login/verify.js.map +1 -1
- package/dist/application/manifest/context.js +5 -1
- package/dist/application/manifest/context.js.map +1 -1
- package/dist/application/{import.js → manifest/import.js} +36 -28
- package/dist/application/manifest/import.js.map +1 -0
- package/dist/application/manifest/lint.js +15 -23
- package/dist/application/manifest/lint.js.map +1 -1
- package/dist/application/manifest/load.js +7 -11
- package/dist/application/manifest/load.js.map +1 -1
- package/dist/application/manifest/prepare.js +3 -2
- package/dist/application/manifest/prepare.js.map +1 -1
- package/dist/application/manifest/providers.js +4 -1
- package/dist/application/manifest/providers.js.map +1 -1
- package/dist/application/{refresh-manifest.js → manifest/refresh.js} +26 -2
- package/dist/application/manifest/refresh.js.map +1 -0
- package/dist/application/manifest/set.js +2 -1
- package/dist/application/manifest/set.js.map +1 -1
- package/dist/application/member/list.js +2 -4
- package/dist/application/member/list.js.map +1 -1
- package/dist/application/member/show.js +2 -3
- package/dist/application/member/show.js.map +1 -1
- package/dist/application/preparation.js +92 -25
- package/dist/application/preparation.js.map +1 -1
- package/dist/application/probe-record/index.js +19 -18
- package/dist/application/probe-record/index.js.map +1 -1
- package/dist/application/probe-record/plan.js +6 -4
- package/dist/application/probe-record/plan.js.map +1 -1
- package/dist/application/{can.js → readiness/can.js} +23 -11
- package/dist/application/readiness/can.js.map +1 -0
- package/dist/application/readiness/index.js +22 -35
- package/dist/application/readiness/index.js.map +1 -1
- package/dist/application/readiness/resolve.js +13 -15
- package/dist/application/readiness/resolve.js.map +1 -1
- package/dist/application/readiness/verdicts.js +2 -7
- package/dist/application/readiness/verdicts.js.map +1 -1
- package/dist/application/{where.js → readiness/where.js} +19 -21
- package/dist/application/readiness/where.js.map +1 -0
- package/dist/application/release/ci.js +16 -5
- 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 +26 -22
- 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/safety/trust.js +12 -14
- package/dist/application/safety/trust.js.map +1 -1
- package/dist/application/self/update.js +23 -13
- package/dist/application/self/update.js.map +1 -1
- package/dist/application/services/command.js +6 -8
- package/dist/application/services/command.js.map +1 -1
- package/dist/application/services/operation.js +12 -19
- package/dist/application/services/operation.js.map +1 -1
- package/dist/application/services/recipes.js +7 -2
- package/dist/application/services/recipes.js.map +1 -1
- package/dist/application/services/stage.js +6 -4
- package/dist/application/services/stage.js.map +1 -1
- package/dist/application/services/types.js +7 -1
- package/dist/application/services/types.js.map +1 -1
- package/dist/application/skill/copies.js +13 -22
- package/dist/application/skill/copies.js.map +1 -1
- package/dist/application/skill/fx-copies.js +1 -1
- package/dist/application/skill/fx-copies.js.map +1 -1
- package/dist/application/skill/stage.js +24 -26
- package/dist/application/skill/stage.js.map +1 -1
- package/dist/application/skill/standalone.js +1 -1
- package/dist/application/skill/standalone.js.map +1 -1
- package/dist/application/skill/targets.js +2 -16
- package/dist/application/skill/targets.js.map +1 -1
- package/dist/application/skill/tool-skills.js +20 -10
- package/dist/application/skill/tool-skills.js.map +1 -1
- package/dist/application/sync/checks.js +18 -45
- package/dist/application/sync/checks.js.map +1 -1
- package/dist/application/sync/index.js +76 -26
- package/dist/application/sync/index.js.map +1 -1
- package/dist/application/sync/stages.js +43 -26
- package/dist/application/sync/stages.js.map +1 -1
- package/dist/application/sync/types.js +6 -1
- package/dist/application/sync/types.js.map +1 -1
- package/dist/application/tool/check.js +8 -0
- package/dist/application/tool/check.js.map +1 -1
- package/dist/application/tool/history.js +16 -0
- package/dist/application/tool/history.js.map +1 -0
- package/dist/application/tool/initialize.js +2 -1
- package/dist/application/tool/initialize.js.map +1 -1
- package/dist/application/tool/install.js +15 -18
- package/dist/application/tool/install.js.map +1 -1
- package/dist/application/tool/installed.js +1 -1
- package/dist/application/tool/installed.js.map +1 -1
- package/dist/application/tool/list.js.map +1 -1
- package/dist/application/tool/scope.js +8 -7
- package/dist/application/tool/scope.js.map +1 -1
- package/dist/application/tool/select.js +2 -4
- package/dist/application/tool/select.js.map +1 -1
- package/dist/application/tool/show.js.map +1 -1
- package/dist/application/tool/toolchain.js +19 -6
- package/dist/application/tool/toolchain.js.map +1 -1
- package/dist/application/update/check.js +2 -1
- package/dist/application/update/check.js.map +1 -1
- package/dist/application/workspace/command-operation.js +4 -3
- package/dist/application/workspace/command-operation.js.map +1 -1
- package/dist/application/{workspace-context.js → workspace/context.js} +26 -19
- package/dist/application/workspace/context.js.map +1 -0
- package/dist/application/workspace/deps.js +3 -3
- package/dist/application/workspace/deps.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/guidance.js +2 -4
- package/dist/application/workspace/guidance.js.map +1 -1
- package/dist/application/workspace/health.js +4 -2
- package/dist/application/workspace/health.js.map +1 -1
- package/dist/application/workspace/inspect.js +1 -4
- package/dist/application/workspace/inspect.js.map +1 -1
- package/dist/application/workspace/manage.js +83 -97
- package/dist/application/workspace/manage.js.map +1 -1
- package/dist/application/workspace/operation.js +13 -14
- package/dist/application/workspace/operation.js.map +1 -1
- package/dist/application/workspace/plan.js +2 -1
- package/dist/application/workspace/plan.js.map +1 -1
- package/dist/application/workspace/registry.js +4 -3
- package/dist/application/workspace/registry.js.map +1 -1
- package/dist/application/workspace/resolve.js +10 -12
- package/dist/application/workspace/resolve.js.map +1 -1
- package/dist/application/workspace/resources.js +47 -31
- 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/application/workspace/source-preview.js +6 -3
- package/dist/application/workspace/source-preview.js.map +1 -1
- package/dist/application/{status.js → workspace/status.js} +51 -6
- package/dist/application/workspace/status.js.map +1 -0
- package/dist/cli/base.js +25 -29
- package/dist/cli/base.js.map +1 -1
- package/dist/cli/commands/agent/pick.js +4 -1
- package/dist/cli/commands/agent/pick.js.map +1 -1
- package/dist/cli/commands/agent/unpick.js +5 -1
- package/dist/cli/commands/agent/unpick.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/can.js +5 -21
- package/dist/cli/commands/can.js.map +1 -1
- package/dist/cli/commands/config/import.js +1 -8
- package/dist/cli/commands/config/import.js.map +1 -1
- package/dist/cli/commands/doctor.js +2 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env/pick.js +1 -0
- package/dist/cli/commands/env/pick.js.map +1 -1
- package/dist/cli/commands/env/select.js +1 -0
- package/dist/cli/commands/env/select.js.map +1 -1
- package/dist/cli/commands/env/unpick.js +1 -0
- package/dist/cli/commands/env/unpick.js.map +1 -1
- package/dist/cli/commands/hook/disable.js +1 -0
- package/dist/cli/commands/hook/disable.js.map +1 -1
- package/dist/cli/commands/hook/enable.js +1 -0
- package/dist/cli/commands/hook/enable.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/init.js +14 -11
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/login.js +13 -2
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/manifest/import.js +6 -2
- package/dist/cli/commands/manifest/import.js.map +1 -1
- package/dist/cli/commands/manifest/lint.js +5 -1
- package/dist/cli/commands/manifest/lint.js.map +1 -1
- package/dist/cli/commands/manifest/record-probe.js +1 -0
- package/dist/cli/commands/manifest/record-probe.js.map +1 -1
- package/dist/cli/commands/manifest/render.js +1 -0
- package/dist/cli/commands/manifest/render.js.map +1 -1
- package/dist/cli/commands/manifest/repo-set.js +1 -0
- package/dist/cli/commands/manifest/repo-set.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/repo/add.js +1 -0
- package/dist/cli/commands/repo/add.js.map +1 -1
- package/dist/cli/commands/repo/fork.js +1 -0
- package/dist/cli/commands/repo/fork.js.map +1 -1
- package/dist/cli/commands/repo/pick.js +1 -0
- package/dist/cli/commands/repo/pick.js.map +1 -1
- package/dist/cli/commands/repo/remove.js +1 -0
- package/dist/cli/commands/repo/remove.js.map +1 -1
- package/dist/cli/commands/repo/select.js +1 -0
- package/dist/cli/commands/repo/select.js.map +1 -1
- package/dist/cli/commands/repo/unpick.js +1 -0
- package/dist/cli/commands/repo/unpick.js.map +1 -1
- package/dist/cli/commands/selection.js +1 -2
- package/dist/cli/commands/selection.js.map +1 -1
- package/dist/cli/commands/self/info.js +2 -2
- package/dist/cli/commands/self/info.js.map +1 -1
- package/dist/cli/commands/self/update.js +11 -14
- package/dist/cli/commands/self/update.js.map +1 -1
- package/dist/cli/commands/source/push.js +14 -13
- package/dist/cli/commands/source/push.js.map +1 -1
- package/dist/cli/commands/status.js +6 -36
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/sync.js +7 -5
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/tool/history.js +2 -2
- package/dist/cli/commands/tool/history.js.map +1 -1
- package/dist/cli/commands/where.js +2 -1
- package/dist/cli/commands/where.js.map +1 -1
- package/dist/cli/commands/workspace/rebind.js +1 -4
- package/dist/cli/commands/workspace/rebind.js.map +1 -1
- package/dist/cli/completion.js +2 -4
- package/dist/cli/completion.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/hook-command.js +2 -2
- package/dist/cli/hook-command.js.map +1 -1
- package/dist/cli/main.js +4 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/notices.js +26 -24
- package/dist/cli/notices.js.map +1 -1
- package/dist/cli/preparation-view.js +170 -52
- package/dist/cli/preparation-view.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/exceptional.js +11 -4
- package/dist/cli/render/exceptional.js.map +1 -1
- package/dist/cli/render/fields.js +1 -3
- package/dist/cli/render/fields.js.map +1 -1
- package/dist/cli/render/human.js +1 -3
- package/dist/cli/render/human.js.map +1 -1
- package/dist/cli/render/index.js +1 -1
- package/dist/cli/render/index.js.map +1 -1
- package/dist/cli/render/report.js +1 -1
- package/dist/cli/render/report.js.map +1 -1
- package/dist/cli/render/status-line.js +17 -3
- package/dist/cli/render/status-line.js.map +1 -1
- package/dist/cli/render/tone.js +29 -10
- package/dist/cli/render/tone.js.map +1 -1
- package/dist/cli/route/index.js +13 -1
- package/dist/cli/route/index.js.map +1 -1
- package/dist/cli/tool-command.js +4 -11
- package/dist/cli/tool-command.js.map +1 -1
- package/dist/cli/workspace-write-policy.js +8 -33
- package/dist/cli/workspace-write-policy.js.map +1 -1
- package/dist/composition/agent-cleanup.js +5 -1
- package/dist/composition/agent-cleanup.js.map +1 -1
- package/dist/composition/bundled.js +7 -1
- package/dist/composition/bundled.js.map +1 -1
- package/dist/composition/command-wiring.js +44 -99
- package/dist/composition/command-wiring.js.map +1 -1
- package/dist/composition/container.js +25 -20
- package/dist/composition/container.js.map +1 -1
- package/dist/composition/contributions.js +26 -71
- package/dist/composition/contributions.js.map +1 -1
- package/dist/composition/harness.js +3 -4
- package/dist/composition/harness.js.map +1 -1
- package/dist/composition/hook-entry.js +2 -1
- package/dist/composition/hook-entry.js.map +1 -1
- package/dist/composition/hook-wiring.js +8 -16
- package/dist/composition/hook-wiring.js.map +1 -1
- package/dist/composition/hook-worker.js +9 -11
- package/dist/composition/hook-worker.js.map +1 -1
- package/dist/composition/hooks.js +6 -3
- package/dist/composition/hooks.js.map +1 -1
- package/dist/composition/import.js +8 -6
- package/dist/composition/import.js.map +1 -1
- package/dist/composition/manifest-edit.js +1 -2
- package/dist/composition/manifest-edit.js.map +1 -1
- package/dist/composition/manifest-sources.js +3 -16
- package/dist/composition/manifest-sources.js.map +1 -1
- package/dist/composition/probe-record.js +1 -2
- package/dist/composition/probe-record.js.map +1 -1
- package/dist/composition/refresh.js +1 -1
- package/dist/composition/refresh.js.map +1 -1
- package/dist/composition/registry.js +12 -37
- package/dist/composition/registry.js.map +1 -1
- package/dist/composition/tool-install.js +5 -1
- package/dist/composition/tool-install.js.map +1 -1
- package/dist/composition/tool-inventory.js +10 -1
- package/dist/composition/tool-inventory.js.map +1 -1
- package/dist/composition/trace.js +3 -4
- package/dist/composition/trace.js.map +1 -1
- package/dist/composition/update.js +12 -1
- package/dist/composition/update.js.map +1 -1
- package/dist/composition/workspace-management.js +8 -2
- package/dist/composition/workspace-management.js.map +1 -1
- package/dist/domain/config/codec.js +2 -1
- package/dist/domain/config/codec.js.map +1 -1
- package/dist/domain/config/profile.js +0 -1
- package/dist/domain/config/profile.js.map +1 -1
- package/dist/domain/contribution/pull-request.js +12 -1
- package/dist/domain/contribution/pull-request.js.map +1 -1
- package/dist/domain/contribution/selection.js +4 -8
- package/dist/domain/contribution/selection.js.map +1 -1
- package/dist/domain/errors.js +10 -3
- package/dist/domain/errors.js.map +1 -1
- package/dist/domain/fuzzy.js +6 -1
- package/dist/domain/fuzzy.js.map +1 -1
- package/dist/domain/harness/actions.js +60 -0
- package/dist/domain/harness/actions.js.map +1 -0
- package/dist/domain/harness/deadlines.js +14 -0
- package/dist/domain/harness/deadlines.js.map +1 -0
- package/dist/domain/harness/hooks.js +8 -0
- package/dist/domain/harness/hooks.js.map +1 -1
- package/dist/domain/harness/session-start.js +2 -1
- package/dist/domain/harness/session-start.js.map +1 -1
- package/dist/domain/harness/state-recovery.js.map +1 -1
- package/dist/domain/import/infer.js +2 -9
- package/dist/domain/import/infer.js.map +1 -1
- package/dist/domain/lease.js +30 -0
- package/dist/domain/lease.js.map +1 -0
- package/dist/domain/manifest/decode.js +5 -8
- package/dist/domain/manifest/decode.js.map +1 -1
- package/dist/domain/manifest/document.js +3 -5
- package/dist/domain/manifest/document.js.map +1 -1
- package/dist/domain/manifest/editor.js +3 -7
- package/dist/domain/manifest/editor.js.map +1 -1
- package/dist/domain/manifest/explain.js +2 -4
- package/dist/domain/manifest/explain.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/issues.js +2 -2
- package/dist/domain/manifest/issues.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/loader.js +2 -1
- package/dist/domain/manifest/loader.js.map +1 -1
- package/dist/domain/manifest/overlay.js +6 -9
- package/dist/domain/manifest/overlay.js.map +1 -1
- package/dist/domain/manifest/providers.js +34 -2
- package/dist/domain/manifest/providers.js.map +1 -1
- package/dist/domain/manifest/quarantine.js +21 -1
- package/dist/domain/manifest/quarantine.js.map +1 -1
- package/dist/domain/manifest/reflect.js +2 -31
- package/dist/domain/manifest/reflect.js.map +1 -1
- package/dist/domain/manifest/rules/harness.js +2 -16
- package/dist/domain/manifest/rules/harness.js.map +1 -1
- package/dist/domain/manifest/service.schema.js +5 -14
- package/dist/domain/manifest/service.schema.js.map +1 -1
- package/dist/domain/manifest/skill-frontmatter.js +1 -1
- package/dist/domain/manifest/skill-frontmatter.js.map +1 -1
- package/dist/domain/manifest/types.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/outcome.js +5 -0
- package/dist/domain/outcome.js.map +1 -0
- package/dist/domain/path.js +9 -1
- package/dist/domain/path.js.map +1 -1
- package/dist/domain/preparation.js.map +1 -1
- package/dist/domain/projection.js +8 -0
- package/dist/domain/projection.js.map +1 -0
- package/dist/domain/public-url.js +22 -0
- package/dist/domain/public-url.js.map +1 -0
- package/dist/domain/release/ci.js +29 -15
- 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/report.js +1 -1
- package/dist/domain/report.js.map +1 -1
- package/dist/domain/setup/names.js +23 -0
- package/dist/domain/setup/names.js.map +1 -0
- package/dist/domain/setup/planner.js +26 -26
- package/dist/domain/setup/planner.js.map +1 -1
- package/dist/domain/setup/progress.js +57 -0
- package/dist/domain/setup/progress.js.map +1 -0
- package/dist/domain/setup/types.js +5 -0
- package/dist/domain/setup/types.js.map +1 -1
- package/dist/domain/shell.js +0 -7
- package/dist/domain/shell.js.map +1 -1
- package/dist/domain/skills/frontmatter.js +1 -1
- package/dist/domain/skills/frontmatter.js.map +1 -1
- package/dist/domain/skills/projection.js +2 -3
- package/dist/domain/skills/projection.js.map +1 -1
- package/dist/domain/sync-selection.js +2 -4
- package/dist/domain/sync-selection.js.map +1 -1
- package/dist/domain/toolchain/resolve.js +4 -0
- package/dist/domain/toolchain/resolve.js.map +1 -1
- package/dist/domain/toolchain/select.js +15 -9
- package/dist/domain/toolchain/select.js.map +1 -1
- package/dist/domain/toolchain/stderr.js +34 -14
- package/dist/domain/toolchain/stderr.js.map +1 -1
- package/dist/domain/values.js +18 -2
- package/dist/domain/values.js.map +1 -1
- package/dist/domain/workspace/commits.js +9 -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/operation-journal.js +93 -0
- package/dist/domain/workspace/operation-journal.js.map +1 -0
- package/dist/domain/workspace/plan.js +17 -1
- package/dist/domain/workspace/plan.js.map +1 -1
- package/dist/domain/workspace/ref.js +3 -0
- package/dist/domain/workspace/ref.js.map +1 -1
- package/dist/infra/config-store.js +8 -13
- package/dist/infra/config-store.js.map +1 -1
- package/dist/infra/contribution-store.js +21 -67
- package/dist/infra/contribution-store.js.map +1 -1
- package/dist/infra/harness-state.js +21 -49
- package/dist/infra/harness-state.js.map +1 -1
- package/dist/infra/local-store.js +8 -15
- package/dist/infra/local-store.js.map +1 -1
- package/dist/infra/owned-journal.js +57 -0
- package/dist/infra/owned-journal.js.map +1 -0
- package/dist/infra/projection-store.js +4 -3
- package/dist/infra/projection-store.js.map +1 -1
- package/dist/infra/tool-history.js +19 -49
- package/dist/infra/tool-history.js.map +1 -1
- package/dist/infra/trust-store.js +2 -9
- package/dist/infra/trust-store.js.map +1 -1
- package/dist/infra/workspace-home.js +7 -1
- package/dist/infra/workspace-home.js.map +1 -1
- package/dist/ports/ci.js +2 -1
- package/dist/ports/ci.js.map +1 -1
- package/package.json +4 -1
- package/skills/fx-workspace/SKILL.md +2 -3
- package/skills/fx-workspace/references/commands.md +64 -53
- package/skills/fx-workspace/references/workspace-tasks.md +12 -12
- package/dist/application/can.js.map +0 -1
- package/dist/application/doctor/login.js.map +0 -1
- package/dist/application/import.js.map +0 -1
- package/dist/application/init/setup.js +0 -125
- package/dist/application/init/setup.js.map +0 -1
- package/dist/application/preview-initialization.js +0 -41
- package/dist/application/preview-initialization.js.map +0 -1
- package/dist/application/refresh-manifest.js.map +0 -1
- package/dist/application/refresh-workspace-manifest.js +0 -27
- package/dist/application/refresh-workspace-manifest.js.map +0 -1
- package/dist/application/status.js.map +0 -1
- package/dist/application/where.js.map +0 -1
- package/dist/application/workspace-context.js.map +0 -1
- package/dist/cli/commands/release.js.map +0 -1
- package/dist/domain/deadline.js +0 -17
- package/dist/domain/deadline.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,172 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## 0.12.0 (2026-10-19)
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Open pull requests on GitHub. `fx source push` works with a manifest source hosted
|
|
10
|
+
on GitHub as it does with Bitbucket: it pushes the selected files to your verified
|
|
11
|
+
personal fork through `gh` and opens, reuses or retires the pull request against
|
|
12
|
+
its upstream, and `--pr` accepts a pull request number or its page on GitHub.
|
|
13
|
+
- Recognize checkouts cloned from github.com over HTTPS or SSH in `fx import`,
|
|
14
|
+
which binds the `github` code host with the matching clone prefix as its host.
|
|
15
|
+
A GitHub Enterprise server is still not guessed from a remote.
|
|
16
|
+
- Add `wecom-calendar-cli`, a local, searchable mirror of your own WeCom calendars
|
|
17
|
+
with their history, to the tool catalog and as a `calendar` provider. `fx can`
|
|
18
|
+
checks each member's sign-in and hands agents `wecom-calendar-cli event list`;
|
|
19
|
+
filling the mirror with `wecom-calendar-cli sync` stays the member's call.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- Judge a CI build by the commit it checked out when the platform names it.
|
|
24
|
+
`fx release check` passes a successful build of the branch head and fails one of
|
|
25
|
+
another commit, instead of comparing when the build started with when the head was
|
|
26
|
+
written. GitHub Actions names the commit, and Jenkins does with jenkins-cli 0.12.0
|
|
27
|
+
or later; without it the times still decide. CI evidence gains `commit`.
|
|
28
|
+
- Let a `github-actions` ci environment leave out `branch`. `fx release check` then
|
|
29
|
+
counts the runs of the branch it is checking on each side.
|
|
30
|
+
- Keep MCP, rules and hook rows that report `untrusted`, `missing_variables`,
|
|
31
|
+
`invalid` or `busy` in the summary of an `init`, `sync` or `doctor` JSON report.
|
|
32
|
+
They were counted under `omitted`, while a `foreign` or `conflict` row of the same
|
|
33
|
+
stage was shown.
|
|
34
|
+
- Report `TOOL_MISSING` from a companion query, `sentry` or `git` only when the
|
|
35
|
+
executable could not be started. One that started and exited 127 itself now reads
|
|
36
|
+
as the failed query or Git operation it is, in place of a request to install a tool
|
|
37
|
+
that is already there.
|
|
38
|
+
- Say `"<id>" is not an agent fx knows` for an unknown `--agent` of
|
|
39
|
+
`fx can mcp:<name>`, as `fx agent pick` and `fx skill install` do.
|
|
40
|
+
`fx release check` reports an unknown repository in the words of the other
|
|
41
|
+
repository commands, lists the known names when none is close, and keeps the
|
|
42
|
+
workspace in its next step.
|
|
43
|
+
- Quote a directory, tool or repository name that needs it in the command an error
|
|
44
|
+
suggests: the imported directory of `IMPORT_INSIDE_ROOT`, the tools of a withheld
|
|
45
|
+
installation or a missing companion Skill tool, and the repository of
|
|
46
|
+
`PROBE_RECORD_INPUT_REQUIRED`. A path with a space can be pasted as printed.
|
|
47
|
+
- Quote for the configured `command_shell` the commands that follow a workspace
|
|
48
|
+
`relocate` or `rebind`, a registration `fx init` cannot take or resume, a profile
|
|
49
|
+
import or source contribution whose workspace changed, a probe that could not be
|
|
50
|
+
recorded, a manifest import aimed inside the directory it describes, and a
|
|
51
|
+
`--workspace` that names nothing registered. These were printed in POSIX quoting
|
|
52
|
+
whatever the setting.
|
|
53
|
+
- Run git in the C locale when reading a manifest repository or a `local-git` code
|
|
54
|
+
host, as repository synchronization does. Under another locale a file missing from
|
|
55
|
+
a branch was reported as a failed query, because git's translated message went
|
|
56
|
+
unrecognised. A git that cannot be started there is now `TOOL_MISSING`.
|
|
57
|
+
- Close `fx sync` and `fx init` with one line per stage before the verdict: the
|
|
58
|
+
repositories updated, already current, skipped and failed, by name; what the
|
|
59
|
+
manifest refresh did; and the counts other stages report. In a terminal each
|
|
60
|
+
success is counted on the status line instead of printed, and so is the
|
|
61
|
+
`SYNC_PARTIAL` notice the closing view repeats; `--verbose` prints them, and a
|
|
62
|
+
pipe or JSON still receives every record. The status line printed under a Git
|
|
63
|
+
call no longer repeats itself while other lines keep coming.
|
|
64
|
+
- Group sync and init blockers by what resolves them: a sign-in or credentials,
|
|
65
|
+
access refused, or a server this machine cannot reach, which now gets the command
|
|
66
|
+
that checks it again instead of `fx login`; a Prometheus server that does not
|
|
67
|
+
answer counts as unreachable. A check that waited on another blocker, directly or
|
|
68
|
+
through a third, is named under it instead of counted apart, a companion's error
|
|
69
|
+
code follows its message, and a preparation step whose companion says a retry will
|
|
70
|
+
not help shows the companion's own advice instead of suggesting `fx doctor --fix`.
|
|
71
|
+
Preparation checks gain `cause` and `waits_on`.
|
|
72
|
+
- Run the bundled step that reuses an existing login in `fx login` without asking
|
|
73
|
+
and off the terminal, as init and sync do, also with `--no-input`. Its failure
|
|
74
|
+
keeps the companion's message and code instead of `exit 3`, a terminal shows the
|
|
75
|
+
companion's advice in a `LOGIN_STEP_FAILED` notice, and the companion's JSON no
|
|
76
|
+
longer lands on the terminal; fx asks only before a sign-in.
|
|
77
|
+
- Show only non-zero counts and no empty `problems` under the human `fx login`
|
|
78
|
+
table, and leave the `LOGIN_SUMMARY` notice that repeats them to JSON and pipes.
|
|
79
|
+
A passing check says what it established, such as `authenticated is true`,
|
|
80
|
+
instead of repeating its command.
|
|
81
|
+
|
|
82
|
+
### Fixed
|
|
83
|
+
|
|
84
|
+
- Refuse a recorded harness or contribution path that has a `.git` segment in any
|
|
85
|
+
letter case or a delete character. Harness ownership metadata accepted `.GIT/...`,
|
|
86
|
+
which a case-insensitive volume resolves into a repository's own directory; both
|
|
87
|
+
stores now hold a recorded path to the rule `fx source push` applies to a selection.
|
|
88
|
+
- Report `bundled_tools` in `fx self info` as a path the file system accepts when fx
|
|
89
|
+
is installed under a directory whose name has a space or a non-ASCII character, or
|
|
90
|
+
on Windows. The value was a percent-encoded URL path there.
|
|
91
|
+
- Leave a registration that records no manifest source as it is when
|
|
92
|
+
`fx init --resume` continues it. Resuming wrote `source: "-"` into `config.yaml`:
|
|
93
|
+
`fx sync` then took the workspace for one prepared from stdin and stopped saying
|
|
94
|
+
that it has no source to refresh, and `fx init <dir> --from <source>` refused the
|
|
95
|
+
directory with `SOURCE_MISMATCH` in place of recording the source.
|
|
96
|
+
- Skip a repository whose upstream is still empty, such as one registered with
|
|
97
|
+
`fx repo add` before its first push, instead of failing the whole sync. fx asks
|
|
98
|
+
the remote before calling a branch absent: an empty upstream is a skip with
|
|
99
|
+
outcome `empty_remote` that does not hold readiness back, while an upstream with
|
|
100
|
+
other branches but not the tracked one is a skip with outcome `no_remote_branch`
|
|
101
|
+
that still does, since the manifest may name the wrong branch. An unborn local
|
|
102
|
+
branch fast-forwards once upstream has commits, and a manifest checkout in either
|
|
103
|
+
state is left as it is.
|
|
104
|
+
- Bring earlier environments up to date as soon as `fx login` signs in to one. The
|
|
105
|
+
tool's earlier steps that failed are checked again and those that waited on a
|
|
106
|
+
step now passing are attempted, so environments sharing a stored login no longer
|
|
107
|
+
stay failed or blocked in the summary. No setup action runs a second time; a check
|
|
108
|
+
that still fails keeps its result and says what it found under `recheck`.
|
|
109
|
+
- Say what became of the manifest checkout in its sync row instead of always
|
|
110
|
+
"refreshed": refreshed, already current, or kept with the reason, adding when the
|
|
111
|
+
commits of the branch it was kept on are already upstream.
|
|
112
|
+
- Read the reason a failing check prints inside a JSON object after a prefix, such
|
|
113
|
+
as kubectl's `Error from server (Forbidden): {…}`, instead of quoting the object.
|
|
114
|
+
|
|
115
|
+
## 0.11.0 (2026-10-12)
|
|
116
|
+
|
|
117
|
+
### Added
|
|
118
|
+
|
|
119
|
+
- Keep a `go.work` at the workspace root when the manifest sets `go.workspace: true`.
|
|
120
|
+
`fx init` and `fx sync` list every selected checkout that has a `go.mod` at the
|
|
121
|
+
newest `go` version they require, so each module builds against its siblings'
|
|
122
|
+
checkouts. A repository not cloned yet is left out, fx replaces or removes only
|
|
123
|
+
the `go.work` it wrote, and `fx sync --only go` refreshes it alone. `go.work` and
|
|
124
|
+
`go.work.sum` no longer count as stray root entries in such a workspace.
|
|
125
|
+
- Bind a workspace to GitHub. The `github` code-host provider and the
|
|
126
|
+
`github-actions` ci provider both drive the GitHub CLI `gh`, which joins the
|
|
127
|
+
tool catalog with one sign-in per host for both. `fx release check` reads
|
|
128
|
+
branches, commits, files and the last workflow run of a branch from GitHub just
|
|
129
|
+
as it does from Bitbucket and Jenkins; a ci environment can narrow the runs it
|
|
130
|
+
counts to one branch and one trigger. Opening pull requests through fx is not
|
|
131
|
+
available on GitHub yet.
|
|
132
|
+
|
|
133
|
+
### Changed
|
|
134
|
+
|
|
135
|
+
- Rename `fx release` to `fx release check`, so the name says it checks a release
|
|
136
|
+
rather than making one. `fx release` keeps working as a compatibility name.
|
|
137
|
+
- Say what each release would ship. `fx release check` opens each repository with
|
|
138
|
+
the version its target branch declares, the head commits of both branches and how
|
|
139
|
+
many commits on the source branch are not merged into the target yet, by how many
|
|
140
|
+
people; repositories whose checks all passed close the output one line each with the
|
|
141
|
+
same. JSON reports gain `repos[]` with these facts, summaries included; every
|
|
142
|
+
existing field is unchanged.
|
|
143
|
+
- Name the commit a CI build is judged against, say "not merged into main" and "not
|
|
144
|
+
merged back into dev" in the merge check, and use each platform's own name for the
|
|
145
|
+
job or project in CI and error messages. CI evidence gains `head`.
|
|
146
|
+
- Show a repository's `release.note` in the release report, as the manifest schema
|
|
147
|
+
describes.
|
|
148
|
+
|
|
149
|
+
### Fixed
|
|
150
|
+
|
|
151
|
+
- Resolve every relative link in the source AGENTS.md that names a file of the
|
|
152
|
+
manifest source, such as `CONTRIBUTING.md`, in the guide derived at the
|
|
153
|
+
workspace root. Only links into `README.md`, `docs/` and `skills/` resolved
|
|
154
|
+
before, so the others pointed at files the root does not have.
|
|
155
|
+
- Stop `fx manifest lint` from asking for a code-host provider when every
|
|
156
|
+
repository names its `upstream`, since such a workspace reaches no code host.
|
|
157
|
+
- Pass every argument intact to a companion that Windows starts through a batch
|
|
158
|
+
file (`.cmd`, as npm, Scoop and Chocolatey install them). cmd.exe no longer
|
|
159
|
+
interprets characters such as `&`, `|`, `%` or `^` in an argument.
|
|
160
|
+
- Read a local Git remote given as a Windows path, such as `C:\host\fx\api.git`,
|
|
161
|
+
as project and name, so import, adoption, forks and `fx source push` work with it.
|
|
162
|
+
Manifest documents are named with forward slashes in stdin bundles and source
|
|
163
|
+
contributions on every platform, and import writes repository paths with them.
|
|
164
|
+
- Stop the PowerShell hook from writing task results into the agent's context,
|
|
165
|
+
passing fx its input with a byte order mark, and writing progress records to
|
|
166
|
+
stderr.
|
|
167
|
+
- Link source files with forward slashes in guides derived on Windows, and report
|
|
168
|
+
the bundled tools catalog in `fx self info` as a file path, also when the install
|
|
169
|
+
path contains spaces.
|
|
170
|
+
|
|
5
171
|
## 0.10.1 (2026-10-12)
|
|
6
172
|
|
|
7
173
|
### Added
|
package/README.md
CHANGED
|
@@ -73,36 +73,16 @@ PowerShell commands and Registry routing. For updates, use
|
|
|
73
73
|
## Quick start
|
|
74
74
|
|
|
75
75
|
You need two things: the manifest source supplied by your team and a directory
|
|
76
|
-
for the workspace.
|
|
77
|
-
in this directory.” If you are running the commands yourself:
|
|
76
|
+
for the workspace. Preview the plan, then apply it:
|
|
78
77
|
|
|
79
78
|
```sh
|
|
80
79
|
fx init ./work --from <manifest-repository> --dry-run
|
|
81
80
|
fx init ./work --from <manifest-repository>
|
|
82
81
|
```
|
|
83
82
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
and completed work are preserved.
|
|
88
|
-
Review the displayed commands before approving new manifest actions.
|
|
89
|
-
|
|
90
|
-
When fx reports **Ready to work**, you can start. If it needs personal sign-in,
|
|
91
|
-
access or approval, it reports the remaining items together. Complete those
|
|
92
|
-
items and use the printed continuation command:
|
|
93
|
-
|
|
94
|
-
```sh
|
|
95
|
-
fx init --resume --workspace work
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
A continuation verifies current state and skips completed preparation. It does
|
|
99
|
-
not reimport a directory source or rebuild checkouts. You do not need to choose
|
|
100
|
-
internal stages or run a separate diagnostic sequence to finish initialization.
|
|
101
|
-
|
|
102
|
-
New workspaces select all shared repositories. To limit the first download,
|
|
103
|
-
[choose repositories](docs/user-guide.md#choose-repositories-before-downloading) and add `--repos`
|
|
104
|
-
to the initial preview and apply. Existing directories are adopted automatically.
|
|
105
|
-
For everyday updates use `fx sync`; `fx status` shows repository state. To work on a repository not downloaded yet, ask your Agent or follow `fx repo show <name>` and its `next_steps`.
|
|
83
|
+
The [quick start](docs/user-guide.md#quick-start) explains what init prepares,
|
|
84
|
+
how to continue after a sign-in or approval, and how to
|
|
85
|
+
[limit the first download](docs/user-guide.md#choose-repositories-before-downloading).
|
|
106
86
|
|
|
107
87
|
## Everyday commands
|
|
108
88
|
|
|
@@ -118,7 +98,7 @@ For everyday updates use `fx sync`; `fx status` shows repository state. To work
|
|
|
118
98
|
| List capabilities | `fx can` |
|
|
119
99
|
| Check a capability | `fx can <capability> --env <environment>` |
|
|
120
100
|
| Refresh guides and Skills | `fx sync --only docs,skills` |
|
|
121
|
-
|
|
|
101
|
+
| Check what is ready to release | `fx release check` |
|
|
122
102
|
|
|
123
103
|
Use `repo list`, `env list`, `agent list` and `tool list` to discover valid names.
|
|
124
104
|
Use `repo select` and `env select` to choose an exact set, `--all` to follow the
|
|
@@ -126,33 +106,19 @@ team's full set including future additions, or `--none` to select nothing.
|
|
|
126
106
|
`pick/unpick` add or remove individual names. First-time setup can limit cloning
|
|
127
107
|
with `fx init ./work --from <manifest-repository> --repos example-api,example-web --dry-run`.
|
|
128
108
|
`where` prints coordinates and commands; it does not execute those commands.
|
|
129
|
-
`release`
|
|
109
|
+
`release check` shows what each repository would release and whether it is ready; it
|
|
110
|
+
never publishes or deploys.
|
|
130
111
|
The [CLI reference](docs/cli/README.md) and `fx <command> --help` own exact syntax.
|
|
131
112
|
|
|
132
113
|
## For coding agents
|
|
133
114
|
|
|
134
115
|
Run `fx self info --format json`, then read `SKILL.md` in its `bundled_skill`
|
|
135
|
-
directory, or run `fx skill show`.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
`login` preserves partial results on stdout when it needs human input or a later
|
|
143
|
-
step fails. Read those results alongside stderr errors before retrying; the
|
|
144
|
-
[user guide](docs/user-guide.md) describes the result and recovery fields.
|
|
145
|
-
|
|
146
|
-
`init`, `sync`, `doctor` and `release` summarize JSON by default. Use `--details`
|
|
147
|
-
for full results or `--fields` to select fields from those results in any output
|
|
148
|
-
format. Explicit projection emits one report object in JSON/NDJSON and selected
|
|
149
|
-
key/value pairs in human output. Keep stdout
|
|
150
|
-
separate from diagnostic stderr. Do not repeat a write just to obtain a different
|
|
151
|
-
view of its output.
|
|
152
|
-
|
|
153
|
-
For `init`, `sync` and `doctor`, read `preparation.state` and the scoped blockers.
|
|
154
|
-
Incomplete preparation exits 12; continuation is `fx init --resume --workspace <name>`.
|
|
155
|
-
Release checks retain their separate `ok` and `complete` fields.
|
|
116
|
+
directory, or run `fx skill show`. Global Skill installation is optional. Start
|
|
117
|
+
sessions at the registered workspace root to use team guidance.
|
|
118
|
+
|
|
119
|
+
The [user guide](docs/user-guide.md#for-coding-agents) explains structured
|
|
120
|
+
results, completion verdicts and recovery; the bundled
|
|
121
|
+
[Skill](skills/fx-workspace/SKILL.md) routes each task to its reference.
|
|
156
122
|
|
|
157
123
|
## Configuration
|
|
158
124
|
|
package/defaults/tools.yaml
CHANGED
|
@@ -46,6 +46,20 @@ tools:
|
|
|
46
46
|
desc: Issues, comments, transitions and worklogs in Jira
|
|
47
47
|
install: [{ via: npm, spec: '@angelmsger/jira-cli' }]
|
|
48
48
|
docs: https://github.com/AngelMsger/jira-cli
|
|
49
|
+
- name: wecom-calendar-cli
|
|
50
|
+
min_version: '0.5.0'
|
|
51
|
+
desc: A local, searchable mirror of your own WeCom calendars, history included
|
|
52
|
+
install: [{ via: npm, spec: '@angelmsger/wecom-calendar-cli' }]
|
|
53
|
+
docs: https://github.com/AngelMsger/wecom-calendar-cli
|
|
54
|
+
- name: gh
|
|
55
|
+
min_version: '2.50.0'
|
|
56
|
+
desc: Repositories, branches, pull requests and Actions runs on GitHub
|
|
57
|
+
install:
|
|
58
|
+
- { via: brew, spec: gh }
|
|
59
|
+
- { via: manual }
|
|
60
|
+
skill: { command: [] }
|
|
61
|
+
auth: { command: [auth, status] }
|
|
62
|
+
docs: https://cli.github.com/
|
|
49
63
|
- name: sentry
|
|
50
64
|
min_version: '0.44.1'
|
|
51
65
|
desc: Issues, events and releases in Sentry
|
|
@@ -3,6 +3,7 @@ import { createHash } from 'node:crypto';
|
|
|
3
3
|
import { isDeepStrictEqual } from 'node:util';
|
|
4
4
|
import { parse, stringify } from 'smol-toml';
|
|
5
5
|
import { assessMcpSupport } from '../../domain/harness/mcp.js';
|
|
6
|
+
import { isRecord } from '../../domain/values.js';
|
|
6
7
|
import { mcpLaunch } from './mcp-launch.js';
|
|
7
8
|
export class TomlMcpCodec {
|
|
8
9
|
platform;
|
|
@@ -60,9 +61,6 @@ function readToml(text) {
|
|
|
60
61
|
return undefined;
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
|
-
function isRecord(value) {
|
|
64
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
65
|
-
}
|
|
66
64
|
function findFragment(text, markers) {
|
|
67
65
|
const start = text.indexOf(markers.start);
|
|
68
66
|
if (start < 0 || (start > 0 && text[start - 1] !== '\n'))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toml-mcp.js","sourceRoot":"","sources":["../../../src/adapters/agent-host/toml-mcp.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"toml-mcp.js","sourceRoot":"","sources":["../../../src/adapters/agent-host/toml-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// WeCom calendars through the family's wecom-calendar-cli, which mirrors a member's own
|
|
2
|
+
// calendars into a local store over CalDAV and reads them from there, history included;
|
|
3
|
+
// the official wecom-cli lists only the month around today that its bot can see. Each
|
|
4
|
+
// member signs in with their WeCom email and an app-specific CalDAV password, so
|
|
5
|
+
// readiness is a stored credential; filling the store with `sync` is the member's call.
|
|
6
|
+
import { familyService } from '../../family/service.js';
|
|
7
|
+
const TOOL = 'wecom-calendar-cli';
|
|
8
|
+
const MIN_VERSION = '0.5.0';
|
|
9
|
+
const EVENTS = ['event', 'list', '--format', 'json'];
|
|
10
|
+
export const wecomCalendarCliProvider = {
|
|
11
|
+
id: TOOL,
|
|
12
|
+
capability: 'calendar',
|
|
13
|
+
settings: {
|
|
14
|
+
fields: ['base_url', 'context', 'auth_scheme', 'credential_url'],
|
|
15
|
+
authSchemes: ['basic'],
|
|
16
|
+
},
|
|
17
|
+
reference: true,
|
|
18
|
+
tools: [TOOL],
|
|
19
|
+
vars: [],
|
|
20
|
+
service: (settings) => familyService(TOOL, settings, MIN_VERSION),
|
|
21
|
+
recipes: [
|
|
22
|
+
{
|
|
23
|
+
id: 'calendar-access',
|
|
24
|
+
tool: TOOL,
|
|
25
|
+
perEnv: false,
|
|
26
|
+
kind: 'run',
|
|
27
|
+
phase: 'authenticate',
|
|
28
|
+
title: 'Sign in to your WeCom calendars',
|
|
29
|
+
instructions: `Each member signs in with their own WeCom email and an app-specific CalDAV password from the WeCom mobile app; ${TOOL} auth guide explains where it comes from. Run ${TOOL} sync afterwards to fill the local store.`,
|
|
30
|
+
run: ['auth', 'login'],
|
|
31
|
+
verify: {
|
|
32
|
+
command: ['auth', 'status', '--format', 'json'],
|
|
33
|
+
json: { path: 'configured', equals: true, reason: 'detail' },
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
create: (_deps, vars) => ({
|
|
38
|
+
label: 'WeCom calendar events from the local mirror',
|
|
39
|
+
command: [TOOL, ...(vars['context'] ? ['--use-context', vars['context']] : []), ...EVENTS],
|
|
40
|
+
}),
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/adapters/calendar/wecom-calendar-cli/provider.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,wFAAwF;AACxF,sFAAsF;AACtF,iFAAiF;AACjF,wFAAwF;AAIxF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAmC;IACtE,EAAE,EAAE,IAAI;IACR,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC;QAChE,WAAW,EAAE,CAAC,OAAO,CAAC;KACvB;IACD,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,CAAC,IAAI,CAAC;IACb,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;IACjE,OAAO,EAAE;QACP;YACE,EAAE,EAAE,iBAAiB;YACrB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,iCAAiC;YACxC,YAAY,EAAE,kHAAkH,IAAI,iDAAiD,IAAI,2CAA2C;YACpO,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YACtB,MAAM,EAAE;gBACN,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;gBAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC7D;SACF;KACF;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxB,KAAK,EAAE,6CAA6C;QACpD,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;KAC3F,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// GitHub Actions through gh: a job is one workflow of one repository, narrowed to the
|
|
2
|
+
// runs of one branch and one trigger. One workflow often runs on pushes, pull requests
|
|
3
|
+
// and by hand, and only the coordinate knows which of those builds what ships; a
|
|
4
|
+
// coordinate that names no branch counts the runs of the branch being checked. A
|
|
5
|
+
// workflow that is not there is an answer (undefined), a workflow that cannot be read
|
|
6
|
+
// is an error.
|
|
7
|
+
import { EXIT, objectOf, queryFailed, stringAt, unreadableError } from '../../family/cli.js';
|
|
8
|
+
import { BINARY, GhCli, qualifiedRepository } from '../../github/gh.js';
|
|
9
|
+
import { TemplatePlatform } from '../../platform/template-platform.js';
|
|
10
|
+
export const ID = 'github-actions';
|
|
11
|
+
const QUERY = { timeoutMs: 15_000 };
|
|
12
|
+
const RUNS = ['run', 'list', '--repo', '{repository}', '--workflow', '{workflow}'];
|
|
13
|
+
const FIELDS = 'number,status,conclusion,startedAt,createdAt,url,headSha';
|
|
14
|
+
// A run still on its way, by gh's status; a finished run says how it ended instead.
|
|
15
|
+
const PENDING = new Set(['queued', 'in_progress', 'waiting', 'requested', 'pending']);
|
|
16
|
+
const CONCLUSIONS = {
|
|
17
|
+
success: 'success',
|
|
18
|
+
failure: 'failure',
|
|
19
|
+
timed_out: 'failure',
|
|
20
|
+
startup_failure: 'failure',
|
|
21
|
+
cancelled: 'aborted',
|
|
22
|
+
skipped: 'not_built',
|
|
23
|
+
};
|
|
24
|
+
export class GitHubActionsCi {
|
|
25
|
+
process;
|
|
26
|
+
id = ID;
|
|
27
|
+
capability = 'ci';
|
|
28
|
+
platform = new TemplatePlatform({
|
|
29
|
+
id: ID,
|
|
30
|
+
capability: 'ci',
|
|
31
|
+
label: 'GitHub Actions workflow {workflow} in {repository}',
|
|
32
|
+
optionalFlags: { branch: '--branch', event: '--event' },
|
|
33
|
+
command: [BINARY, ...RUNS],
|
|
34
|
+
probe: { label: 'workflow {workflow} in {repository}', command: [BINARY, ...RUNS] },
|
|
35
|
+
});
|
|
36
|
+
constructor(process) {
|
|
37
|
+
this.process = process;
|
|
38
|
+
}
|
|
39
|
+
locate(vars) {
|
|
40
|
+
return this.platform.locate(qualified(vars));
|
|
41
|
+
}
|
|
42
|
+
probe(vars) {
|
|
43
|
+
return this.platform.probe(qualified(vars));
|
|
44
|
+
}
|
|
45
|
+
async lastBuild(vars, query) {
|
|
46
|
+
const { repository = '', workflow = '', branch = query.branch, event } = qualified(vars);
|
|
47
|
+
const what = `the last run of ${workflow} in ${repository}${branch ? ` on ${branch}` : ''}`;
|
|
48
|
+
const call = await new GhCli(this.process).call([
|
|
49
|
+
'run',
|
|
50
|
+
'list',
|
|
51
|
+
'--repo',
|
|
52
|
+
repository,
|
|
53
|
+
'--workflow',
|
|
54
|
+
workflow,
|
|
55
|
+
...(branch ? ['--branch', branch] : []),
|
|
56
|
+
...(event ? ['--event', event] : []),
|
|
57
|
+
'--limit',
|
|
58
|
+
'1',
|
|
59
|
+
'--json',
|
|
60
|
+
FIELDS,
|
|
61
|
+
], QUERY);
|
|
62
|
+
if (call.code === EXIT.not_found)
|
|
63
|
+
return undefined;
|
|
64
|
+
if (call.code !== 0 || !Array.isArray(call.data))
|
|
65
|
+
throw queryFailed(BINARY, call, `read ${what}`);
|
|
66
|
+
// A workflow that never ran on that branch has no build to judge.
|
|
67
|
+
if (call.data.length === 0)
|
|
68
|
+
return undefined;
|
|
69
|
+
const run = objectOf(call.data[0]);
|
|
70
|
+
if (run === undefined || typeof run['number'] !== 'number')
|
|
71
|
+
throw unreadableError(BINARY, what);
|
|
72
|
+
return {
|
|
73
|
+
number: run['number'],
|
|
74
|
+
status: statusOf(run),
|
|
75
|
+
startedAt: stringAt(run, 'startedAt') ?? stringAt(run, 'createdAt') ?? null,
|
|
76
|
+
url: stringAt(run, 'url') ?? null,
|
|
77
|
+
commit: stringAt(run, 'headSha') ?? null,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Every command, run or printed, names the repository's host, so GH_HOST cannot send
|
|
82
|
+
// it elsewhere.
|
|
83
|
+
function qualified(vars) {
|
|
84
|
+
const { repository } = vars;
|
|
85
|
+
return repository === undefined
|
|
86
|
+
? vars
|
|
87
|
+
: { ...vars, repository: qualifiedRepository(repository).repository };
|
|
88
|
+
}
|
|
89
|
+
function statusOf(run) {
|
|
90
|
+
const status = stringAt(run, 'status') ?? '';
|
|
91
|
+
if (PENDING.has(status))
|
|
92
|
+
return 'building';
|
|
93
|
+
if (status !== 'completed')
|
|
94
|
+
return 'unknown';
|
|
95
|
+
return CONCLUSIONS[stringAt(run, 'conclusion') ?? ''] ?? 'unknown';
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=ci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../../src/adapters/ci/github-actions/ci.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,uFAAuF;AACvF,iFAAiF;AACjF,iFAAiF;AACjF,sFAAsF;AACtF,eAAe;AAMf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,MAAM,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC;AACnC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,MAAM,EAAW,CAAC;AAC7C,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AACnF,MAAM,MAAM,GAAG,0DAA0D,CAAC;AAE1E,oFAAoF;AACpF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AACtF,MAAM,WAAW,GAA0C;IACzD,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,MAAM,OAAO,eAAe;IAYG;IAXpB,EAAE,GAAG,EAAE,CAAC;IACR,UAAU,GAAG,IAAa,CAAC;IACnB,QAAQ,GAAG,IAAI,gBAAgB,CAAC;QAC/C,EAAE,EAAE,EAAE;QACN,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oDAAoD;QAC3D,aAAa,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;QACvD,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC1B,KAAK,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;KACpF,CAAC,CAAC;IAEH,YAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEjD,MAAM,CAAC,IAAU;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAU;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAU,EAAE,KAAiB;QAC3C,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,IAAI,GAAG,mBAAmB,QAAQ,OAAO,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5F,MAAM,IAAI,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAC7C;YACE,KAAK;YACL,MAAM;YACN,QAAQ;YACR,UAAU;YACV,YAAY;YACZ,QAAQ;YACR,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,SAAS;YACT,GAAG;YACH,QAAQ;YACR,MAAM;SACP,EACD,KAAK,CACN,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QAClD,kEAAkE;QAClE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;YAAE,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChG,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;YACrB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;YACrB,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,IAAI;YAC3E,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI;YACjC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI;SACzC,CAAC;IACJ,CAAC;CACF;AAED,qFAAqF;AACrF,gBAAgB;AAChB,SAAS,SAAS,CAAC,IAAU;IAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5B,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,QAAQ,CAAC,GAA4B;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,UAAU,CAAC;IAC3C,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// GitHub Actions through gh: one sign-in, shared with the github code host; each
|
|
2
|
+
// environment names the workflow and trigger that build it, and may name the branch.
|
|
3
|
+
import { BINARY, GH_RECIPES, qualifiedRepository } from '../../github/gh.js';
|
|
4
|
+
import { GitHubActionsCi, ID } from './ci.js';
|
|
5
|
+
export const githubActionsProvider = {
|
|
6
|
+
id: ID,
|
|
7
|
+
capability: 'ci',
|
|
8
|
+
tools: [BINARY],
|
|
9
|
+
recipes: GH_RECIPES,
|
|
10
|
+
vars: [
|
|
11
|
+
{
|
|
12
|
+
name: 'repository',
|
|
13
|
+
desc: '[HOST/]OWNER/NAME of the repository the workflows live in (github.com without a host), may use {repo}',
|
|
14
|
+
required: true,
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
envVars: [
|
|
18
|
+
{ name: 'workflow', desc: 'workflow file name or name, e.g. ci.yml', required: true },
|
|
19
|
+
{
|
|
20
|
+
name: 'branch',
|
|
21
|
+
desc: 'only runs of this branch; without it, release check counts the branch it checks',
|
|
22
|
+
required: false,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'event',
|
|
26
|
+
desc: 'only runs this trigger started, e.g. push; without it, any trigger',
|
|
27
|
+
required: false,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
recipeVars: (vars) => ({ hostname: qualifiedRepository(vars['repository'] ?? '').hostname }),
|
|
31
|
+
create: (deps) => new GitHubActionsCi(deps.process),
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/adapters/ci/github-actions/provider.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,qFAAqF;AAIrF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,EAAE,EAAE,EAAE;IACN,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE;QACJ;YACE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,uGAAuG;YAC7G,QAAQ,EAAE,IAAI;SACf;KACF;IACD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yCAAyC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACrF;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,iFAAiF;YACvF,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,oEAAoE;YAC1E,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5F,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
// Jenkins through jenkins-cli: coordinates and probe come from the shared
|
|
2
2
|
// template; the one query reads a job's latest build. A job that is not
|
|
3
|
-
// there is an answer (undefined), a job that cannot be read is an error.
|
|
3
|
+
// there is an answer (undefined), a job that cannot be read is an error. A job
|
|
4
|
+
// path is already one branch's job, so the branch being checked changes
|
|
5
|
+
// nothing here. jenkins-cli names the commit a build checked out from 0.12.0
|
|
6
|
+
// on, and only when it can tell the job's own checkout apart; otherwise the
|
|
7
|
+
// commit stays unknown.
|
|
4
8
|
import { EXIT, FamilyCli, objectOf, queryFailed, stringAt, unreadableError, } from '../../family/cli.js';
|
|
5
9
|
import { TemplatePlatform } from '../../platform/template-platform.js';
|
|
6
10
|
export const BINARY = 'jenkins-cli';
|
|
@@ -52,6 +56,7 @@ export class JenkinsCi {
|
|
|
52
56
|
status: statusOf(data),
|
|
53
57
|
startedAt: stringAt(data, 'started_at') ?? null,
|
|
54
58
|
url: stringAt(data, 'url') ?? null,
|
|
59
|
+
commit: stringAt(objectOf(data['revision']) ?? {}, 'sha') ?? null,
|
|
55
60
|
};
|
|
56
61
|
}
|
|
57
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../../src/adapters/ci/jenkins-cli/ci.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../../src/adapters/ci/jenkins-cli/ci.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
// Kubernetes through kubectl, read-only by construction:
|
|
2
|
-
//
|
|
3
|
-
// contexts; a test pins that.
|
|
1
|
+
// Kubernetes through kubectl, read-only by construction: every generated vector leads
|
|
2
|
+
// with one of READ_ONLY_VERBS, and a test pins that leading verb.
|
|
4
3
|
import { TemplatePlatform } from '../../platform/template-platform.js';
|
|
5
4
|
import { KUBECTL_RECIPES } from './recipes.js';
|
|
6
5
|
export const READ_ONLY_VERBS = ['get', 'describe', 'logs', 'top', 'auth', 'config'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/adapters/cluster/kubectl/provider.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/adapters/cluster/kubectl/provider.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,kEAAkE;AAIlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAE7F,MAAM,CAAC,MAAM,eAAe,GAAgC;IAC1D,EAAE,EAAE,SAAS;IACb,UAAU,EAAE,SAAS;IACrB,iBAAiB,EAAE,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,CAAC,SAAS,CAAC;IAClB,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,sCAAsC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpF,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,qCAAqC,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChF;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,qEAAqE;YAC3E,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,gBAAgB,CAAC;QACnB,EAAE,EAAE,SAAS;QACb,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,kCAAkC;QACzC,OAAO,EAAE;YACP,SAAS;YACT,cAAc;YACd,cAAc;YACd,WAAW;YACX,WAAW;YACX,KAAK;YACL,MAAM;YACN,IAAI;YACJ,aAAa;SACd;QACD,KAAK,EAAE;YACL,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE;gBACP,SAAS;gBACT,cAAc;gBACd,cAAc;gBACd,WAAW;gBACX,WAAW;gBACX,KAAK;gBACL,WAAW;gBACX,IAAI;gBACJ,aAAa;aACd;SACF;KACF,CAAC;CACL,CAAC"}
|
|
@@ -1,32 +1,10 @@
|
|
|
1
|
-
// Contribution calls
|
|
2
|
-
|
|
3
|
-
import { DevkitError } from '../../../domain/errors.js';
|
|
4
|
-
import { EXIT, queryFailed } from '../../family/cli.js';
|
|
1
|
+
// Contribution calls through bitbucket-cli; the failure rules are every code host's.
|
|
2
|
+
import { callContribution as familyCall, contributionFailed as failed, } from '../../family/contribution.js';
|
|
5
3
|
import { BINARY } from './client.js';
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
const call = await cli.call(args, { timeoutMs: 15000 });
|
|
9
|
-
if (call.code === EXIT.auth)
|
|
10
|
-
throw prerequisite('LOGIN_REQUIRED', 'Sign in to the code host', `fx login ${BINARY}`);
|
|
11
|
-
return call;
|
|
12
|
-
}
|
|
13
|
-
catch (error) {
|
|
14
|
-
if (error instanceof DevkitError && error.code === 'TOOL_MISSING')
|
|
15
|
-
throw prerequisite('TOOL_MISSING', 'Install the code-host companion CLI', `fx tool install ${BINARY}`);
|
|
16
|
-
throw error;
|
|
17
|
-
}
|
|
4
|
+
export function callContribution({ cli, args }) {
|
|
5
|
+
return familyCall(BINARY, () => cli.call(args, { timeoutMs: 15000 }));
|
|
18
6
|
}
|
|
19
7
|
export function contributionFailed(call) {
|
|
20
|
-
return
|
|
21
|
-
}
|
|
22
|
-
function prerequisite(code, title, command) {
|
|
23
|
-
return new DevkitError(code === 'LOGIN_REQUIRED' ? 'auth' : 'config', code, title, {
|
|
24
|
-
nextSteps: [command],
|
|
25
|
-
handoff: {
|
|
26
|
-
summary: title,
|
|
27
|
-
command,
|
|
28
|
-
userSteps: [{ id: 'source-code-host', kind: 'manual', title }],
|
|
29
|
-
},
|
|
30
|
-
});
|
|
8
|
+
return failed(BINARY, call);
|
|
31
9
|
}
|
|
32
10
|
//# sourceMappingURL=contribution-call.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contribution-call.js","sourceRoot":"","sources":["../../../../src/adapters/code-host/bitbucket-cli/contribution-call.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"contribution-call.js","sourceRoot":"","sources":["../../../../src/adapters/code-host/bitbucket-cli/contribution-call.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAGrF,OAAO,EACL,gBAAgB,IAAI,UAAU,EAC9B,kBAAkB,IAAI,MAAM,GAC7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAmC,MAAM,aAAa,CAAC;AAOtE,MAAM,UAAU,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAoB;IAC9D,OAAO,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|