agent-control-plane 0.1.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/LICENSE +21 -0
- package/README.md +589 -0
- package/SKILL.md +149 -0
- package/assets/workflow-catalog.json +57 -0
- package/bin/audit-issue-routing.sh +74 -0
- package/bin/issue-resource-class.sh +58 -0
- package/bin/label-follow-up-issues.sh +114 -0
- package/bin/pr-risk.sh +532 -0
- package/bin/sync-pr-labels.sh +112 -0
- package/hooks/heartbeat-hooks.sh +573 -0
- package/hooks/issue-reconcile-hooks.sh +217 -0
- package/hooks/pr-reconcile-hooks.sh +225 -0
- package/npm/bin/agent-control-plane.js +1984 -0
- package/npm/public-bin/agent-control-plane +3 -0
- package/package.json +61 -0
- package/tools/bin/agent-cleanup-worktree +247 -0
- package/tools/bin/agent-github-update-labels +66 -0
- package/tools/bin/agent-init-worktree +216 -0
- package/tools/bin/agent-project-archive-run +52 -0
- package/tools/bin/agent-project-capture-worker +46 -0
- package/tools/bin/agent-project-catch-up-merged-prs +137 -0
- package/tools/bin/agent-project-cleanup-session +244 -0
- package/tools/bin/agent-project-detached-launch +107 -0
- package/tools/bin/agent-project-heartbeat-loop +2347 -0
- package/tools/bin/agent-project-open-issue-worktree +89 -0
- package/tools/bin/agent-project-open-pr-worktree +80 -0
- package/tools/bin/agent-project-publish-issue-pr +349 -0
- package/tools/bin/agent-project-reconcile-issue-session +1128 -0
- package/tools/bin/agent-project-reconcile-pr-session +1005 -0
- package/tools/bin/agent-project-retry-state +147 -0
- package/tools/bin/agent-project-run-claude-session +657 -0
- package/tools/bin/agent-project-run-codex-resilient +718 -0
- package/tools/bin/agent-project-run-codex-session +316 -0
- package/tools/bin/agent-project-run-kilo-session +27 -0
- package/tools/bin/agent-project-run-openclaw-session +984 -0
- package/tools/bin/agent-project-run-opencode-session +27 -0
- package/tools/bin/agent-project-sync-anchor-repo +128 -0
- package/tools/bin/agent-project-worker-status +143 -0
- package/tools/bin/audit-agent-worktrees.sh +310 -0
- package/tools/bin/audit-issue-routing.sh +11 -0
- package/tools/bin/audit-retained-layout.sh +58 -0
- package/tools/bin/audit-retained-overlap.sh +135 -0
- package/tools/bin/audit-retained-worktrees.sh +228 -0
- package/tools/bin/branch-verification-guard.sh +351 -0
- package/tools/bin/capture-worker.sh +18 -0
- package/tools/bin/check-skill-contracts.sh +324 -0
- package/tools/bin/cleanup-worktree.sh +44 -0
- package/tools/bin/codex-quota +31 -0
- package/tools/bin/create-follow-up-issue.sh +114 -0
- package/tools/bin/dashboard-launchd-bootstrap.sh +38 -0
- package/tools/bin/flow-config-lib.sh +2127 -0
- package/tools/bin/flow-resident-worker-lib.sh +683 -0
- package/tools/bin/flow-runtime-doctor.sh +97 -0
- package/tools/bin/flow-shell-lib.sh +266 -0
- package/tools/bin/heartbeat-recovery-preflight.sh +106 -0
- package/tools/bin/heartbeat-safe-auto.sh +551 -0
- package/tools/bin/install-dashboard-launchd.sh +152 -0
- package/tools/bin/install-project-launchd.sh +219 -0
- package/tools/bin/issue-publish-scope-guard.sh +242 -0
- package/tools/bin/issue-requires-local-workspace-install.sh +31 -0
- package/tools/bin/issue-resource-class.sh +12 -0
- package/tools/bin/kick-scheduler.sh +75 -0
- package/tools/bin/label-follow-up-issues.sh +14 -0
- package/tools/bin/new-pr-worktree.sh +50 -0
- package/tools/bin/new-worktree.sh +49 -0
- package/tools/bin/pr-risk.sh +12 -0
- package/tools/bin/prepare-worktree.sh +140 -0
- package/tools/bin/profile-activate.sh +109 -0
- package/tools/bin/profile-adopt.sh +219 -0
- package/tools/bin/profile-smoke.sh +461 -0
- package/tools/bin/project-init.sh +189 -0
- package/tools/bin/project-launchd-bootstrap.sh +54 -0
- package/tools/bin/project-remove.sh +155 -0
- package/tools/bin/project-runtime-supervisor.sh +56 -0
- package/tools/bin/project-runtimectl.sh +586 -0
- package/tools/bin/provider-cooldown-state.sh +166 -0
- package/tools/bin/publish-issue-worker.sh +31 -0
- package/tools/bin/reconcile-issue-worker.sh +34 -0
- package/tools/bin/reconcile-pr-worker.sh +34 -0
- package/tools/bin/record-verification.sh +71 -0
- package/tools/bin/render-architecture-infographics.sh +110 -0
- package/tools/bin/render-dashboard-demo-media.sh +333 -0
- package/tools/bin/render-dashboard-snapshot.py +16 -0
- package/tools/bin/render-flow-config.sh +86 -0
- package/tools/bin/retry-state.sh +31 -0
- package/tools/bin/reuse-issue-worktree.sh +75 -0
- package/tools/bin/run-codex-bypass.sh +3 -0
- package/tools/bin/run-codex-safe.sh +3 -0
- package/tools/bin/run-codex-task.sh +231 -0
- package/tools/bin/scaffold-profile.sh +374 -0
- package/tools/bin/serve-dashboard.sh +5 -0
- package/tools/bin/split-retained-slice.sh +124 -0
- package/tools/bin/start-issue-worker.sh +796 -0
- package/tools/bin/start-pr-fix-worker.sh +458 -0
- package/tools/bin/start-pr-merge-repair-worker.sh +8 -0
- package/tools/bin/start-pr-review-worker.sh +227 -0
- package/tools/bin/start-resident-issue-loop.sh +908 -0
- package/tools/bin/sync-agent-repo.sh +52 -0
- package/tools/bin/sync-dependency-baseline.sh +247 -0
- package/tools/bin/sync-pr-labels.sh +12 -0
- package/tools/bin/sync-recurring-issue-checklist.sh +274 -0
- package/tools/bin/sync-shared-agent-home.sh +214 -0
- package/tools/bin/sync-vscode-workspace.sh +157 -0
- package/tools/bin/test-smoke.sh +63 -0
- package/tools/bin/uninstall-project-launchd.sh +55 -0
- package/tools/bin/update-github-labels.sh +14 -0
- package/tools/bin/worker-status.sh +19 -0
- package/tools/bin/workflow-catalog.sh +77 -0
- package/tools/dashboard/app.js +286 -0
- package/tools/dashboard/dashboard_snapshot.py +466 -0
- package/tools/dashboard/index.html +41 -0
- package/tools/dashboard/server.py +64 -0
- package/tools/dashboard/styles.css +351 -0
- package/tools/templates/issue-prompt-template.md +109 -0
- package/tools/templates/pr-fix-template.md +120 -0
- package/tools/templates/pr-merge-repair-template.md +91 -0
- package/tools/templates/pr-review-template.md +62 -0
- package/tools/templates/scheduled-issue-prompt-template.md +62 -0
- package/tools/tests/test-agent-control-plane-npm-cli.sh +279 -0
- package/tools/tests/test-agent-github-update-labels-falls-back-to-repository-id.sh +56 -0
- package/tools/tests/test-agent-project-claude-session-wrapper-clears-stale-sandbox-artifacts.sh +89 -0
- package/tools/tests/test-agent-project-claude-session-wrapper-does-not-retry-provider-quota.sh +82 -0
- package/tools/tests/test-agent-project-claude-session-wrapper-retries-transient-failures.sh +90 -0
- package/tools/tests/test-agent-project-claude-session-wrapper-times-out.sh +73 -0
- package/tools/tests/test-agent-project-claude-session-wrapper.sh +103 -0
- package/tools/tests/test-agent-project-cleanup-session-orphan-fallback.sh +90 -0
- package/tools/tests/test-agent-project-cleanup-session-skip-worktree-cleanup.sh +90 -0
- package/tools/tests/test-agent-project-codex-live-thread-persist.sh +76 -0
- package/tools/tests/test-agent-project-codex-recovery.sh +731 -0
- package/tools/tests/test-agent-project-codex-session-wrapper-clears-stale-sandbox-artifacts.sh +105 -0
- package/tools/tests/test-agent-project-codex-session-wrapper.sh +97 -0
- package/tools/tests/test-agent-project-open-pr-worktree-config-prefix.sh +81 -0
- package/tools/tests/test-agent-project-openclaw-session-wrapper-clears-stale-sandbox-artifacts.sh +109 -0
- package/tools/tests/test-agent-project-openclaw-session-wrapper-infers-blocked-result-contract.sh +89 -0
- package/tools/tests/test-agent-project-openclaw-session-wrapper-recovers-literal-env-artifacts.sh +113 -0
- package/tools/tests/test-agent-project-openclaw-session-wrapper-recovers-version-mismatch.sh +135 -0
- package/tools/tests/test-agent-project-openclaw-session-wrapper-resident.sh +179 -0
- package/tools/tests/test-agent-project-openclaw-session-wrapper-reuses-existing-agent-after-add-race.sh +119 -0
- package/tools/tests/test-agent-project-openclaw-session-wrapper-terminates-rate-limit-hang.sh +91 -0
- package/tools/tests/test-agent-project-openclaw-session-wrapper.sh +117 -0
- package/tools/tests/test-agent-project-publish-issue-pr-prunes-stale-worktree-entry.sh +148 -0
- package/tools/tests/test-agent-project-publish-issue-pr-reads-archived-session.sh +146 -0
- package/tools/tests/test-agent-project-publish-issue-pr-recovers-final-head.sh +145 -0
- package/tools/tests/test-agent-project-publish-issue-pr-reuses-existing-worktree.sh +147 -0
- package/tools/tests/test-agent-project-reconcile-failure-reason.sh +456 -0
- package/tools/tests/test-agent-project-reconcile-issue-archived-session-fallback.sh +96 -0
- package/tools/tests/test-agent-project-reconcile-issue-before-blocked.sh +90 -0
- package/tools/tests/test-agent-project-reconcile-issue-host-verification-recovery-uses-recovered-worktree.sh +212 -0
- package/tools/tests/test-agent-project-reconcile-issue-host-verification-recovery.sh +207 -0
- package/tools/tests/test-agent-project-reconcile-issue-provider-quota-schedules-provider-cooldown.sh +101 -0
- package/tools/tests/test-agent-project-reconcile-issue-session-backfills-lane-metadata-from-worker-key.sh +113 -0
- package/tools/tests/test-agent-project-reconcile-issue-session-clears-stale-failed-summary.sh +117 -0
- package/tools/tests/test-agent-project-reconcile-issue-session-initializes-shared-agent-home.sh +55 -0
- package/tools/tests/test-agent-project-reconcile-issue-session-normalizes-runner-state.sh +125 -0
- package/tools/tests/test-agent-project-reconcile-issue-session-records-invalid-contract-summary.sh +118 -0
- package/tools/tests/test-agent-project-reconcile-issue-session-skips-duplicate-blocked-comment.sh +144 -0
- package/tools/tests/test-agent-project-reconcile-issue-session-standardizes-no-commits-blocker.sh +145 -0
- package/tools/tests/test-agent-project-reconcile-issue-session-synthesizes-blocked-comment.sh +139 -0
- package/tools/tests/test-agent-project-reconcile-pr-blocked-host-recovery.sh +242 -0
- package/tools/tests/test-agent-project-reconcile-pr-guard-blocked-no-commit.sh +142 -0
- package/tools/tests/test-agent-project-reconcile-pr-provider-quota-schedules-provider-cooldown.sh +106 -0
- package/tools/tests/test-agent-project-reconcile-pr-session-initializes-shared-agent-home.sh +66 -0
- package/tools/tests/test-agent-project-reconcile-pr-updated-branch-noop.sh +129 -0
- package/tools/tests/test-audit-agent-worktrees-active-launch-skips-git-inspection.sh +69 -0
- package/tools/tests/test-audit-agent-worktrees-broken-worktree.sh +43 -0
- package/tools/tests/test-audit-agent-worktrees-pending-launch-owner.sh +46 -0
- package/tools/tests/test-audit-agent-worktrees-unreconciled-owner.sh +79 -0
- package/tools/tests/test-audit-issue-routing-managed-branch-globs.sh +56 -0
- package/tools/tests/test-branch-verification-guard-generated-artifacts.sh +72 -0
- package/tools/tests/test-branch-verification-guard-targeted-coverage.sh +125 -0
- package/tools/tests/test-codex-quota-manager-failure-driven-rotation.sh +178 -0
- package/tools/tests/test-codex-quota-wrapper.sh +37 -0
- package/tools/tests/test-contribution-docs.sh +18 -0
- package/tools/tests/test-control-plane-dashboard-runtime-smoke.sh +343 -0
- package/tools/tests/test-create-follow-up-issue.sh +73 -0
- package/tools/tests/test-dashboard-launchd-bootstrap.sh +55 -0
- package/tools/tests/test-flow-export-execution-env-exports-repo-id.sh +30 -0
- package/tools/tests/test-flow-export-github-cli-auth-env-prefers-git-credential.sh +48 -0
- package/tools/tests/test-flow-github-api-repo-fallback-preserves-input.sh +85 -0
- package/tools/tests/test-flow-github-api-repo-prefers-explicit-repository-id.sh +60 -0
- package/tools/tests/test-flow-github-issue-list-falls-back-to-repository-id.sh +64 -0
- package/tools/tests/test-flow-github-pr-list-falls-back-to-repository-id.sh +77 -0
- package/tools/tests/test-flow-resident-can-reuse-does-not-leak-metadata.sh +52 -0
- package/tools/tests/test-flow-resident-reap-stale-controllers.sh +63 -0
- package/tools/tests/test-flow-resolve-codex-quota-tools.sh +104 -0
- package/tools/tests/test-flow-runtime-doctor-profile-selection.sh +27 -0
- package/tools/tests/test-heartbeat-codex-pr-linked-issue-exclusion.sh +79 -0
- package/tools/tests/test-heartbeat-hooks-enqueue-resident-issue-for-idle-controller.sh +115 -0
- package/tools/tests/test-heartbeat-hooks-enqueue-resident-issue-for-live-lane-controller.sh +117 -0
- package/tools/tests/test-heartbeat-hooks-start-resident-issue-loop-claude.sh +96 -0
- package/tools/tests/test-heartbeat-hooks-start-resident-issue-loop-codex.sh +96 -0
- package/tools/tests/test-heartbeat-hooks-start-resident-issue-loop.sh +96 -0
- package/tools/tests/test-heartbeat-loop-auth-wait-does-not-consume-capacity.sh +170 -0
- package/tools/tests/test-heartbeat-loop-blocked-recovery-lane.sh +201 -0
- package/tools/tests/test-heartbeat-loop-blocked-recovery-vs-pr-reservation.sh +201 -0
- package/tools/tests/test-heartbeat-loop-idle-resident-controller-does-not-block-launches.sh +160 -0
- package/tools/tests/test-heartbeat-loop-pr-launch-dedup.sh +133 -0
- package/tools/tests/test-heartbeat-loop-provider-cooldown-suppresses-launches.sh +157 -0
- package/tools/tests/test-heartbeat-loop-reaps-stale-resident-controller.sh +181 -0
- package/tools/tests/test-heartbeat-loop-waiting-provider-resident-controller-does-not-block-launches.sh +160 -0
- package/tools/tests/test-heartbeat-ready-issues-blocked-recovery.sh +134 -0
- package/tools/tests/test-heartbeat-safe-auto-dynamic-concurrency.sh +162 -0
- package/tools/tests/test-heartbeat-safe-auto-no-tmux-sessions.sh +136 -0
- package/tools/tests/test-heartbeat-safe-auto-openclaw-skips-codex-quota.sh +139 -0
- package/tools/tests/test-heartbeat-safe-auto-quota-health-signal.sh +119 -0
- package/tools/tests/test-heartbeat-safe-auto-stale-shared-loop-pid-does-not-skip.sh +140 -0
- package/tools/tests/test-heartbeat-safe-auto-static-capacity-without-quota-cache.sh +142 -0
- package/tools/tests/test-heartbeat-safe-auto-zero-healthy-pools.sh +141 -0
- package/tools/tests/test-heartbeat-sync-issue-labels-empty-schedule.sh +65 -0
- package/tools/tests/test-heartbeat-sync-open-agent-prs-terminal-clears-running.sh +179 -0
- package/tools/tests/test-install-dashboard-launchd.sh +78 -0
- package/tools/tests/test-install-project-launchd-adds-tool-paths.sh +87 -0
- package/tools/tests/test-install-project-launchd.sh +110 -0
- package/tools/tests/test-issue-local-workspace-install-policy.sh +81 -0
- package/tools/tests/test-issue-publish-scope-guard-docs-signal.sh +70 -0
- package/tools/tests/test-issue-reconcile-hooks-success-clears-blocked.sh +36 -0
- package/tools/tests/test-kick-scheduler-requires-explicit-profile.sh +47 -0
- package/tools/tests/test-label-follow-up-issues-falls-back-to-repository-id.sh +132 -0
- package/tools/tests/test-manual-operator-entrypoints-require-explicit-profile.sh +64 -0
- package/tools/tests/test-package-funding-metadata.sh +21 -0
- package/tools/tests/test-package-public-metadata.sh +62 -0
- package/tools/tests/test-placeholder-worker-adapters.sh +38 -0
- package/tools/tests/test-pr-reconcile-hooks-refreshes-recurring-issue-checklist.sh +110 -0
- package/tools/tests/test-pr-risk-cohesive-mobile-locale-scope.sh +70 -0
- package/tools/tests/test-pr-risk-fix-label-semantics.sh +114 -0
- package/tools/tests/test-pr-risk-local-first-no-checks.sh +70 -0
- package/tools/tests/test-prepare-worktree-simple-repo-baseline.sh +67 -0
- package/tools/tests/test-profile-activate.sh +33 -0
- package/tools/tests/test-profile-adopt-allow-missing-repo.sh +68 -0
- package/tools/tests/test-profile-adopt-skip-workspace-sync-missing-file.sh +61 -0
- package/tools/tests/test-profile-adopt-syncs-anchor-and-workspace.sh +90 -0
- package/tools/tests/test-profile-smoke-collision.sh +44 -0
- package/tools/tests/test-profile-smoke-invalid-claude-config.sh +31 -0
- package/tools/tests/test-profile-smoke-invalid-provider-pool.sh +68 -0
- package/tools/tests/test-profile-smoke-repo-slug-mismatch.sh +36 -0
- package/tools/tests/test-profile-smoke.sh +45 -0
- package/tools/tests/test-project-init-force-and-skip-sync.sh +61 -0
- package/tools/tests/test-project-init-repo-slug-mismatch.sh +29 -0
- package/tools/tests/test-project-init.sh +66 -0
- package/tools/tests/test-project-launchd-bootstrap.sh +66 -0
- package/tools/tests/test-project-remove.sh +150 -0
- package/tools/tests/test-project-runtime-supervisor.sh +47 -0
- package/tools/tests/test-project-runtimectl-launchd.sh +115 -0
- package/tools/tests/test-project-runtimectl-missing-profile.sh +54 -0
- package/tools/tests/test-project-runtimectl-start-falls-back-to-bootstrap.sh +108 -0
- package/tools/tests/test-project-runtimectl-status-reports-supervisor-as-heartbeat-parent.sh +95 -0
- package/tools/tests/test-project-runtimectl-status-supervisor-running.sh +59 -0
- package/tools/tests/test-project-runtimectl-stop-cancels-pending-kick.sh +85 -0
- package/tools/tests/test-project-runtimectl-stop-clears-running-labels.sh +78 -0
- package/tools/tests/test-project-runtimectl.sh +212 -0
- package/tools/tests/test-provider-cooldown-state-prefers-runtime-worker-context.sh +39 -0
- package/tools/tests/test-provider-cooldown-state.sh +59 -0
- package/tools/tests/test-public-repo-docs.sh +159 -0
- package/tools/tests/test-reconcile-pr-worker-acp-config-routing.sh +75 -0
- package/tools/tests/test-render-dashboard-snapshot.sh +149 -0
- package/tools/tests/test-render-flow-config-demo-profile.sh +36 -0
- package/tools/tests/test-render-flow-config-provider-pool-fallback.sh +81 -0
- package/tools/tests/test-render-flow-config.sh +52 -0
- package/tools/tests/test-run-codex-task-claude-routing.sh +125 -0
- package/tools/tests/test-run-codex-task-codex-resident-routing.sh +108 -0
- package/tools/tests/test-run-codex-task-kilo-routing.sh +98 -0
- package/tools/tests/test-run-codex-task-openclaw-resident-routing.sh +117 -0
- package/tools/tests/test-run-codex-task-openclaw-routing.sh +113 -0
- package/tools/tests/test-run-codex-task-opencode-routing.sh +98 -0
- package/tools/tests/test-run-codex-task-provider-pool-fallback-routing.sh +146 -0
- package/tools/tests/test-scaffold-profile.sh +108 -0
- package/tools/tests/test-serve-dashboard.sh +93 -0
- package/tools/tests/test-start-issue-worker-blocked-context.sh +129 -0
- package/tools/tests/test-start-issue-worker-blocks-complete-recurring-checklist.sh +189 -0
- package/tools/tests/test-start-issue-worker-local-install-routing.sh +157 -0
- package/tools/tests/test-start-issue-worker-profile-template-routing.sh +149 -0
- package/tools/tests/test-start-issue-worker-recurring-resident-reuse-codex.sh +212 -0
- package/tools/tests/test-start-issue-worker-recurring-resident-reuse.sh +219 -0
- package/tools/tests/test-start-issue-worker-renders-verification-snippet.sh +155 -0
- package/tools/tests/test-start-issue-worker-resident-reuse-falls-back-to-new-worktree.sh +199 -0
- package/tools/tests/test-start-pr-fix-worker-host-blocker-context.sh +275 -0
- package/tools/tests/test-start-resident-issue-loop-adopts-next-recurring-issue.sh +185 -0
- package/tools/tests/test-start-resident-issue-loop-clears-pending-while-waiting-due.sh +152 -0
- package/tools/tests/test-start-resident-issue-loop-consumes-queued-lease.sh +186 -0
- package/tools/tests/test-start-resident-issue-loop-fails-over-provider-pool.sh +212 -0
- package/tools/tests/test-start-resident-issue-loop-immediate-cycles.sh +148 -0
- package/tools/tests/test-start-resident-issue-loop-waits-for-provider.sh +194 -0
- package/tools/tests/test-start-resident-issue-loop-waits-for-terminal-reconcile-status.sh +198 -0
- package/tools/tests/test-start-resident-issue-loop-yields-to-live-lane-controller.sh +145 -0
- package/tools/tests/test-sync-pr-labels-fix-lane-uses-repair-queued.sh +67 -0
- package/tools/tests/test-sync-recurring-issue-checklist-backfills-workflow-complete-blocker.sh +70 -0
- package/tools/tests/test-sync-recurring-issue-checklist.sh +95 -0
- package/tools/tests/test-sync-shared-agent-home-local-source-root.sh +66 -0
- package/tools/tests/test-sync-shared-agent-home-preserves-unrelated-workflow-catalog-skill.sh +47 -0
- package/tools/tests/test-test-smoke.sh +86 -0
- package/tools/tests/test-uninstall-project-launchd.sh +37 -0
- package/tools/tests/test-update-github-labels-prefers-sibling-helper.sh +49 -0
- package/tools/tests/test-workflow-catalog.sh +43 -0
- package/tools/vendor/codex-quota/LICENSE +21 -0
- package/tools/vendor/codex-quota/README.md +459 -0
- package/tools/vendor/codex-quota/codex-quota.js +261 -0
- package/tools/vendor/codex-quota/lib/claude-accounts.js +226 -0
- package/tools/vendor/codex-quota/lib/claude-oauth.js +174 -0
- package/tools/vendor/codex-quota/lib/claude-tokens.js +471 -0
- package/tools/vendor/codex-quota/lib/claude-usage.js +929 -0
- package/tools/vendor/codex-quota/lib/codex-accounts.js +205 -0
- package/tools/vendor/codex-quota/lib/codex-tokens.js +326 -0
- package/tools/vendor/codex-quota/lib/codex-usage.js +32 -0
- package/tools/vendor/codex-quota/lib/color.js +72 -0
- package/tools/vendor/codex-quota/lib/constants.js +57 -0
- package/tools/vendor/codex-quota/lib/container.js +143 -0
- package/tools/vendor/codex-quota/lib/display.js +1111 -0
- package/tools/vendor/codex-quota/lib/fs.js +63 -0
- package/tools/vendor/codex-quota/lib/handlers.js +2060 -0
- package/tools/vendor/codex-quota/lib/jwt.js +33 -0
- package/tools/vendor/codex-quota/lib/oauth.js +486 -0
- package/tools/vendor/codex-quota/lib/paths.js +34 -0
- package/tools/vendor/codex-quota/lib/prompts.js +44 -0
- package/tools/vendor/codex-quota/lib/sync.js +1438 -0
- package/tools/vendor/codex-quota/lib/token-match.js +96 -0
- package/tools/vendor/codex-quota-manager/scripts/auto-switch.sh +500 -0
- package/tools/vendor/codex-quota-manager/scripts/batch-add.sh +123 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
TOOL_BIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
SKILL_ROOT="$(cd "${TOOL_BIN_DIR}/../.." && pwd)"
|
|
6
|
+
ROOT_SOURCE_DIR="$(cd "${SKILL_ROOT}/../../.." && pwd)"
|
|
7
|
+
if [[ ! -f "${ROOT_SOURCE_DIR}/tools/bin/agent-project-reconcile-pr-session" ]]; then
|
|
8
|
+
ROOT_SOURCE_DIR="${SKILL_ROOT}"
|
|
9
|
+
fi
|
|
10
|
+
HAS_DISTINCT_ROOT_SOURCE=0
|
|
11
|
+
if [[ "${ROOT_SOURCE_DIR}" != "${SKILL_ROOT}" ]]; then
|
|
12
|
+
HAS_DISTINCT_ROOT_SOURCE=1
|
|
13
|
+
fi
|
|
14
|
+
ROOT_RUNTIME_DIR="${AGENT_PLATFORM_HOME:-${HOME}/.agent-runtime}/runtime-home"
|
|
15
|
+
RUNTIME_SKILL_ROOT="${ROOT_RUNTIME_DIR}/skills/openclaw/agent-control-plane"
|
|
16
|
+
# shellcheck source=/dev/null
|
|
17
|
+
source "${TOOL_BIN_DIR}/flow-config-lib.sh"
|
|
18
|
+
failures=0
|
|
19
|
+
|
|
20
|
+
contains_fixed_string() {
|
|
21
|
+
local pattern="${1:?pattern required}"
|
|
22
|
+
local file="${2:?file required}"
|
|
23
|
+
if command -v rg >/dev/null 2>&1; then
|
|
24
|
+
rg -q --fixed-strings -- "$pattern" "$file"
|
|
25
|
+
else
|
|
26
|
+
grep -F -q -- "$pattern" "$file"
|
|
27
|
+
fi
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
check_contains() {
|
|
31
|
+
local file="${1:?file required}"
|
|
32
|
+
local pattern="${2:?pattern required}"
|
|
33
|
+
local label="${3:?label required}"
|
|
34
|
+
if contains_fixed_string "$pattern" "$file"; then
|
|
35
|
+
printf 'PASS %s\n' "$label"
|
|
36
|
+
else
|
|
37
|
+
printf 'FAIL %s (%s missing in %s)\n' "$label" "$pattern" "$file" >&2
|
|
38
|
+
failures=$((failures + 1))
|
|
39
|
+
fi
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
check_absent() {
|
|
43
|
+
local file="${1:?file required}"
|
|
44
|
+
local pattern="${2:?pattern required}"
|
|
45
|
+
local label="${3:?label required}"
|
|
46
|
+
if contains_fixed_string "$pattern" "$file"; then
|
|
47
|
+
printf 'FAIL %s (%s unexpectedly present in %s)\n' "$label" "$pattern" "$file" >&2
|
|
48
|
+
failures=$((failures + 1))
|
|
49
|
+
else
|
|
50
|
+
printf 'PASS %s\n' "$label"
|
|
51
|
+
fi
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
check_sync_if_present() {
|
|
55
|
+
local source_file="${1:?source file required}"
|
|
56
|
+
local runtime_file="${2:?runtime file required}"
|
|
57
|
+
local label="${3:?label required}"
|
|
58
|
+
if [[ ! -f "$runtime_file" ]]; then
|
|
59
|
+
printf 'SKIP %s (runtime copy missing)\n' "$label"
|
|
60
|
+
return 0
|
|
61
|
+
fi
|
|
62
|
+
if cmp -s "$source_file" "$runtime_file"; then
|
|
63
|
+
printf 'PASS %s\n' "$label"
|
|
64
|
+
else
|
|
65
|
+
printf 'FAIL %s (source/runtime drift)\n' "$label" >&2
|
|
66
|
+
failures=$((failures + 1))
|
|
67
|
+
fi
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
issue_template="${SKILL_ROOT}/tools/templates/issue-prompt-template.md"
|
|
71
|
+
scheduled_issue_template="${SKILL_ROOT}/tools/templates/scheduled-issue-prompt-template.md"
|
|
72
|
+
pr_review_template="${SKILL_ROOT}/tools/templates/pr-review-template.md"
|
|
73
|
+
pr_fix_template="${SKILL_ROOT}/tools/templates/pr-fix-template.md"
|
|
74
|
+
pr_merge_repair_template="${SKILL_ROOT}/tools/templates/pr-merge-repair-template.md"
|
|
75
|
+
legacy_profile_repo_name="$(printf 'f-%s' 'losning')"
|
|
76
|
+
legacy_profile_repo_slug="$(printf '%s/%s' 'ducminhuyen0319' "${legacy_profile_repo_name}")"
|
|
77
|
+
legacy_profile_package_scope="@${legacy_profile_repo_name}"
|
|
78
|
+
commands_map="${SKILL_ROOT}/references/commands.md"
|
|
79
|
+
skill_doc="${SKILL_ROOT}/SKILL.md"
|
|
80
|
+
issue_reconcile="${SKILL_ROOT}/tools/bin/agent-project-reconcile-issue-session"
|
|
81
|
+
pr_reconcile="${SKILL_ROOT}/tools/bin/agent-project-reconcile-pr-session"
|
|
82
|
+
start_issue_worker="${SKILL_ROOT}/tools/bin/start-issue-worker.sh"
|
|
83
|
+
start_pr_fix_worker="${SKILL_ROOT}/tools/bin/start-pr-fix-worker.sh"
|
|
84
|
+
start_pr_review_worker="${SKILL_ROOT}/tools/bin/start-pr-review-worker.sh"
|
|
85
|
+
run_codex_task="${SKILL_ROOT}/tools/bin/run-codex-task.sh"
|
|
86
|
+
codex_quota_wrapper="${SKILL_ROOT}/tools/bin/codex-quota"
|
|
87
|
+
run_claude_session="${SKILL_ROOT}/tools/bin/agent-project-run-claude-session"
|
|
88
|
+
run_openclaw_session="${SKILL_ROOT}/tools/bin/agent-project-run-openclaw-session"
|
|
89
|
+
run_opencode_session="${SKILL_ROOT}/tools/bin/agent-project-run-opencode-session"
|
|
90
|
+
run_kilo_session="${SKILL_ROOT}/tools/bin/agent-project-run-kilo-session"
|
|
91
|
+
record_verification="${SKILL_ROOT}/tools/bin/record-verification.sh"
|
|
92
|
+
branch_verification_guard="${SKILL_ROOT}/tools/bin/branch-verification-guard.sh"
|
|
93
|
+
workflow_catalog="${SKILL_ROOT}/assets/workflow-catalog.json"
|
|
94
|
+
workflow_catalog_script="${SKILL_ROOT}/tools/bin/workflow-catalog.sh"
|
|
95
|
+
flow_runtime_doctor="${SKILL_ROOT}/tools/bin/flow-runtime-doctor.sh"
|
|
96
|
+
flow_config_lib="${SKILL_ROOT}/tools/bin/flow-config-lib.sh"
|
|
97
|
+
render_flow_config="${SKILL_ROOT}/tools/bin/render-flow-config.sh"
|
|
98
|
+
scaffold_profile="${SKILL_ROOT}/tools/bin/scaffold-profile.sh"
|
|
99
|
+
project_init="${SKILL_ROOT}/tools/bin/project-init.sh"
|
|
100
|
+
project_remove="${SKILL_ROOT}/tools/bin/project-remove.sh"
|
|
101
|
+
profile_smoke="${SKILL_ROOT}/tools/bin/profile-smoke.sh"
|
|
102
|
+
test_smoke="${SKILL_ROOT}/tools/bin/test-smoke.sh"
|
|
103
|
+
profile_adopt="${SKILL_ROOT}/tools/bin/profile-adopt.sh"
|
|
104
|
+
profile_activate="${SKILL_ROOT}/tools/bin/profile-activate.sh"
|
|
105
|
+
project_runtimectl="${SKILL_ROOT}/tools/bin/project-runtimectl.sh"
|
|
106
|
+
project_launchd_bootstrap="${SKILL_ROOT}/tools/bin/project-launchd-bootstrap.sh"
|
|
107
|
+
project_launchd_install="${SKILL_ROOT}/tools/bin/install-project-launchd.sh"
|
|
108
|
+
project_launchd_uninstall="${SKILL_ROOT}/tools/bin/uninstall-project-launchd.sh"
|
|
109
|
+
provider_cooldown_state="${SKILL_ROOT}/tools/bin/provider-cooldown-state.sh"
|
|
110
|
+
dashboard_launchd_bootstrap="${SKILL_ROOT}/tools/bin/dashboard-launchd-bootstrap.sh"
|
|
111
|
+
dashboard_launchd_install="${SKILL_ROOT}/tools/bin/install-dashboard-launchd.sh"
|
|
112
|
+
compat_skill_alias="$(flow_compat_skill_alias)"
|
|
113
|
+
root_pr_reconcile="${ROOT_SOURCE_DIR}/tools/bin/agent-project-reconcile-pr-session"
|
|
114
|
+
root_issue_reconcile="${ROOT_SOURCE_DIR}/tools/bin/agent-project-reconcile-issue-session"
|
|
115
|
+
|
|
116
|
+
check_contains "$issue_template" "ACTION=host-comment-blocker" "core issue template blocked action"
|
|
117
|
+
check_contains "$issue_template" "OUTCOME=implemented" "core issue template success outcome"
|
|
118
|
+
check_contains "$issue_template" "ACTION=host-publish-issue-pr" "core issue template success action"
|
|
119
|
+
check_contains "$issue_template" "{ISSUE_RECURRING_CONTEXT}" "core issue template recurring context placeholder"
|
|
120
|
+
check_contains "$issue_template" "record-verification.sh" "core issue template verification journal guidance"
|
|
121
|
+
check_contains "$issue_template" "verification.jsonl" "core issue template verification journal contract"
|
|
122
|
+
check_contains "$issue_template" "Superseded by focused follow-up issues:" "core issue template umbrella supersede marker"
|
|
123
|
+
check_contains "$issue_template" "create-follow-up-issue.sh" "core issue template follow-up helper guidance"
|
|
124
|
+
check_contains "$issue_template" '`{REPO_SLUG}`' "core issue template repo slug placeholder"
|
|
125
|
+
check_contains "$issue_template" '$ACP_FLOW_TOOLS_DIR' "core issue template canonical tools env"
|
|
126
|
+
check_absent "$issue_template" "${legacy_profile_package_scope}" "core issue template removed bundled package refs"
|
|
127
|
+
check_contains "$scheduled_issue_template" "host-comment-scheduled-report" "core scheduled issue template report action"
|
|
128
|
+
check_contains "$scheduled_issue_template" "host-comment-scheduled-alert" "core scheduled issue template alert action"
|
|
129
|
+
check_contains "$scheduled_issue_template" "not an implementation cycle" "core scheduled issue template check-only guidance"
|
|
130
|
+
check_contains "$scheduled_issue_template" "{ISSUE_BASELINE_HEAD_SHA}" "core scheduled issue template fixed baseline sha guidance"
|
|
131
|
+
check_contains "$scheduled_issue_template" '`{REPO_SLUG}`' "core scheduled issue template repo slug placeholder"
|
|
132
|
+
check_absent "$scheduled_issue_template" "${legacy_profile_repo_slug}" "core scheduled issue template removed bundled repo slug"
|
|
133
|
+
check_contains "$pr_review_template" "ACTION=host-advance-double-check-2" "core review template stage-1 action"
|
|
134
|
+
check_contains "$pr_review_template" "ACTION=host-approve-and-merge" "core review template merge action"
|
|
135
|
+
check_contains "$pr_review_template" "ACTION=host-await-human-review" "core review template human-review action"
|
|
136
|
+
check_contains "$pr_review_template" '`{REPO_SLUG}`' "core review template repo slug placeholder"
|
|
137
|
+
check_absent "$pr_review_template" "${legacy_profile_package_scope}" "core review template removed bundled package refs"
|
|
138
|
+
check_contains "$pr_fix_template" "did not run Git commit/push commands yourself" "core fix template host-owned git contract"
|
|
139
|
+
check_contains "$pr_fix_template" "record-verification.sh" "core fix template verification journal guidance"
|
|
140
|
+
check_contains "$pr_fix_template" "verification.jsonl" "core fix template verification journal contract"
|
|
141
|
+
check_contains "$pr_fix_template" "Required targeted verification coverage before" "core fix template targeted verification section"
|
|
142
|
+
check_contains "$pr_fix_template" '`{REPO_SLUG}`' "core fix template repo slug placeholder"
|
|
143
|
+
check_absent "$pr_fix_template" "If you fixed the branch and committed locally" "core fix template removed local-commit wording"
|
|
144
|
+
check_contains "$pr_merge_repair_template" "record-verification.sh" "core merge-repair template verification journal guidance"
|
|
145
|
+
check_contains "$pr_merge_repair_template" "verification.jsonl" "core merge-repair template verification journal contract"
|
|
146
|
+
check_contains "$pr_merge_repair_template" '`{REPO_SLUG}`' "core merge-repair template repo slug placeholder"
|
|
147
|
+
check_contains "$commands_map" "## Dependency bootstrap" "commands map bootstrap section"
|
|
148
|
+
check_contains "$commands_map" "## Flow maintenance" "commands map flow maintenance section"
|
|
149
|
+
check_contains "$commands_map" "~/.agent-runtime/control-plane/profiles/<id>/README.md" "commands map profile readme note"
|
|
150
|
+
check_contains "$skill_doc" "openspec/CONVENTIONS.md" "skill startup reads conventions"
|
|
151
|
+
check_contains "$skill_doc" "~/.agent-runtime/control-plane/profiles/<id>/README.md" "skill profile readme routing"
|
|
152
|
+
check_contains "$skill_doc" "agent-control-plane" "skill doc control plane rename"
|
|
153
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "assets/workflow-catalog.json" "control plane map workflow catalog"
|
|
154
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "flow-runtime-doctor.sh" "control plane map runtime doctor"
|
|
155
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "render-flow-config.sh" "control plane map render flow config"
|
|
156
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "project-init.sh" "control plane map project init"
|
|
157
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "scaffold-profile.sh" "control plane map scaffold profile"
|
|
158
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "project-runtimectl.sh" "control plane map project runtimectl"
|
|
159
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "project-launchd-bootstrap.sh" "control plane map project launchd bootstrap"
|
|
160
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "install-project-launchd.sh" "control plane map project launchd install"
|
|
161
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "uninstall-project-launchd.sh" "control plane map project launchd uninstall"
|
|
162
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "project-remove.sh" "control plane map project remove"
|
|
163
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "profile-smoke.sh" "control plane map profile smoke"
|
|
164
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "test-smoke.sh" "control plane map test smoke"
|
|
165
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "profile-adopt.sh" "control plane map profile adopt"
|
|
166
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "~/.agent-runtime/control-plane/profiles/<id>/control-plane.yaml" "control plane map canonical profile"
|
|
167
|
+
check_contains "${SKILL_ROOT}/references/control-plane-map.md" "~/.agent-runtime/control-plane/profiles/<id>/README.md" "control plane map profile notes"
|
|
168
|
+
check_contains "$issue_reconcile" "host-comment-blocker" "issue reconcile blocked contract"
|
|
169
|
+
check_contains "$issue_reconcile" "implemented:host-publish-issue-pr" "issue reconcile success contract"
|
|
170
|
+
check_contains "$issue_reconcile" "closed-superseded" "issue reconcile umbrella supersede contract"
|
|
171
|
+
check_contains "$issue_reconcile" "reported:host-comment-scheduled-report" "issue reconcile scheduled report contract"
|
|
172
|
+
check_contains "$issue_reconcile" "reported:host-comment-scheduled-alert" "issue reconcile scheduled alert contract"
|
|
173
|
+
check_contains "$pr_reconcile" "host-advance-double-check-2" "pr reconcile stage-1 contract"
|
|
174
|
+
check_contains "$pr_reconcile" "host-await-human-review" "pr reconcile human-review contract"
|
|
175
|
+
check_contains "$pr_reconcile" "host-verification-guard-blocked" "pr reconcile verification-guard blocked contract"
|
|
176
|
+
check_contains "$start_issue_worker" "Opened PR #" "start issue worker parses recurring PR history"
|
|
177
|
+
check_contains "$start_issue_worker" "Target:" "start issue worker recurring target guidance"
|
|
178
|
+
check_contains "$start_issue_worker" "Blocked on missing referenced OpenSpec paths for issue #" "start issue worker missing-openspec guard"
|
|
179
|
+
check_contains "$start_issue_worker" "scheduled-issue-prompt-template.md" "start issue worker scheduled template switch"
|
|
180
|
+
check_contains "$start_issue_worker" "ISSUE_BASELINE_HEAD_SHA" "start issue worker baseline sha prompt context"
|
|
181
|
+
check_contains "$start_issue_worker" "flow_resolve_template_file" "start issue worker template resolver"
|
|
182
|
+
check_contains "$start_pr_fix_worker" "flow_resolve_template_file" "start pr fix worker template resolver"
|
|
183
|
+
check_contains "$start_pr_fix_worker" "flow_resolve_web_playwright_command" "start pr fix worker playwright command resolver"
|
|
184
|
+
check_contains "$start_pr_review_worker" "flow_resolve_template_file" "start pr review worker template resolver"
|
|
185
|
+
check_contains "$start_issue_worker" "Blocked retries so far:" "start issue worker blocked retry context"
|
|
186
|
+
check_absent "$pr_reconcile" "legacy-empty-result-contract" "pr reconcile removed empty-result compatibility"
|
|
187
|
+
if (( HAS_DISTINCT_ROOT_SOURCE )); then
|
|
188
|
+
check_contains "$root_pr_reconcile" "host-advance-double-check-2" "root pr reconcile stage-1 contract"
|
|
189
|
+
check_contains "$root_issue_reconcile" "host-comment-blocker" "root issue reconcile blocked contract"
|
|
190
|
+
check_contains "$root_issue_reconcile" "implemented:host-publish-issue-pr" "root issue reconcile success contract"
|
|
191
|
+
check_absent "$root_pr_reconcile" "legacy-empty-result-contract" "root pr reconcile removed empty-result compatibility"
|
|
192
|
+
fi
|
|
193
|
+
check_contains "$run_codex_task" "--collect-file \"verification.jsonl\"" "run task collects verification journal"
|
|
194
|
+
check_contains "$run_codex_task" "FLOW_TOOLS_DIR" "run task exports flow tools dir"
|
|
195
|
+
check_contains "$issue_template" '`{REPO_SLUG}`' "issue template repo slug placeholder"
|
|
196
|
+
check_contains "$issue_template" '$ACP_FLOW_TOOLS_DIR' "issue template canonical tools env"
|
|
197
|
+
check_contains "$pr_fix_template" '`{REPO_SLUG}`' "fix template repo slug placeholder"
|
|
198
|
+
check_contains "$pr_review_template" '`{REPO_SLUG}`' "review template repo slug placeholder"
|
|
199
|
+
check_contains "$pr_merge_repair_template" '`{REPO_SLUG}`' "merge-repair template repo slug placeholder"
|
|
200
|
+
check_contains "$run_codex_task" "agent-project-run-openclaw-session" "run task openclaw dispatch"
|
|
201
|
+
check_contains "$run_codex_task" "agent-project-run-claude-session" "run task claude dispatch"
|
|
202
|
+
check_contains "$run_codex_task" "agent-project-run-opencode-session" "run task opencode dispatch"
|
|
203
|
+
check_contains "$run_codex_task" "agent-project-run-kilo-session" "run task kilo dispatch"
|
|
204
|
+
check_contains "$codex_quota_wrapper" "vendor/codex-quota/codex-quota.js" "codex quota wrapper vendored entrypoint"
|
|
205
|
+
check_contains "$run_claude_session" "install_pre_commit_scope_hook" "claude session installs pre-commit scope hook"
|
|
206
|
+
check_contains "$run_claude_session" "run_with_timeout" "claude session timeout helper"
|
|
207
|
+
check_contains "$run_openclaw_session" "OPENCLAW_CONFIG_PATH" "openclaw session isolated config contract"
|
|
208
|
+
check_contains "$run_openclaw_session" "SOUL.md" "openclaw session ignore bootstrap files"
|
|
209
|
+
check_contains "$run_opencode_session" "execution is not implemented yet" "opencode placeholder adapter contract"
|
|
210
|
+
check_contains "$run_kilo_session" "execution is not implemented yet" "kilo placeholder adapter contract"
|
|
211
|
+
check_contains "$flow_config_lib" "flow_export_execution_env" "flow config lib exports execution env"
|
|
212
|
+
check_contains "$flow_config_lib" "flow_resolve_provider_quota_cooldowns" "flow config lib provider quota cooldown resolver"
|
|
213
|
+
check_contains "$flow_config_lib" "flow_selected_provider_pool_env" "flow config lib provider pool selection helper"
|
|
214
|
+
check_contains "$flow_config_lib" "flow_resolve_codex_quota_bin" "flow config lib codex quota bin resolver"
|
|
215
|
+
check_contains "$flow_config_lib" "flow_resolve_codex_quota_manager_script" "flow config lib codex quota manager resolver"
|
|
216
|
+
check_contains "$render_flow_config" "EFFECTIVE_CODING_WORKER=" "render flow config coding worker output"
|
|
217
|
+
check_contains "$render_flow_config" "EFFECTIVE_PROVIDER_QUOTA_COOLDOWNS=" "render flow config provider quota cooldown output"
|
|
218
|
+
check_contains "$render_flow_config" "EFFECTIVE_PROVIDER_POOL_NAME=" "render flow config active provider pool output"
|
|
219
|
+
check_contains "$render_flow_config" "EFFECTIVE_AGENT_REPO_ROOT=" "render flow config agent repo output"
|
|
220
|
+
check_contains "$render_flow_config" "PROFILE_ID=" "render flow config profile id output"
|
|
221
|
+
check_contains "$render_flow_config" "PROFILE_REGISTRY_ROOT=" "render flow config profile registry output"
|
|
222
|
+
check_contains "$render_flow_config" "PROFILE_SELECTION_MODE=" "render flow config selection mode output"
|
|
223
|
+
check_contains "$render_flow_config" "PROFILE_NOTES=" "render flow config profile notes output"
|
|
224
|
+
check_contains "$commands_map" "tools/bin/workflow-catalog.sh context" "commands map workflow catalog context command"
|
|
225
|
+
check_contains "$commands_map" "tools/bin/profile-activate.sh --profile-id <id>" "commands map profile activate command"
|
|
226
|
+
check_contains "$commands_map" "tools/bin/project-init.sh --profile-id <id> --repo-slug <owner/repo>" "commands map project init command"
|
|
227
|
+
check_contains "$commands_map" "tools/bin/scaffold-profile.sh" "commands map scaffold profile command"
|
|
228
|
+
check_contains "$commands_map" "tools/bin/profile-smoke.sh" "commands map profile smoke command"
|
|
229
|
+
check_contains "$commands_map" "tools/bin/test-smoke.sh" "commands map test smoke command"
|
|
230
|
+
check_contains "$commands_map" "tools/bin/profile-adopt.sh" "commands map profile adopt command"
|
|
231
|
+
check_contains "$commands_map" "tools/bin/project-runtimectl.sh status --profile-id <id>" "commands map project runtimectl status command"
|
|
232
|
+
check_contains "$commands_map" "tools/bin/project-remove.sh --profile-id <id>" "commands map project remove command"
|
|
233
|
+
check_contains "$commands_map" "tools/bin/install-project-launchd.sh --profile-id <id>" "commands map project launchd install command"
|
|
234
|
+
check_contains "$commands_map" "tools/bin/uninstall-project-launchd.sh --profile-id <id>" "commands map project launchd uninstall command"
|
|
235
|
+
check_contains "$commands_map" "tools/bin/install-dashboard-launchd.sh" "commands map dashboard launchd install command"
|
|
236
|
+
check_contains "$commands_map" "~/.agent-runtime/control-plane/profiles/<id>/templates/" "commands map profile templates note"
|
|
237
|
+
check_contains "$project_init" "PROJECT_INIT_STATUS=ok" "project init status output"
|
|
238
|
+
check_contains "$project_remove" "PROJECT_REMOVE_STATUS=ok" "project remove status output"
|
|
239
|
+
check_contains "$scaffold_profile" "PROFILE_YAML=" "scaffold profile output"
|
|
240
|
+
check_contains "$profile_smoke" "PROFILE_SMOKE_STATUS" "profile smoke status output"
|
|
241
|
+
check_contains "$test_smoke" "SMOKE_TEST_STATUS" "test smoke status output"
|
|
242
|
+
check_contains "$profile_adopt" "ADOPT_STATUS" "profile adopt status output"
|
|
243
|
+
check_contains "$profile_activate" "PROFILE_ID=" "profile activate profile output"
|
|
244
|
+
check_contains "$profile_activate" "export ACP_PROJECT_ID=" "profile activate exports output"
|
|
245
|
+
check_contains "$project_runtimectl" "ACTION=start" "project runtimectl start output"
|
|
246
|
+
check_contains "$project_runtimectl" "ACTION=stop" "project runtimectl stop output"
|
|
247
|
+
check_contains "$project_runtimectl" "RUNTIME_STATUS=" "project runtimectl status output"
|
|
248
|
+
check_contains "$project_launchd_bootstrap" "heartbeat-safe-auto.sh" "project launchd bootstrap heartbeat contract"
|
|
249
|
+
check_contains "$project_launchd_bootstrap" "sync-shared-agent-home.sh" "project launchd bootstrap sync contract"
|
|
250
|
+
check_contains "$project_launchd_install" "project-runtime-supervisor.sh" "project launchd install supervisor contract"
|
|
251
|
+
check_contains "$project_launchd_install" "launchctl bootstrap" "project launchd install bootstrap command"
|
|
252
|
+
check_contains "$project_launchd_uninstall" "launchctl bootout" "project launchd uninstall bootout command"
|
|
253
|
+
check_contains "$workflow_catalog_script" "assets/workflow-catalog.json" "workflow catalog script reads catalog file"
|
|
254
|
+
check_contains "$workflow_catalog_script" 'if command == "context":' "workflow catalog context command"
|
|
255
|
+
check_contains "$flow_runtime_doctor" "DOCTOR_STATUS" "runtime doctor status output"
|
|
256
|
+
check_contains "$flow_runtime_doctor" "PROFILE_REGISTRY_ROOT" "runtime doctor profile registry output"
|
|
257
|
+
check_contains "$flow_runtime_doctor" "PROFILE_SELECTION_MODE" "runtime doctor selection mode output"
|
|
258
|
+
check_contains "$flow_runtime_doctor" "PROFILE_NOTES" "runtime doctor profile notes output"
|
|
259
|
+
check_contains "$flow_runtime_doctor" "NEXT_STEP=" "runtime doctor next step output"
|
|
260
|
+
check_contains "$flow_runtime_doctor" "CONTROL_PLANE_NAME" "runtime doctor canonical name output"
|
|
261
|
+
check_contains "$dashboard_launchd_bootstrap" "sync-shared-agent-home.sh" "dashboard launchd bootstrap sync runtime contract"
|
|
262
|
+
check_contains "$dashboard_launchd_bootstrap" "serve-dashboard.sh" "dashboard launchd bootstrap serve contract"
|
|
263
|
+
check_contains "$dashboard_launchd_install" "launchctl bootstrap" "dashboard launchd install bootstrap command"
|
|
264
|
+
check_contains "$dashboard_launchd_install" "<key>KeepAlive</key>" "dashboard launchd install keepalive contract"
|
|
265
|
+
check_absent "$skill_doc" 'repo-local `profiles/<id>/`' "skill doc removed repo-bundled profiles"
|
|
266
|
+
check_absent "$commands_map" 'bundled `profiles/<id>/templates/`' "commands map removed bundled profile templates"
|
|
267
|
+
check_absent "${SKILL_ROOT}/references/control-plane-map.md" 'bundled `profiles/<id>/`' "control plane map removed bundled profiles"
|
|
268
|
+
check_absent "${SKILL_ROOT}/references/repo-map.md" '- `profiles/`' "repo map removed bundled profiles dir"
|
|
269
|
+
check_absent "${SKILL_ROOT}/references/docs-map.md" "Bundled seed/fallback profiles" "docs map removed repo-bundled profiles"
|
|
270
|
+
|
|
271
|
+
if [[ -n "${compat_skill_alias}" ]]; then
|
|
272
|
+
check_absent "$pr_reconcile" "skills/openclaw/${compat_skill_alias}" "skill pr reconcile removed old package fallback"
|
|
273
|
+
if (( HAS_DISTINCT_ROOT_SOURCE )); then
|
|
274
|
+
check_absent "$root_pr_reconcile" "skills/openclaw/${compat_skill_alias}" "root pr reconcile removed old package fallback"
|
|
275
|
+
fi
|
|
276
|
+
fi
|
|
277
|
+
|
|
278
|
+
check_sync_if_present "$issue_template" "${RUNTIME_SKILL_ROOT}/tools/templates/issue-prompt-template.md" "core issue template source/runtime sync"
|
|
279
|
+
check_sync_if_present "$scheduled_issue_template" "${RUNTIME_SKILL_ROOT}/tools/templates/scheduled-issue-prompt-template.md" "core scheduled issue template source/runtime sync"
|
|
280
|
+
check_sync_if_present "$pr_review_template" "${RUNTIME_SKILL_ROOT}/tools/templates/pr-review-template.md" "core review template source/runtime sync"
|
|
281
|
+
check_sync_if_present "$pr_fix_template" "${RUNTIME_SKILL_ROOT}/tools/templates/pr-fix-template.md" "core fix template source/runtime sync"
|
|
282
|
+
check_sync_if_present "$pr_merge_repair_template" "${RUNTIME_SKILL_ROOT}/tools/templates/pr-merge-repair-template.md" "core merge-repair template source/runtime sync"
|
|
283
|
+
check_sync_if_present "$commands_map" "${RUNTIME_SKILL_ROOT}/references/commands.md" "commands map source/runtime sync"
|
|
284
|
+
check_sync_if_present "$pr_reconcile" "${RUNTIME_SKILL_ROOT}/tools/bin/agent-project-reconcile-pr-session" "skill pr reconcile source/runtime sync"
|
|
285
|
+
check_sync_if_present "$issue_reconcile" "${RUNTIME_SKILL_ROOT}/tools/bin/agent-project-reconcile-issue-session" "skill issue reconcile source/runtime sync"
|
|
286
|
+
check_sync_if_present "$start_issue_worker" "${RUNTIME_SKILL_ROOT}/tools/bin/start-issue-worker.sh" "start issue worker source/runtime sync"
|
|
287
|
+
check_sync_if_present "$run_codex_task" "${RUNTIME_SKILL_ROOT}/tools/bin/run-codex-task.sh" "run task source/runtime sync"
|
|
288
|
+
check_sync_if_present "$codex_quota_wrapper" "${RUNTIME_SKILL_ROOT}/tools/bin/codex-quota" "codex quota wrapper source/runtime sync"
|
|
289
|
+
check_sync_if_present "$run_claude_session" "${RUNTIME_SKILL_ROOT}/tools/bin/agent-project-run-claude-session" "claude session source/runtime sync"
|
|
290
|
+
check_sync_if_present "$run_openclaw_session" "${RUNTIME_SKILL_ROOT}/tools/bin/agent-project-run-openclaw-session" "openclaw session source/runtime sync"
|
|
291
|
+
check_sync_if_present "$run_opencode_session" "${RUNTIME_SKILL_ROOT}/tools/bin/agent-project-run-opencode-session" "opencode session source/runtime sync"
|
|
292
|
+
check_sync_if_present "$run_kilo_session" "${RUNTIME_SKILL_ROOT}/tools/bin/agent-project-run-kilo-session" "kilo session source/runtime sync"
|
|
293
|
+
check_sync_if_present "$record_verification" "${RUNTIME_SKILL_ROOT}/tools/bin/record-verification.sh" "record verification source/runtime sync"
|
|
294
|
+
check_sync_if_present "$branch_verification_guard" "${RUNTIME_SKILL_ROOT}/tools/bin/branch-verification-guard.sh" "branch verification guard source/runtime sync"
|
|
295
|
+
check_sync_if_present "$flow_config_lib" "${RUNTIME_SKILL_ROOT}/tools/bin/flow-config-lib.sh" "flow config lib source/runtime sync"
|
|
296
|
+
check_sync_if_present "$render_flow_config" "${RUNTIME_SKILL_ROOT}/tools/bin/render-flow-config.sh" "render flow config source/runtime sync"
|
|
297
|
+
check_sync_if_present "$provider_cooldown_state" "${RUNTIME_SKILL_ROOT}/tools/bin/provider-cooldown-state.sh" "provider cooldown state source/runtime sync"
|
|
298
|
+
check_sync_if_present "$project_init" "${RUNTIME_SKILL_ROOT}/tools/bin/project-init.sh" "project init source/runtime sync"
|
|
299
|
+
check_sync_if_present "$project_remove" "${RUNTIME_SKILL_ROOT}/tools/bin/project-remove.sh" "project remove source/runtime sync"
|
|
300
|
+
check_sync_if_present "$project_launchd_bootstrap" "${RUNTIME_SKILL_ROOT}/tools/bin/project-launchd-bootstrap.sh" "project launchd bootstrap source/runtime sync"
|
|
301
|
+
check_sync_if_present "$project_launchd_install" "${RUNTIME_SKILL_ROOT}/tools/bin/install-project-launchd.sh" "project launchd install source/runtime sync"
|
|
302
|
+
check_sync_if_present "$project_launchd_uninstall" "${RUNTIME_SKILL_ROOT}/tools/bin/uninstall-project-launchd.sh" "project launchd uninstall source/runtime sync"
|
|
303
|
+
check_sync_if_present "$scaffold_profile" "${RUNTIME_SKILL_ROOT}/tools/bin/scaffold-profile.sh" "scaffold profile source/runtime sync"
|
|
304
|
+
check_sync_if_present "$profile_smoke" "${RUNTIME_SKILL_ROOT}/tools/bin/profile-smoke.sh" "profile smoke source/runtime sync"
|
|
305
|
+
check_sync_if_present "$test_smoke" "${RUNTIME_SKILL_ROOT}/tools/bin/test-smoke.sh" "test smoke source/runtime sync"
|
|
306
|
+
check_sync_if_present "$profile_adopt" "${RUNTIME_SKILL_ROOT}/tools/bin/profile-adopt.sh" "profile adopt source/runtime sync"
|
|
307
|
+
check_sync_if_present "$profile_activate" "${RUNTIME_SKILL_ROOT}/tools/bin/profile-activate.sh" "profile activate source/runtime sync"
|
|
308
|
+
check_sync_if_present "$project_runtimectl" "${RUNTIME_SKILL_ROOT}/tools/bin/project-runtimectl.sh" "project runtimectl source/runtime sync"
|
|
309
|
+
check_sync_if_present "$dashboard_launchd_bootstrap" "${RUNTIME_SKILL_ROOT}/tools/bin/dashboard-launchd-bootstrap.sh" "dashboard launchd bootstrap source/runtime sync"
|
|
310
|
+
check_sync_if_present "$dashboard_launchd_install" "${RUNTIME_SKILL_ROOT}/tools/bin/install-dashboard-launchd.sh" "dashboard launchd install source/runtime sync"
|
|
311
|
+
check_sync_if_present "$workflow_catalog" "${RUNTIME_SKILL_ROOT}/assets/workflow-catalog.json" "workflow catalog source/runtime sync"
|
|
312
|
+
check_sync_if_present "$workflow_catalog_script" "${RUNTIME_SKILL_ROOT}/tools/bin/workflow-catalog.sh" "workflow catalog script source/runtime sync"
|
|
313
|
+
check_sync_if_present "$flow_runtime_doctor" "${RUNTIME_SKILL_ROOT}/tools/bin/flow-runtime-doctor.sh" "runtime doctor source/runtime sync"
|
|
314
|
+
if (( HAS_DISTINCT_ROOT_SOURCE )); then
|
|
315
|
+
check_sync_if_present "$root_pr_reconcile" "${ROOT_RUNTIME_DIR}/tools/bin/agent-project-reconcile-pr-session" "root pr reconcile source/runtime sync"
|
|
316
|
+
check_sync_if_present "$root_issue_reconcile" "${ROOT_RUNTIME_DIR}/tools/bin/agent-project-reconcile-issue-session" "root issue reconcile source/runtime sync"
|
|
317
|
+
fi
|
|
318
|
+
|
|
319
|
+
if (( failures > 0 )); then
|
|
320
|
+
printf 'CHECK_STATUS=failed\n'
|
|
321
|
+
exit 1
|
|
322
|
+
fi
|
|
323
|
+
|
|
324
|
+
printf 'CHECK_STATUS=ok\n'
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
# shellcheck source=/dev/null
|
|
6
|
+
source "${SCRIPT_DIR}/flow-config-lib.sh"
|
|
7
|
+
|
|
8
|
+
FLOW_SKILL_DIR="$(resolve_flow_skill_dir "${BASH_SOURCE[0]}")"
|
|
9
|
+
FLOW_TOOLS_DIR="${FLOW_SKILL_DIR}/tools/bin"
|
|
10
|
+
CONFIG_YAML="$(resolve_flow_config_yaml "${BASH_SOURCE[0]}")"
|
|
11
|
+
AGENT_REPO_ROOT="$(flow_resolve_agent_repo_root "${CONFIG_YAML}")"
|
|
12
|
+
AGENT_ROOT="$(flow_resolve_agent_root "${CONFIG_YAML}")"
|
|
13
|
+
RUNS_ROOT="$(flow_resolve_runs_root "${CONFIG_YAML}")"
|
|
14
|
+
HISTORY_ROOT="$(flow_resolve_history_root "${CONFIG_YAML}")"
|
|
15
|
+
RETAINED_REPO_ROOT="$(flow_resolve_retained_repo_root "${CONFIG_YAML}")"
|
|
16
|
+
VSCODE_WORKSPACE_FILE="$(flow_resolve_vscode_workspace_file "${CONFIG_YAML}")"
|
|
17
|
+
ISSUE_SESSION_PREFIX="$(flow_resolve_issue_session_prefix "${CONFIG_YAML}")"
|
|
18
|
+
PR_SESSION_PREFIX="$(flow_resolve_pr_session_prefix "${CONFIG_YAML}")"
|
|
19
|
+
WORKTREE="${1-}"
|
|
20
|
+
SESSION="${2:-}"
|
|
21
|
+
MODE="generic"
|
|
22
|
+
ARGS=(
|
|
23
|
+
--repo-root "$AGENT_REPO_ROOT"
|
|
24
|
+
--runs-root "$RUNS_ROOT"
|
|
25
|
+
--history-root "$HISTORY_ROOT"
|
|
26
|
+
--worktree "${WORKTREE:-}"
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
case "$SESSION" in
|
|
30
|
+
"${ISSUE_SESSION_PREFIX}"*) MODE="issue" ;;
|
|
31
|
+
"${PR_SESSION_PREFIX}"*) MODE="pr" ;;
|
|
32
|
+
esac
|
|
33
|
+
|
|
34
|
+
ARGS+=(--mode "$MODE")
|
|
35
|
+
if [[ -n "$SESSION" ]]; then
|
|
36
|
+
ARGS+=(--session "$SESSION")
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
bash "${FLOW_TOOLS_DIR}/agent-project-cleanup-session" "${ARGS[@]}" >/dev/null
|
|
40
|
+
|
|
41
|
+
F_LOSNING_AGENT_REPO_ROOT="$AGENT_REPO_ROOT" \
|
|
42
|
+
F_LOSNING_RETAINED_REPO_ROOT="$RETAINED_REPO_ROOT" \
|
|
43
|
+
F_LOSNING_VSCODE_WORKSPACE_FILE="$VSCODE_WORKSPACE_FILE" \
|
|
44
|
+
"${FLOW_TOOLS_DIR}/sync-vscode-workspace.sh" >/dev/null 2>&1 || true
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
QUOTA_ENTRY="${SCRIPT_DIR}/../vendor/codex-quota/codex-quota.js"
|
|
6
|
+
NODE_BIN="${ACP_CODEX_QUOTA_NODE_BIN:-${F_LOSNING_CODEX_QUOTA_NODE_BIN:-}}"
|
|
7
|
+
|
|
8
|
+
if [[ -z "${NODE_BIN}" ]]; then
|
|
9
|
+
NODE_BIN="$(command -v node 2>/dev/null || true)"
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
if [[ -z "${NODE_BIN}" ]]; then
|
|
13
|
+
export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
|
|
14
|
+
if [[ -s "${NVM_DIR}/nvm.sh" ]]; then
|
|
15
|
+
# shellcheck source=/dev/null
|
|
16
|
+
. "${NVM_DIR}/nvm.sh"
|
|
17
|
+
NODE_BIN="$(command -v node 2>/dev/null || true)"
|
|
18
|
+
fi
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
if [[ -z "${NODE_BIN}" ]]; then
|
|
22
|
+
echo "node is required to run the bundled codex-quota tool" >&2
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
if [[ ! -f "${QUOTA_ENTRY}" ]]; then
|
|
27
|
+
echo "bundled codex-quota entrypoint not found: ${QUOTA_ENTRY}" >&2
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
exec "${NODE_BIN}" "${QUOTA_ENTRY}" "$@"
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
# shellcheck source=/dev/null
|
|
6
|
+
source "${SCRIPT_DIR}/flow-config-lib.sh"
|
|
7
|
+
|
|
8
|
+
usage() {
|
|
9
|
+
cat <<'EOF'
|
|
10
|
+
Usage:
|
|
11
|
+
create-follow-up-issue.sh --parent ISSUE_ID --title "Title" [--body "text" | --body-file path] [--label LABEL ...]
|
|
12
|
+
|
|
13
|
+
Create a focused follow-up issue linked back to the umbrella issue. By default the
|
|
14
|
+
new issue is left unlabeled so the scheduler can pick it up normally.
|
|
15
|
+
EOF
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
FLOW_TOOLS_DIR="${SCRIPT_DIR}"
|
|
19
|
+
CONFIG_YAML="$(resolve_flow_config_yaml "${BASH_SOURCE[0]}")"
|
|
20
|
+
REPO_SLUG="$(flow_resolve_repo_slug "${CONFIG_YAML}")"
|
|
21
|
+
UPDATE_LABELS_BIN="${UPDATE_LABELS_BIN:-${FLOW_TOOLS_DIR}/agent-github-update-labels}"
|
|
22
|
+
|
|
23
|
+
parent_issue=""
|
|
24
|
+
title=""
|
|
25
|
+
body=""
|
|
26
|
+
body_file=""
|
|
27
|
+
labels=()
|
|
28
|
+
|
|
29
|
+
while [[ $# -gt 0 ]]; do
|
|
30
|
+
case "$1" in
|
|
31
|
+
--parent)
|
|
32
|
+
parent_issue="${2:-}"
|
|
33
|
+
shift 2
|
|
34
|
+
;;
|
|
35
|
+
--title)
|
|
36
|
+
title="${2:-}"
|
|
37
|
+
shift 2
|
|
38
|
+
;;
|
|
39
|
+
--body)
|
|
40
|
+
body="${2:-}"
|
|
41
|
+
shift 2
|
|
42
|
+
;;
|
|
43
|
+
--body-file)
|
|
44
|
+
body_file="${2:-}"
|
|
45
|
+
shift 2
|
|
46
|
+
;;
|
|
47
|
+
--label)
|
|
48
|
+
labels+=("${2:-}")
|
|
49
|
+
shift 2
|
|
50
|
+
;;
|
|
51
|
+
--help|-h)
|
|
52
|
+
usage
|
|
53
|
+
exit 0
|
|
54
|
+
;;
|
|
55
|
+
*)
|
|
56
|
+
echo "Unknown argument: $1" >&2
|
|
57
|
+
usage >&2
|
|
58
|
+
exit 1
|
|
59
|
+
;;
|
|
60
|
+
esac
|
|
61
|
+
done
|
|
62
|
+
|
|
63
|
+
if [[ -z "$parent_issue" || -z "$title" ]]; then
|
|
64
|
+
usage >&2
|
|
65
|
+
exit 1
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
if [[ -n "$body" && -n "$body_file" ]]; then
|
|
69
|
+
echo "Provide either --body or --body-file, not both." >&2
|
|
70
|
+
exit 1
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
tmp_body_file="$(mktemp)"
|
|
74
|
+
cleanup() {
|
|
75
|
+
rm -f "$tmp_body_file"
|
|
76
|
+
}
|
|
77
|
+
trap cleanup EXIT
|
|
78
|
+
|
|
79
|
+
{
|
|
80
|
+
printf 'Parent issue: #%s\n\n' "$parent_issue"
|
|
81
|
+
if [[ -n "$body_file" ]]; then
|
|
82
|
+
cat "$body_file"
|
|
83
|
+
elif [[ -n "$body" ]]; then
|
|
84
|
+
printf '%s\n' "$body"
|
|
85
|
+
else
|
|
86
|
+
printf 'Follow-up slice decomposed from umbrella issue #%s.\n' "$parent_issue"
|
|
87
|
+
fi
|
|
88
|
+
} >"$tmp_body_file"
|
|
89
|
+
|
|
90
|
+
issue_url="$(flow_github_issue_create "$REPO_SLUG" "$title" "$tmp_body_file")"
|
|
91
|
+
issue_url="$(printf '%s' "$issue_url" | tail -n 1)"
|
|
92
|
+
issue_number="$(sed -nE 's#.*/issues/([0-9]+)$#\1#p' <<<"$issue_url" | tail -n 1)"
|
|
93
|
+
|
|
94
|
+
if [[ -z "$issue_number" ]]; then
|
|
95
|
+
echo "Unable to determine created issue number from gh output: $issue_url" >&2
|
|
96
|
+
exit 1
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
if [[ ${#labels[@]} -gt 0 ]]; then
|
|
100
|
+
update_args=()
|
|
101
|
+
for label in "${labels[@]}"; do
|
|
102
|
+
[[ -n "$label" ]] || continue
|
|
103
|
+
update_args+=(--add "$label")
|
|
104
|
+
done
|
|
105
|
+
if [[ ${#update_args[@]} -gt 0 ]]; then
|
|
106
|
+
bash "${UPDATE_LABELS_BIN}" \
|
|
107
|
+
--repo-slug "$REPO_SLUG" \
|
|
108
|
+
--number "$issue_number" \
|
|
109
|
+
"${update_args[@]}" >/dev/null || true
|
|
110
|
+
fi
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
printf 'ISSUE_NUMBER=%s\n' "$issue_number"
|
|
114
|
+
printf 'ISSUE_URL=%s\n' "$issue_url"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
FLOW_SKILL_DIR="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
|
6
|
+
HOME_DIR="${ACP_DASHBOARD_HOME_DIR:-${HOME:-}}"
|
|
7
|
+
SOURCE_HOME="${ACP_DASHBOARD_SOURCE_HOME:-$(cd "${FLOW_SKILL_DIR}/../../.." && pwd)}"
|
|
8
|
+
RUNTIME_HOME="${ACP_DASHBOARD_RUNTIME_HOME:-${HOME_DIR}/.agent-runtime/runtime-home}"
|
|
9
|
+
PROFILE_REGISTRY_ROOT="${ACP_DASHBOARD_PROFILE_REGISTRY_ROOT:-${ACP_PROFILE_REGISTRY_ROOT:-${HOME_DIR}/.agent-runtime/control-plane/profiles}}"
|
|
10
|
+
HOST="${ACP_DASHBOARD_HOST:-127.0.0.1}"
|
|
11
|
+
PORT="${ACP_DASHBOARD_PORT:-8765}"
|
|
12
|
+
BASE_PATH="${ACP_DASHBOARD_PATH:-/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin}"
|
|
13
|
+
SYNC_SCRIPT="${ACP_DASHBOARD_SYNC_SCRIPT:-${FLOW_SKILL_DIR}/tools/bin/sync-shared-agent-home.sh}"
|
|
14
|
+
RUNTIME_SERVE_SCRIPT="${ACP_DASHBOARD_RUNTIME_SERVE_SCRIPT:-${RUNTIME_HOME}/skills/openclaw/agent-control-plane/tools/bin/serve-dashboard.sh}"
|
|
15
|
+
|
|
16
|
+
if [[ -z "${HOME_DIR}" ]]; then
|
|
17
|
+
echo "dashboard launchd bootstrap requires HOME or ACP_DASHBOARD_HOME_DIR" >&2
|
|
18
|
+
exit 64
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
export HOME="${HOME_DIR}"
|
|
22
|
+
export PATH="${BASE_PATH}"
|
|
23
|
+
export ACP_PROFILE_REGISTRY_ROOT="${PROFILE_REGISTRY_ROOT}"
|
|
24
|
+
export PYTHONDONTWRITEBYTECODE=1
|
|
25
|
+
|
|
26
|
+
if [[ ! -x "${SYNC_SCRIPT}" ]]; then
|
|
27
|
+
echo "dashboard launchd bootstrap missing sync script: ${SYNC_SCRIPT}" >&2
|
|
28
|
+
exit 65
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
bash "${SYNC_SCRIPT}" "${SOURCE_HOME}" "${RUNTIME_HOME}" >/dev/null
|
|
32
|
+
|
|
33
|
+
if [[ ! -x "${RUNTIME_SERVE_SCRIPT}" ]]; then
|
|
34
|
+
echo "dashboard launchd bootstrap missing runtime serve script: ${RUNTIME_SERVE_SCRIPT}" >&2
|
|
35
|
+
exit 66
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
exec bash "${RUNTIME_SERVE_SCRIPT}" --host "${HOST}" --port "${PORT}"
|