@humwick/server 0.130.0 → 0.130.2
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/README.md +5 -0
- package/docs/guides/tools-administration.md +6 -1
- package/docs/guides/tools-coordination.md +1 -0
- package/docs/guides/tools-tasks.md +8 -0
- package/docs/guides/workflows.md +58 -0
- package/docs/openapi.json +414 -1
- package/package.json +8 -17
- package/public/assets/{MessageBubble-BWpoBjl4.js → MessageBubble-BWLqMGKG.js} +2 -2
- package/public/assets/{PlanGraphPanel-C0auck3n.js → PlanGraphPanel-3TlIQpjk.js} +2 -2
- package/public/assets/{TraceView-DBnOx7AQ.js → TraceView-Wimm0Czv.js} +2 -2
- package/public/assets/{VaultDecisionCard-0kp2oNBC.js → VaultDecisionCard-Bau_vNax.js} +2 -2
- package/public/assets/{activity-yLztXEBt.js → activity-CrSurn-r.js} +2 -2
- package/public/assets/{agent-lineage-BbJDR1dW.js → agent-lineage-CknAJKcb.js} +2 -2
- package/public/assets/agent-liveness-CaNwK0Zf.js +2 -0
- package/public/assets/{agent-name-CTZBrSD9.js → agent-name-DKbiIhBo.js} +2 -2
- package/public/assets/agent-profiles-DwF6EQ4R.js +2 -0
- package/public/assets/{agent-project-badge-9TqzUUYE.js → agent-project-badge-Diz4Sjjb.js} +2 -2
- package/public/assets/{agent-tools-D4n40pn8.js → agent-tools-CRhpRQza.js} +2 -2
- package/public/assets/{agent-type-icon-D6FUarOf.js → agent-type-icon-LrUEU3lB.js} +2 -2
- package/public/assets/{agents-BYDslkJc.js → agents-B-v66C-4.js} +2 -2
- package/public/assets/{analytics-B-XSbEMC.js → analytics-BqCb-LKi.js} +2 -2
- package/public/assets/{artifact-viewer-DdWIfV6M.js → artifact-viewer-kf4pGuAR.js} +2 -2
- package/public/assets/{artifacts-oBOqks-2.js → artifacts-D32zyw4Y.js} +2 -2
- package/public/assets/{artifacts-DPN1q4pA.js → artifacts-DJevXcvg.js} +2 -2
- package/public/assets/{automation-4KcRFXEu.js → automation-BpRajx_5.js} +2 -2
- package/public/assets/{backlog-Cw9xPTCF.js → backlog-D_UjTdzX.js} +2 -2
- package/public/assets/{busy-health-CTu32MZt.js → busy-health-N3VEh4ao.js} +2 -2
- package/public/assets/{channels-BiXzg1G9.js → channels-9jopungq.js} +2 -2
- package/public/assets/{chat-Ctk2qwvA.js → chat-CSXrTB3C.js} +2 -2
- package/public/assets/{code-preview-Bm1wWqAp.js → code-preview-p1NnmqK0.js} +2 -2
- package/public/assets/{connectors-C36ax4Vw.js → connectors-CZdqlDNL.js} +2 -2
- package/public/assets/{cosmos-Jj9LK2Wf.js → cosmos-BgdsE4dG.js} +2 -2
- package/public/assets/{crate-agent-H6S7-B9T.js → crate-agent-30aXTKva.js} +2 -2
- package/public/assets/{dependency-graph-Cd1E23wa.js → dependency-graph-B_jvw2GE.js} +2 -2
- package/public/assets/{deploys-Bwfq146q.js → deploys-DoN6bAb5.js} +2 -2
- package/public/assets/{display-CfO7rTuF.js → display-BrKWFGJz.js} +2 -2
- package/public/assets/{files-DhhZI2Ih.js → files-D6XEu8Ng.js} +2 -2
- package/public/assets/fleet-C7jQWbw2.js +2 -0
- package/public/assets/{fleet-metrics-BkHP-P3R.js → fleet-metrics-BiDs3MLx.js} +2 -2
- package/public/assets/{formatted-body-Cm1RrzmN.js → formatted-body-CQBwc1fb.js} +3 -3
- package/public/assets/{formatted-body-impl-DQiOuOD1.js → formatted-body-impl-DyG0WsQS.js} +2 -2
- package/public/assets/{host-providers-dialog-CHqwXTov.js → host-providers-dialog-DKaW31dN.js} +2 -2
- package/public/assets/index-CRHep3M9.js +15 -0
- package/public/assets/index-MYAIwYTX.css +2 -0
- package/public/assets/{insights-fH1EL-qZ.js → insights-CzrtkpOE.js} +2 -2
- package/public/assets/{integrations-C5Oix6ng.js → integrations-aVsUmigt.js} +2 -2
- package/public/assets/{issue-ref-chip-ODyondIa.js → issue-ref-chip-BnSlM_95.js} +2 -2
- package/public/assets/{log-viewer-Cvfy6PW7.js → log-viewer-qe7Ee47Z.js} +2 -2
- package/public/assets/{maintenance-D8CDH5wZ.js → maintenance-NfjqFZAk.js} +2 -2
- package/public/assets/{managed-agents-egllbpij.js → managed-agents-BiH0HgaE.js} +2 -2
- package/public/assets/{markdown-preview-CYSFgVgK.js → markdown-preview-BixaT3Xr.js} +3 -3
- package/public/assets/{markdown-preview-impl-BteVIjX4.js → markdown-preview-impl-DNGlWIS3.js} +2 -2
- package/public/assets/{memory-C8WmXsyr.js → memory-DNsCl6UX.js} +2 -2
- package/public/assets/{messages-BzQdqlO6.js → messages-DopU1L1X.js} +2 -2
- package/public/assets/{orchestrators-B1HxzkNw.js → orchestrators-Cq7ckLQT.js} +2 -2
- package/public/assets/{overview-DCUnI4Z7.js → overview-C1DCTzzV.js} +2 -2
- package/public/assets/{pairs-ftCd2XcD.js → pairs-DE_m6rrE.js} +2 -2
- package/public/assets/{profile-icon-B2zH8DMH.js → profile-icon-B3rfh77F.js} +2 -2
- package/public/assets/project-profile-instructions-DQWZE0kA.js +2 -0
- package/public/assets/projects-Br2Bd2h1.js +2 -0
- package/public/assets/{prompt-settings-Bftq9czX.js → prompt-settings-BKvFsvGD.js} +2 -2
- package/public/assets/provider-display-DsuWMvVL.js +2 -0
- package/public/assets/{registry-DWCU5c8q.js → registry-Cw38_6gW.js} +2 -2
- package/public/assets/run-card-CpKqRbhg.js +2 -0
- package/public/assets/scroll-text-BKXS1ahr.js +2 -0
- package/public/assets/{secrets-C7GIUATz.js → secrets-DxI-vzSq.js} +2 -2
- package/public/assets/{service-access-settings-C3aujqTG.js → service-access-settings-D9s_VJbd.js} +2 -2
- package/public/assets/{settings-C6sZ9eBa.js → settings-CKZTVGIx.js} +2 -2
- package/public/assets/{shipping-Bu8p1gEw.js → shipping-B9YtnwtG.js} +2 -2
- package/public/assets/{stats-V9Z-GxUd.js → stats-DyUBKyWI.js} +2 -2
- package/public/assets/{status-dot-CVv0iGHL.js → status-dot-DYqlEUhJ.js} +2 -2
- package/public/assets/{store-BvtFdlGX.js → store-DcClXLH0.js} +3 -3
- package/public/assets/{tasks-CXU75HRF.js → tasks-Bh7Chr4-.js} +2 -2
- package/public/assets/{teams-BPf976zb.js → teams-bowI7qVY.js} +2 -2
- package/public/assets/{terminal-viewer-DE9BOe-8.js → terminal-viewer-BgVLHdsU.js} +3 -3
- package/public/assets/{terminal-viewer-impl-D04pjmGh.js → terminal-viewer-impl-Dz22UPy6.js} +2 -2
- package/public/assets/token-estimate-Co-Jdphh.js +2 -0
- package/public/assets/{use-agent-terminal-B1yR456R.js → use-agent-terminal-DSQQ-iY7.js} +2 -2
- package/public/assets/{use-decisions-D-S4tpDf.js → use-decisions-samMQhQf.js} +2 -2
- package/public/assets/use-project-list-59LheVP7.js +2 -0
- package/public/assets/{use-selectors-CnrAk2YP.js → use-selectors-BZa25xEB.js} +2 -2
- package/public/assets/{user-avatar-nBFIcR4M.js → user-avatar-DHxlvUvV.js} +2 -2
- package/public/assets/versioned-prompt-editor-BmED5DnJ.js +8 -0
- package/public/assets/{work-queue-TCjJxeT-.js → work-queue-CSvpuNLz.js} +2 -2
- package/public/assets/{workflow-marker-Cf3Hf2fN.js → workflow-marker-DAZcj5qt.js} +2 -2
- package/public/assets/{workflows-CXQX20Qj.js → workflows-DdmxRSyg.js} +2 -2
- package/public/assets/{workspaces-qSYzKYMA.js → workspaces-BxeKfVuF.js} +2 -2
- package/public/cosmos.html +4 -4
- package/public/index.html +31 -29
- package/runner/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/runner/plugins/claude/hooks/gate-run-guard.provisioned.mjs +31 -1
- package/runner/src/adapters/claude-effort.ts +2 -4
- package/runner/src/adapters/codex-launch-config.ts +4 -5
- package/runner/src/adapters/codex.ts +1 -1
- package/runner/src/adapters/opencode-provider.ts +7 -22
- package/runner/src/adapters/opencode.ts +4 -4
- package/runner/src/agent-runner/credentials.ts +42 -12
- package/runner/src/agent-runner/inbox.ts +27 -0
- package/runner/src/agent-runner/lifecycle-milestones.ts +0 -2
- package/runner/src/bin/claude.ts +4 -0
- package/runner/src/bin/codex.ts +4 -0
- package/runner/src/bin/opencode.ts +4 -0
- package/runner/src/index.ts +5 -2
- package/runner/src/provider-setup.ts +34 -0
- package/runner/src/providers.ts +2 -1
- package/runner/src/runner-core.ts +18 -23
- package/runner/src/spawn-input.ts +2 -1
- package/runner/src/test-run-dedup.ts +59 -56
- package/scripts/cd-config.ts +24 -3
- package/scripts/gate-run-lease.ts +10 -7
- package/scripts/gate.sh +5 -1
- package/src/branch-land-notice.ts +93 -0
- package/src/branch-landed.ts +7 -76
- package/src/bus.ts +19 -20
- package/src/cd-deploy-notify.ts +30 -2
- package/src/cd-host-lag-notify.ts +7 -6
- package/src/ci/incidents.ts +2 -2
- package/src/ci/monitor.ts +5 -8
- package/src/ci/root-missing.ts +2 -7
- package/src/ci/transition-notify.ts +7 -39
- package/src/cli/cd-pauses.ts +19 -0
- package/src/cli/orchestrator.ts +1 -1
- package/src/cli/state.ts +2 -19
- package/src/cli/task-edit.ts +22 -0
- package/src/cli/task.ts +3 -1
- package/src/cli/workflow.ts +8 -2
- package/src/commands-db.ts +10 -6
- package/src/commands-write.ts +8 -0
- package/src/config-store-write.ts +13 -1
- package/src/config-store.ts +25 -14
- package/src/db/activity-async.ts +6 -1
- package/src/db/activity-write-ops.ts +13 -1
- package/src/db/activity.ts +1 -14
- package/src/db/agent-lifecycle-write-ops.ts +1 -0
- package/src/db/agent-meta.ts +2 -2
- package/src/db/agent-ownership-write-ops.ts +4 -0
- package/src/db/agent-search.ts +1 -15
- package/src/db/agents-async.ts +58 -7
- package/src/db/agents-write-ops.ts +28 -5
- package/src/db/agents.ts +81 -54
- package/src/db/artifacts-write-ops.ts +8 -3
- package/src/db/bus-outbox-write-ops.ts +1 -0
- package/src/db/channels-write-ops.ts +4 -0
- package/src/db/ci-incidents-async.ts +5 -5
- package/src/db/ci-incidents-write-ops.ts +2 -2
- package/src/db/claude-api-budget-ops.ts +5 -5
- package/src/db/claude-app-oauth.ts +4 -4
- package/src/db/codex-reset-consumes-write-ops.ts +3 -0
- package/src/db/command-row.ts +10 -2
- package/src/db/commands-list-query.ts +2 -0
- package/src/db/commands-spawn-read.ts +1 -1
- package/src/db/commands-write-ops.ts +21 -0
- package/src/db/config-store-write-ops.ts +9 -2
- package/src/db/continuation-archives-async.ts +5 -0
- package/src/db/continuation-archives-write-ops.ts +9 -0
- package/src/db/continuations.ts +2 -2
- package/src/db/db-writer-worker.ts +8 -1
- package/src/db/delivery-write-ops.ts +5 -0
- package/src/db/deploy-events-async.ts +1 -0
- package/src/db/deploy-events-read-ops.ts +2 -1
- package/src/db/deploy-events.ts +35 -4
- package/src/db/hosts-registration.ts +10 -2
- package/src/db/hosts-write-ops.ts +14 -0
- package/src/db/hosts.ts +9 -6
- package/src/db/inbox-write-ops.ts +4 -0
- package/src/db/inbox.ts +0 -14
- package/src/db/index.ts +2 -0
- package/src/db/insights-write-ops.ts +1 -0
- package/src/db/integrations-async.ts +8 -0
- package/src/db/integrations-ops.ts +15 -0
- package/src/db/integrations.ts +15 -21
- package/src/db/issue-lifecycle.ts +3 -4
- package/src/db/issue-refs-async.ts +20 -0
- package/src/db/issue-refs-write-ops.ts +29 -0
- package/src/db/issue-refs.ts +7 -8
- package/src/db/long-running-work.ts +2 -2
- package/src/db/macos-privacy.ts +1 -1
- package/src/db/main-connection-writes.ts +23 -2
- package/src/db/maintenance-job-reconcile.ts +61 -0
- package/src/db/maintenance-job-runs-async.ts +14 -0
- package/src/db/maintenance-job-write-ops.ts +9 -0
- package/src/db/mappers.ts +2 -14
- package/src/db/merge-lease.ts +1 -15
- package/src/db/message-reads-write-ops.ts +3 -0
- package/src/db/message-write-ops.ts +4 -0
- package/src/db/migrations.ts +7 -15
- package/src/db/orchestrators-async.ts +7 -3
- package/src/db/orchestrators-write-ops.ts +7 -1
- package/src/db/orchestrators.ts +21 -77
- package/src/db/pairs.ts +1 -13
- package/src/db/project-profile-instructions.ts +50 -0
- package/src/db/prompt-versions-ops.ts +1 -0
- package/src/db/prompt-versions.ts +9 -2
- package/src/db/provider-catalog-write-ops.ts +4 -4
- package/src/db/provider-config-history.ts +8 -3
- package/src/db/provider-flap-messages-write-ops.ts +1 -0
- package/src/db/provider-model-seed.ts +34 -0
- package/src/db/provider-quota-lease-write-ops.ts +1 -0
- package/src/db/provider-quota-write-ops.ts +2 -0
- package/src/db/provisioning-write-ops.ts +9 -8
- package/src/db/read-op-marshaling-fixtures.ts +5 -0
- package/src/db/read-ops.ts +4 -0
- package/src/db/routing-policy.ts +3 -4
- package/src/db/schema.ts +9 -3
- package/src/db/secrets-broker-write-ops.ts +5 -5
- package/src/db/secrets-vault-write.ts +7 -7
- package/src/db/services-write-ops.ts +3 -0
- package/src/db/spawn-delegation-state.ts +11 -4
- package/src/db/spawn-tree-cleanup.ts +3 -0
- package/src/db/stats-async.ts +4 -3
- package/src/db/task-entity.ts +23 -2
- package/src/db/task-list.ts +3 -1
- package/src/db/tasks.ts +1 -17
- package/src/db/team-spawn-delegation.ts +1 -1
- package/src/db/teams-write-ops.ts +4 -4
- package/src/db/timer-cutover-write-ops.ts +7 -0
- package/src/db/timer-ingress-write-ops.ts +9 -0
- package/src/db/timer-ingress.ts +7 -1
- package/src/db/timer-operator-write-ops.ts +14 -0
- package/src/db/timer-transfer-write-ops.ts +4 -0
- package/src/db/timer-write-ops.ts +14 -0
- package/src/db/token-db-write-ops.ts +21 -0
- package/src/db/token-standing.ts +15 -11
- package/src/db/user-settings-write-ops.ts +1 -0
- package/src/db/vault-backup.ts +2 -2
- package/src/db/vault-expiry.ts +2 -2
- package/src/db/vault-health.ts +3 -3
- package/src/db/vault-token-ops.ts +8 -8
- package/src/db/web-tool-call-ops.ts +3 -3
- package/src/db/workflow-contact.ts +1 -1
- package/src/db/workflow-task-read-ops.ts +30 -0
- package/src/db/write-ops.ts +15 -1
- package/src/db/writer-fault-seam.ts +5 -2
- package/src/db/writer-gateway.ts +21 -12
- package/src/dispatch-availability.ts +10 -6
- package/src/ephemeral/{landing-ingress-proof-worker.ts → landing-ingress-proof.test-fixture.ts} +4 -2
- package/src/host/disk-alert.ts +121 -0
- package/src/lifecycle-manager.ts +3 -2
- package/src/maintenance/cd-watcher.ts +3 -3
- package/src/maintenance/critical-job-watchdog.ts +16 -17
- package/src/maintenance/index.ts +1 -0
- package/src/maintenance/jobs.ts +3 -2
- package/src/maintenance/scheduler.ts +84 -128
- package/src/maintenance/stalled-delivery-pager.ts +6 -5
- package/src/maintenance/workspaces.ts +1 -1
- package/src/managed-policy.ts +31 -27
- package/src/mcp/index.ts +5 -2
- package/src/mcp/output-descriptions.ts +8 -8
- package/src/mcp/presentation.ts +4 -4
- package/src/mcp/project-profile-instructions.ts +32 -0
- package/src/mcp/tool-groups.ts +1 -1
- package/src/mcp/tools-spawn.ts +4 -3
- package/src/mcp-agent-action.ts +1 -2
- package/src/mcp-host-tools.ts +1 -1
- package/src/mcp-issue-ref-tools.ts +12 -11
- package/src/mcp-maintenance-tools.ts +2 -2
- package/src/mcp-profile-trust-tools.ts +4 -4
- package/src/mcp-provider-catalog.ts +2 -2
- package/src/mcp-task-tools.ts +11 -5
- package/src/mcp-team-template-tools.ts +3 -3
- package/src/mcp-workflow-tools.ts +10 -3
- package/src/notification-types.ts +2 -1
- package/src/operator-alarm.ts +26 -11
- package/src/package-pack.ts +42 -39
- package/src/project-instructions.ts +4 -0
- package/src/project-profile-instruction-text.ts +6 -0
- package/src/project-profile-instructions.ts +20 -0
- package/src/provider-catalog-store.ts +3 -49
- package/src/provider-config-store.ts +12 -11
- package/src/provider-model-seed.ts +1 -18
- package/src/provider-quota-config-store.ts +5 -4
- package/src/provider-secrets.test-fixture.ts +3 -3
- package/src/recipe-runner.ts +2 -2
- package/src/repo-config-source.ts +10 -4
- package/src/routes/agent-profiles.ts +6 -6
- package/src/routes/agents-spawn.ts +1 -1
- package/src/routes/agents.ts +6 -6
- package/src/routes/commands-listing.ts +4 -0
- package/src/routes/commands.ts +2 -2
- package/src/routes/continuation-archives.ts +2 -2
- package/src/routes/host-resource-control.ts +4 -1
- package/src/routes/index.ts +10 -1
- package/src/routes/integrations.ts +24 -50
- package/src/routes/issue-refs.ts +7 -7
- package/src/routes/orchestrator-bootstrap.ts +3 -3
- package/src/routes/orchestrator-host-registration.ts +2 -2
- package/src/routes/orchestrator-host-utilization.ts +3 -1
- package/src/routes/orchestrator-proxy.ts +2 -2
- package/src/routes/orchestrator.ts +4 -4
- package/src/routes/project-profile-instructions.ts +27 -0
- package/src/routes/project-trust.ts +2 -2
- package/src/routes/provider-config.ts +9 -8
- package/src/routes/provider-quota-config.ts +2 -2
- package/src/routes/settings.ts +5 -5
- package/src/routes/stats.ts +6 -6
- package/src/routes/task-http.ts +15 -1
- package/src/routes/task-issues.ts +11 -26
- package/src/routes/tasks.ts +22 -53
- package/src/routes/team-templates.ts +5 -5
- package/src/routes/teams-config.ts +2 -2
- package/src/routes/tokens.ts +12 -5
- package/src/routes/workflows.ts +20 -5
- package/src/routing-policy-normalize.ts +1 -2
- package/src/routing-step-defaults.ts +0 -2
- package/src/runner-token-mint-limit.ts +63 -0
- package/src/runtime-grant.ts +4 -2
- package/src/runtime-tokens.ts +50 -9
- package/src/security.ts +13 -20
- package/src/server-background.ts +1 -1
- package/src/server.ts +5 -2
- package/src/services/host-utilization.ts +23 -0
- package/src/services/idle-epics.ts +5 -6
- package/src/services/issue-lifecycle.ts +57 -61
- package/src/services/issue-refs.ts +9 -13
- package/src/services/kernel-timers-cutover-chaos-worker.ts +12 -7
- package/src/services/kernel-timers-ingress.ts +1 -1
- package/src/services/kernel-timers-request-key-migration-chaos-worker.ts +4 -1
- package/src/services/landed-ancestry.ts +19 -3
- package/src/services/memory-areas.ts +15 -51
- package/src/services/plan-ci-notice.ts +57 -0
- package/src/services/plan-ci-recovery.ts +2 -55
- package/src/services/plan-wake-digest.ts +1 -0
- package/src/services/profile-trust.ts +4 -3
- package/src/services/project-config-read.ts +70 -0
- package/src/services/project-profile-instructions.ts +54 -0
- package/src/services/provisioning-harness/budget-baseline.json +4 -4
- package/src/services/restart-spawn.ts +61 -49
- package/src/services/self-care-state.ts +2 -1
- package/src/services/self-effort.ts +5 -5
- package/src/services/send-message.ts +5 -1
- package/src/services/spawn-agent.ts +13 -2
- package/src/services/spawn-chain-inspector.ts +6 -13
- package/src/services/spawn-policy.ts +68 -0
- package/src/services/spawn-tree-cleanup.ts +2 -2
- package/src/services/task-dispatch.ts +3 -0
- package/src/services/task-state-reconcile.ts +6 -14
- package/src/services/team-templates.ts +9 -8
- package/src/services/transient-agent-reaper.ts +3 -1
- package/src/services/workflow-auto-start.ts +25 -13
- package/src/services/workflow-ci-main.ts +1 -1
- package/src/services/workflow-deferred-cleanup.ts +4 -2
- package/src/services/workflow-effect-driver.ts +2 -0
- package/src/services/workflow-effects.ts +18 -11
- package/src/services/workflow-land-notice.ts +10 -0
- package/src/services/workflow-pause-text.ts +43 -0
- package/src/services/workflow-reconcile.ts +13 -11
- package/src/services/workflow-run-view.ts +2 -0
- package/src/services/workflow-runs.ts +29 -13
- package/src/services/workflow-supervisor-state.ts +5 -0
- package/src/services/workflow-supervisor.ts +7 -3
- package/src/settings/registry.ts +1 -2
- package/src/spawn-command.ts +4 -4
- package/src/spawn-models.ts +10 -12
- package/src/spawn-placement.ts +1 -1
- package/src/spawn-targets.ts +1 -1
- package/src/startup-context-injection.ts +1 -0
- package/src/state-adoption/cd-cutover.ts +53 -7
- package/src/state-adoption/fleet-cutover.ts +35 -0
- package/src/state-adoption/fleet-plan.ts +36 -0
- package/src/state-adoption/index.ts +2 -2
- package/src/state-adoption/linux-plan.ts +2 -2
- package/src/state-adoption/linux.ts +2 -2
- package/src/state-adoption/macos-plan.ts +2 -2
- package/src/state-adoption/macos.ts +1 -1
- package/src/steward.ts +7 -6
- package/src/task-dispatch-live.ts +1 -1
- package/src/task-dispatcher.ts +1 -1
- package/src/teams-config-store.ts +4 -3
- package/src/token-db-write.ts +10 -0
- package/src/workspace-command-settle.ts +2 -1
- package/src/workspace-steward-wake.ts +2 -2
- package/node_modules/@humwick/kernel/LICENSE +0 -167
- package/node_modules/@humwick/kernel/async-entity-persistence.ts +0 -344
- package/node_modules/@humwick/kernel/async-event-log.ts +0 -107
- package/node_modules/@humwick/kernel/automations.pilot.ts +0 -147
- package/node_modules/@humwick/kernel/config.ts +0 -111
- package/node_modules/@humwick/kernel/contract.ts +0 -572
- package/node_modules/@humwick/kernel/control-authz.ts +0 -281
- package/node_modules/@humwick/kernel/control.ts +0 -645
- package/node_modules/@humwick/kernel/effects.ts +0 -493
- package/node_modules/@humwick/kernel/event-log.ts +0 -319
- package/node_modules/@humwick/kernel/http-transport.ts +0 -384
- package/node_modules/@humwick/kernel/identity-grammar.ts +0 -20
- package/node_modules/@humwick/kernel/identity.ts +0 -248
- package/node_modules/@humwick/kernel/index.ts +0 -28
- package/node_modules/@humwick/kernel/kernel-persistence.ts +0 -181
- package/node_modules/@humwick/kernel/landing-incident.ts +0 -306
- package/node_modules/@humwick/kernel/landing.ts +0 -953
- package/node_modules/@humwick/kernel/manifest-validation.ts +0 -460
- package/node_modules/@humwick/kernel/mcp-transport.ts +0 -109
- package/node_modules/@humwick/kernel/message-authority-chaos-worker.ts +0 -200
- package/node_modules/@humwick/kernel/message-authority.ts +0 -281
- package/node_modules/@humwick/kernel/module-host.ts +0 -722
- package/node_modules/@humwick/kernel/openapi-init.ts +0 -14
- package/node_modules/@humwick/kernel/package.json +0 -47
- package/node_modules/@humwick/kernel/persistence-schema.ts +0 -248
- package/node_modules/@humwick/kernel/persistence.ts +0 -510
- package/node_modules/@humwick/kernel/registry.ts +0 -60
- package/node_modules/@humwick/kernel/sqlite-kernel-persistence.ts +0 -499
- package/node_modules/@humwick/kernel/sqlite-module-host.ts +0 -87
- package/node_modules/@humwick/kernel/timers-chaos-worker.ts +0 -186
- package/node_modules/@humwick/kernel/timers.pilot.ts +0 -1411
- package/node_modules/@humwick/kernel/workflow-activation.ts +0 -25
- package/node_modules/@humwick/kernel/workflow-backstop.ts +0 -40
- package/node_modules/@humwick/kernel/workflow-cancel-tree.ts +0 -20
- package/node_modules/@humwick/kernel/workflow-chaos-worker.ts +0 -213
- package/node_modules/@humwick/kernel/workflow-composition.ts +0 -231
- package/node_modules/@humwick/kernel/workflow-container.ts +0 -72
- package/node_modules/@humwick/kernel/workflow-control.test-fixture.ts +0 -42
- package/node_modules/@humwick/kernel/workflow-control.ts +0 -178
- package/node_modules/@humwick/kernel/workflow-definition.ts +0 -507
- package/node_modules/@humwick/kernel/workflow-dispatch.ts +0 -60
- package/node_modules/@humwick/kernel/workflow-foreach.ts +0 -167
- package/node_modules/@humwick/kernel/workflow-journal-codec.ts +0 -339
- package/node_modules/@humwick/kernel/workflow-journal.ts +0 -922
- package/node_modules/@humwick/kernel/workflow-lane.ts +0 -48
- package/node_modules/@humwick/kernel/workflow-lease-owner.ts +0 -60
- package/node_modules/@humwick/kernel/workflow-recovery.test-fixture.ts +0 -19
- package/node_modules/@humwick/kernel/workflow-runtime.ts +0 -938
- package/node_modules/@humwick/kernel/workflow-script.ts +0 -11
- package/node_modules/@humwick/kernel/workflow-state.ts +0 -299
- package/node_modules/@humwick/kernel/workflow-step-commit.ts +0 -195
- package/node_modules/@humwick/kernel/workflow-transitions.ts +0 -317
- package/node_modules/@humwick/kernel/workflow-values.ts +0 -153
- package/node_modules/@humwick/kernel/workflow.pilot.ts +0 -376
- package/node_modules/@humwick/offload/LICENSE +0 -167
- package/node_modules/@humwick/offload/README.md +0 -57
- package/node_modules/@humwick/offload/dist/async-runner.d.ts +0 -18
- package/node_modules/@humwick/offload/dist/async-runner.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/async-runner.js +0 -158
- package/node_modules/@humwick/offload/dist/async-runner.js.map +0 -1
- package/node_modules/@humwick/offload/dist/envelope.d.ts +0 -25
- package/node_modules/@humwick/offload/dist/envelope.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/envelope.js +0 -80
- package/node_modules/@humwick/offload/dist/envelope.js.map +0 -1
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts +0 -10
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.js +0 -59
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.js.map +0 -1
- package/node_modules/@humwick/offload/dist/index.d.ts +0 -5
- package/node_modules/@humwick/offload/dist/index.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/index.js +0 -5
- package/node_modules/@humwick/offload/dist/index.js.map +0 -1
- package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts +0 -62
- package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/subprocess-runner.js +0 -295
- package/node_modules/@humwick/offload/dist/subprocess-runner.js.map +0 -1
- package/node_modules/@humwick/offload/dist/types.d.ts +0 -111
- package/node_modules/@humwick/offload/dist/types.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/types.js +0 -176
- package/node_modules/@humwick/offload/dist/types.js.map +0 -1
- package/node_modules/@humwick/offload/dist/worker-pool.d.ts +0 -23
- package/node_modules/@humwick/offload/dist/worker-pool.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/worker-pool.js +0 -435
- package/node_modules/@humwick/offload/dist/worker-pool.js.map +0 -1
- package/node_modules/@humwick/offload/dist/worker-runtime.d.ts +0 -2
- package/node_modules/@humwick/offload/dist/worker-runtime.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/worker-runtime.js +0 -27
- package/node_modules/@humwick/offload/dist/worker-runtime.js.map +0 -1
- package/node_modules/@humwick/offload/dist/worker.d.ts +0 -5
- package/node_modules/@humwick/offload/dist/worker.d.ts.map +0 -1
- package/node_modules/@humwick/offload/dist/worker.js +0 -1
- package/node_modules/@humwick/offload/dist/worker.js.map +0 -1
- package/node_modules/@humwick/offload/package.json +0 -46
- package/node_modules/@humwick/offload/src/async-runner.ts +0 -170
- package/node_modules/@humwick/offload/src/envelope.ts +0 -92
- package/node_modules/@humwick/offload/src/fixtures/worker-task.ts +0 -49
- package/node_modules/@humwick/offload/src/index.ts +0 -4
- package/node_modules/@humwick/offload/src/subprocess-runner.ts +0 -334
- package/node_modules/@humwick/offload/src/types.ts +0 -235
- package/node_modules/@humwick/offload/src/worker-pool.ts +0 -463
- package/node_modules/@humwick/offload/src/worker-runtime.ts +0 -32
- package/node_modules/@humwick/offload/src/worker.ts +0 -5
- package/public/assets/agent-liveness-DyqxfB-t.js +0 -2
- package/public/assets/agent-profiles-BpI_jTxq.js +0 -2
- package/public/assets/fleet-BL4UXS_k.js +0 -2
- package/public/assets/index-B7ZerHLY.css +0 -2
- package/public/assets/index-BK0WV6hF.js +0 -15
- package/public/assets/projects-B_lmcqfO.js +0 -2
- package/public/assets/provider-display-DbLWpP3j.js +0 -2
- package/public/assets/run-card-CO_bguQf.js +0 -2
- package/public/assets/use-project-list-B-T2Bnnn.js +0 -2
- package/public/assets/versioned-prompt-editor-Diu8BIaM.js +0 -8
- package/runner/src/gate-run-lease-probe.ts +0 -38
- package/src/db/claude-catalog-reconcile.ts +0 -27
- package/src/routing-model-aliases.ts +0 -21
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t,u as n}from"./dist-DeW2Y1R5.js";import{t as r}from"./store-BvtFdlGX.js";import{M as i}from"./provider-display-DbLWpP3j.js";import{n as a,t as o}from"./use-project-list-B-T2Bnnn.js";import{et as s}from"./display-CfO7rTuF.js";import{l as c,t as l}from"./api-CIIVBtAV.js";import{t as u}from"./label-BPBzm9FJ.js";import{t as d}from"./boxes-Cv7Wq3h4.js";import{t as f}from"./brain-circuit-CpQeSmp3.js";import{t as p}from"./folder-git-2-CJOmTT06.js";import{t as m}from"./button-Do6Z3vvn.js";import{t as h}from"./badge-DqJRtj_p.js";import{t as g}from"./copy-button-CjOj4HEf.js";import{t as _}from"./input-CsTB6jIx.js";import{o as v,r as y,s as b,t as x}from"./card-C4QJ4hCW.js";var S=e(t(),1),C=n();function w({project:e,roots:t,onChanged:n}){let a=r(e=>e.orchestrators),o=r(e=>e.authToken),[s,u]=(0,S.useState)(``),[d,f]=(0,S.useState)(``),[p,h]=(0,S.useState)(),[g,_]=(0,S.useState)(``),[v,y]=(0,S.useState)([]),[b,x]=(0,S.useState)([]),[w,T]=(0,S.useState)([]),[E,D]=(0,S.useState)(``),[O,k]=(0,S.useState)(!1),A=`/projects/${encodeURIComponent(e.id)}`,j=s||a.find(e=>e.status===`online`)?.id||``,M=t.filter(e=>!e.orchestratorId||e.orchestratorId===j),N=M.some(e=>e.rootPath===d)?d:M[0]?.rootPath||``,P=M.some(e=>e.rootPath===N&&e.orchestratorId===j);(0,S.useEffect)(()=>{let t=!0,n=()=>l(`GET`,`${A}/checkouts`).then(e=>{t&&(y(e.checkouts),x(e.refreshes??[]),T(e.enrollments??[]))}).catch(e=>{t&&D(i(e))}),r=c(o,{connected:()=>{n()},message:(t,r)=>{if(t===`config.changed`){let t=JSON.parse(r);t.namespace===`projects`&&t.key===e.id&&n();return}t.startsWith(`command.`)&&JSON.parse(r).command?.params.projectId===e.id&&n()}});return n(),()=>{t=!1,r.close()}},[e.id,A,o]);async function F(){k(!0),D(``);try{n((await l(`POST`,`${A}/archive`,{archived:e.status!==`archived`})).project)}catch(e){D(i(e))}finally{k(!1)}}async function I(){k(!0),D(``),_(``);try{let e=await l(`POST`,`${A}/checkouts/bind`,{orchestratorId:j,rootPath:p??N});_(`Bound on ${j}: ${p??N}`),n(e.project,e.roots)}catch(e){D(i(e))}finally{k(!1)}}async function L(){k(!0),D(``),_(``);try{let e=await l(`POST`,`${A}/checkouts/unbind`,{orchestratorId:j,rootPath:N});_(`Unbound from ${j}: ${N}. Files kept.`),n(e.project,e.roots)}catch(e){D(i(e))}finally{k(!1)}}async function R(){if(window.confirm(`Delete the checkout ${N} and its worktrees on ${j}? Unbind keeps the files.`)){k(!0),D(``);try{let{command:e}=await l(`DELETE`,`${A}/checkouts/${encodeURIComponent(j)}?deleteFiles=true&rootPath=${encodeURIComponent(N)}`),t=await l(`GET`,`${A}/checkouts`);y(t.checkouts.length?t.checkouts:[{commandId:e.id,type:e.type,status:e.status,orchestratorId:j,rootPath:N}])}catch(e){D(i(e))}finally{k(!1)}}}let z=v.some(e=>[`pending`,`accepted`,`running`].includes(e.status));return(0,C.jsxs)(`div`,{className:`space-y-3 rounded-md border p-3`,children:[(0,C.jsx)(m,{variant:`outline`,disabled:O,onClick:()=>void F(),children:e.status===`archived`?`Restore project`:`Archive project`}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Archiving keeps checkouts and memory. Unbinding stops refresh, spawns and gates on that host and keeps its files. Deleting removes the checkout directory on that host and keeps project memory.`}),(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsxs)(`select`,{"aria-label":`Checkout host`,value:j,onChange:e=>u(e.target.value),className:`rounded-md border bg-background px-2 py-1`,children:[!j&&(0,C.jsx)(`option`,{value:``,children:`Choose a host`}),a.map(e=>(0,C.jsxs)(`option`,{value:e.id,children:[e.hostname,e.status===`online`?``:` (offline)`]},e.id))]}),t.length>0&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`select`,{"aria-label":`Checkout root`,value:N,onChange:e=>f(e.target.value),className:`max-w-full rounded-md border bg-background px-2 py-1`,children:M.map(e=>(0,C.jsx)(`option`,{value:e.rootPath,children:e.rootPath},e.rootPath))}),(0,C.jsx)(m,{variant:`outline`,disabled:O||!P,onClick:()=>void L(),children:`Unbind from host (keep files)`}),(0,C.jsx)(m,{variant:`outline`,disabled:O||z||!j||!N,onClick:()=>void R(),children:`Delete checkout files on host`})]}),(0,C.jsx)(`input`,{"aria-label":`Existing checkout root`,placeholder:`Absolute path to an existing checkout`,value:p??N,onChange:e=>h(e.target.value),className:`w-full min-w-0 rounded-md border bg-background px-2 py-1 sm:w-auto sm:min-w-64`}),(0,C.jsx)(m,{variant:`outline`,disabled:O||!j||!(p??N)||e.status!==`active`,onClick:()=>void I(),children:`Bind existing checkout`})]}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Binding verifies the checkout and its origin, then registers it on the selected host.`}),g&&(0,C.jsx)(`div`,{role:`status`,className:`text-sm`,children:g}),v.map(e=>(0,C.jsxs)(`div`,{role:[`failed`,`timed_out`,`canceled`].includes(e.status)?`alert`:`status`,className:`text-sm`,children:[a.find(t=>t.id===e.orchestratorId)?.hostname||e.orchestratorId,`: `,e.rootPath,` — `,e.result?.action===`removed`?`Removed`:e.status,e.error&&(0,C.jsxs)(`span`,{className:`text-destructive`,children:[` — `,e.result?.errorCode,`: `,e.error]})]},e.commandId)),w.map(e=>(0,C.jsxs)(`div`,{role:e.disposition===`ambiguous`?`alert`:`status`,className:`text-sm`,children:[e.orchestratorId||`unknown host`,`: `,e.rootPath,` — Refresh enrollment `,e.disposition,` · `,e.reason]},JSON.stringify([e.orchestratorId,e.rootPath]))),b.map(e=>(0,C.jsxs)(`div`,{role:e.error||e.result?.reason&&e.health!==`unsupported`||e.health===`stale`?`alert`:`status`,className:`text-sm`,children:[a.find(t=>t.id===e.orchestratorId)?.hostname||e.orchestratorId,`: `,e.rootPath,` — Checkout refresh `,e.result?.status??e.status,e.result&&(0,C.jsxs)(C.Fragment,{children:[e.health===`stale`&&(0,C.jsx)(`span`,{children:` · Refresh heartbeat stale`}),(0,C.jsxs)(`span`,{children:[` · Head `,e.result.headSha?.slice(0,12)??`unknown`,` · Target `,e.result.targetSha?.slice(0,12)??`unknown`,` · Behind `,e.result.behind??`unknown`]}),(0,C.jsxs)(`span`,{children:[` · Last success `,e.result.successAt?new Date(e.result.successAt).toLocaleString():`never`]}),e.result.dependency&&(0,C.jsxs)(`span`,{children:[` · Dependencies `,e.result.dependency.status]}),e.result.reason&&(0,C.jsxs)(`span`,{children:[` · `,e.result.reason]}),e.result.backups.map(e=>(0,C.jsxs)(`div`,{children:[`Backup: `,e.path,` → `,e.backup]},e.backup))]}),e.error&&(0,C.jsxs)(`span`,{className:`text-destructive`,children:[` · `,e.error]})]},e.commandId)),E&&(0,C.jsx)(`p`,{role:`alert`,className:`text-destructive`,children:E})]})}function T({onCreated:e}){let t=r(e=>e.orchestrators),n=r(e=>e.authToken),a=r(e=>e.openOrchestratorSpawnAt),[o,s]=(0,S.useState)(!1),[d,f]=(0,S.useState)(``),[p,h]=(0,S.useState)(!1),[g,v]=(0,S.useState)(``),[y,b]=(0,S.useState)(``),[x,w]=(0,S.useState)(`private`),[T,E]=(0,S.useState)(``),[D,O]=(0,S.useState)(!1),[k,A]=(0,S.useState)(``),[j,M]=(0,S.useState)(null),[N,P]=(0,S.useState)(!1),[F,I]=(0,S.useState)(null),[L,R]=(0,S.useState)({}),[z,B]=(0,S.useState)(``),V=j??t.filter(e=>e.status===`online`).slice(0,1).map(e=>e.id);(0,S.useEffect)(()=>{if(!F)return;let e=!0,t=F.creation?[F.creation.commandId]:F.checkouts.flatMap(e=>e.commandId?[e.commandId]:[]),r=n=>{if(!e||!t.includes(n.id))return;R(e=>({...e,[n.id]:n}));let r=n.result;F.creation&&r?.onboarding&&I(r.onboarding)},a=t=>l(`GET`,`/commands/${encodeURIComponent(t)}`).then(r).catch(t=>{e&&B(i(t))}),o=()=>Promise.all(t.map(a)),s=c(n,{connected:()=>{o()},message:(e,n)=>{if(!e.startsWith(`command.`))return;let r=JSON.parse(n).command?.id;r&&t.includes(r)&&a(r)}});return o(),()=>{e=!1,s.close()}},[F,n]);async function H(t){t.preventDefault(),P(!0),B(``),R({}),I(null);try{let t=await l(`POST`,`/projects`,{...p?{create:{owner:g,name:y,visibility:x,...T.trim()?{template:T.trim()}:{}},...D?{setupTask:!0}:{}}:{url:d},...V.length===1?{orchestratorId:V[0]}:{hosts:V},...k.trim()?{slug:k.trim()}:{}});I(t),e()}catch(e){B(i(e))}finally{P(!1)}}let U=F?.creation?L[F.creation.commandId]:void 0,W=U?.result,G=W?.errorCode||U&&[`failed`,`timed_out`,`canceled`].includes(U.status),K=F?.creation&&(!U||[`pending`,`accepted`,`running`].includes(U.status))||F?.checkouts.some(e=>e.commandId&&(!L[e.commandId]||[`pending`,`accepted`,`running`].includes(L[e.commandId].status)));return(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,C.jsx)(m,{variant:`outline`,onClick:()=>{h(!1),s(!0)},children:`Add project`}),(0,C.jsx)(m,{variant:`outline`,onClick:()=>{h(!0),s(!0)},children:`New project`})]}),o&&(0,C.jsxs)(`form`,{onSubmit:H,className:`space-y-3 rounded-md border p-3`,children:[p?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(u,{htmlFor:`onboard-owner`,children:`GitHub owner`}),(0,C.jsx)(_,{id:`onboard-owner`,value:g,onChange:e=>v(e.target.value),required:!0}),(0,C.jsx)(u,{htmlFor:`onboard-name`,children:`Repository name`}),(0,C.jsx)(_,{id:`onboard-name`,value:y,onChange:e=>b(e.target.value),required:!0}),(0,C.jsx)(u,{htmlFor:`onboard-visibility`,children:`Visibility`}),(0,C.jsxs)(`select`,{id:`onboard-visibility`,className:`h-8 w-full rounded-md border border-border bg-card px-2 text-sm`,value:x,onChange:e=>w(e.target.value),children:[(0,C.jsx)(`option`,{value:`private`,children:`Private`}),(0,C.jsx)(`option`,{value:`public`,children:`Public`})]}),(0,C.jsx)(u,{htmlFor:`onboard-template`,children:`Template (optional, owner/repo)`}),(0,C.jsx)(_,{id:`onboard-template`,value:T,onChange:e=>E(e.target.value)}),(0,C.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:D,onChange:e=>O(e.target.checked)}),`Create a setup Task`]})]}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(u,{htmlFor:`onboard-url`,children:`GitHub repository`}),(0,C.jsx)(_,{id:`onboard-url`,placeholder:`https://github.com/owner/repo`,value:d,onChange:e=>f(e.target.value),required:!0})]}),(0,C.jsx)(u,{htmlFor:`onboard-slug`,children:`Slug (optional)`}),(0,C.jsx)(_,{id:`onboard-slug`,value:k,onChange:e=>A(e.target.value)}),(0,C.jsxs)(`fieldset`,{className:`space-y-1`,children:[(0,C.jsxs)(`legend`,{className:`flex w-full items-center gap-2`,children:[`Hosts`,(0,C.jsxs)(`span`,{className:`ml-auto flex gap-1`,children:[(0,C.jsx)(m,{type:`button`,variant:`ghost`,size:`xs`,"aria-label":`Select all online hosts`,onClick:()=>M(t.filter(e=>e.status===`online`).map(e=>e.id)),children:`all`}),(0,C.jsx)(m,{type:`button`,variant:`ghost`,size:`xs`,"aria-label":`Select no hosts`,onClick:()=>M([]),children:`none`})]})]}),(0,C.jsx)(`div`,{className:`grid gap-x-4 gap-y-1 sm:grid-cols-2`,children:t.map(e=>(0,C.jsxs)(`label`,{className:`flex min-w-0 items-center gap-2`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:V.includes(e.id),onChange:t=>M(t.target.checked?[...V,e.id]:V.filter(t=>t!==e.id))}),(0,C.jsxs)(`span`,{className:`truncate`,children:[e.hostname,e.status===`online`?``:` (offline)`]})]},e.id))})]}),(0,C.jsx)(m,{type:`submit`,disabled:N||!!K||!V.length,children:N?p?`Creating…`:`Adding…`:p?`Create`:`Add`})]}),z&&(0,C.jsx)(`p`,{role:`alert`,className:`text-destructive`,children:z}),F?.creation&&(G?(0,C.jsxs)(`p`,{role:`alert`,className:`text-destructive`,children:[W?.errorCode?`${W.errorCode}: `:``,W?.error||U?.error||`Creation ${U?.status}. Check GitHub before retrying.`]}):(0,C.jsx)(`p`,{role:`status`,children:`Creating GitHub repository…`})),F?.setupTaskId&&(0,C.jsxs)(`p`,{children:[`Setup Task T`,F.setupTaskId,` created.`]}),F&&!F.creation&&(0,C.jsx)(`div`,{className:`overflow-x-auto`,children:(0,C.jsxs)(`table`,{className:`w-full text-left text-sm`,children:[(0,C.jsx)(`caption`,{className:`text-left`,children:`Host readiness`}),(0,C.jsx)(`thead`,{children:(0,C.jsxs)(`tr`,{children:[(0,C.jsx)(`th`,{children:`Host`}),(0,C.jsx)(`th`,{children:`Status`}),(0,C.jsx)(`th`,{children:`Checks`}),(0,C.jsx)(`th`,{children:`Action`})]})}),(0,C.jsx)(`tbody`,{children:F.checkouts.map(e=>{let n=e.commandId?L[e.commandId]:void 0,r=n?.result,i=t.find(t=>t.id===e.orchestratorId),o=n?.status===`succeeded`,s=e.errorCode??r?.errorCode,c=s||n&&[`failed`,`timed_out`,`canceled`].includes(n.status);return(0,C.jsxs)(`tr`,{children:[(0,C.jsx)(`th`,{scope:`row`,children:i?.hostname||e.orchestratorId}),(0,C.jsx)(`td`,{children:c?(0,C.jsxs)(`p`,{role:`alert`,className:`text-destructive`,children:[s?`${s}: `:``,e.error||n?.error||`Checkout ${n?.status}. Try again.`]}):(0,C.jsx)(`span`,{role:`status`,children:o?`Ready on ${i?.hostname||e.orchestratorId}`:`Preparing checkout…`})}),(0,C.jsx)(`td`,{children:(0,C.jsx)(`ul`,{children:r?.readiness?.map((e,t)=>(0,C.jsxs)(`li`,{children:[e.check,e.provider?` (${e.provider})`:``,`: `,e.status,` — `,e.detail]},t))})}),(0,C.jsx)(`td`,{children:o&&e.rootPath&&(0,C.jsx)(m,{onClick:()=>a({orchestratorId:e.orchestratorId,cwd:e.rootPath}),children:`Spawn agent here`})})]},e.orchestratorId)})})]})})]})}function E(){let e=a(),{projects:t,selectedId:n,loading:c,setError:u,refresh:_}=e,E=r(e=>e.set),D=r(e=>e.switchView),[O,k]=(0,S.useState)(null),[A,j]=(0,S.useState)(()=>Date.now());(0,S.useEffect)(()=>{if(!n){k(null);return}let e=!1;return l(`GET`,`/projects/${encodeURIComponent(n)}`).then(t=>{e||(k(t),j(Date.now()))}).catch(t=>{e||u(i(t))}),()=>{e=!0}},[n,u]);function M(e){D(`memory`),E({projectFocusId:e})}return(0,C.jsxs)(`div`,{className:`space-y-3 p-3 sm:p-4`,children:[(0,C.jsx)(o,{icon:(0,C.jsx)(d,{className:`size-5 text-primary`}),title:`Projects`,list:e,onRefresh:()=>void _()}),(0,C.jsx)(T,{onCreated:()=>{_()}}),!c&&t.length===0&&(0,C.jsx)(x,{children:(0,C.jsx)(y,{className:`py-8 text-center text-sm text-muted-foreground`,children:`No projects yet. Add a GitHub repository or create a new one above.`})}),O&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`space-y-1`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,C.jsx)(`span`,{className:`min-w-0 break-words text-base font-semibold`,children:O.project.title||O.project.slug}),(0,C.jsx)(h,{variant:`outline`,className:`font-mono text-[10px]`,children:O.project.slug}),(0,C.jsx)(h,{variant:O.project.status===`active`?`secondary`:`outline`,className:`text-[10px]`,children:O.project.status}),(0,C.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`updated `,s(A,O.project.updatedAt)]}),(0,C.jsxs)(m,{variant:`ghost`,size:`xs`,className:`ml-auto`,onClick:()=>M(O.project.id),children:[(0,C.jsx)(f,{className:`size-3.5`}),` Memories`]})]}),O.project.description&&(0,C.jsx)(`div`,{className:`line-clamp-2 break-words text-sm text-muted-foreground`,children:O.project.description}),O.project.issueRepo&&(0,C.jsxs)(`a`,{href:`https://github.com/${O.project.issueRepo}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex max-w-full items-center gap-1.5 text-primary hover:underline`,children:[(0,C.jsx)(p,{className:`size-3.5 shrink-0`}),(0,C.jsx)(`span`,{className:`truncate font-mono text-xs`,children:O.project.issueRepo})]})]}),(0,C.jsx)(w,{project:O.project,roots:O.roots,onChanged:(e,t)=>{k({...O,project:e,roots:t??O.roots}),_()}},O.project.id),(0,C.jsxs)(x,{children:[(0,C.jsx)(v,{children:(0,C.jsxs)(b,{className:`flex items-center gap-2 text-base`,children:[(0,C.jsx)(p,{className:`size-4 text-muted-foreground`}),` Roots`,(0,C.jsxs)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:[`(`,O.roots.length,`)`]})]})}),(0,C.jsx)(y,{children:O.roots.length===0?(0,C.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`No roots bound. A project resolves to agents by the repo paths registered here.`}):(0,C.jsx)(`div`,{className:`space-y-1.5`,children:O.roots.map(e=>(0,C.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded border border-border bg-card/60 px-2 py-1`,children:[e.orchestratorId&&(0,C.jsx)(`span`,{className:`max-w-[40%] shrink-0 truncate text-xs text-muted-foreground`,children:e.orchestratorId}),(0,C.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-muted-foreground`,title:e.rootPath,children:e.rootPath}),(0,C.jsx)(g,{value:e.rootPath,label:`Copy root path`,size:`icon`,className:`h-6 w-6`,iconClassName:`h-3 w-3`})]},JSON.stringify([e.orchestratorId,e.rootPath])))})})]})]})]})}export{E as ProjectsView};
|
|
2
|
-
//# sourceMappingURL=projects-B_lmcqfO.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function e(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function t(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function n(e){return e instanceof Error?e.message:String(e)}var r=`provider-enablement`,i=`default`,a=`user`;function o(e){return`user:${e}`}var s=o(`claude-app`);function ee(e){return e===`user`||typeof e==`string`&&e.startsWith(`user:`)}function te(e){if(e===`user`)return i;if(typeof e==`string`&&e.startsWith(`user:`))return e.slice(5)||`default`}function ne(e){return e===`user`||e===o(`default`)||e===`user:`?a:e}var re=[`system`,`control`,`session`];function ie(e){return re.includes(e??``)}var ae=[`memory`,`memory-area`,`instructions`,`tools`,`comms`,`knowledge`,`context`];function c(e){return typeof e==`string`&&ae.includes(e)}function l(t){return e(t)&&(t.turnFinal===!0||t.final===!0)}function u(t){return e(t)&&e(t.finality)}function oe(t){if(!e(t))return!1;if(u(t))return!0;let n=t.session;return e(n)&&n.final===!0&&n.turnFinal!==!0}function se(t){if(t.messageType===`final-turn`)return!0;let n=e(t.payload?.responseCapture)?t.payload.responseCapture:void 0;return l(n)&&n.type===`response`}var ce=[`decisions`,`actions`,`escalations`,`finalReports`,`failures`];Object.freeze({decisions:`all`,actions:`all`,escalations:`all`,finalReports:`all`,failures:`all`});var le=/^[a-z][a-z0-9-]*$/,d=new Map,f=[`CLAUDE_CODE_OAUTH_TOKEN`,`ANTHROPIC_API_KEY`,`ANTHROPIC_AUTH_TOKEN`];function p(e){if(!le.test(e.id))throw Error(`invalid provider id: ${e.id}`);if(!e.label.trim())throw Error(`provider ${e.id} is missing a label`);if(!e.icon.trim())throw Error(`provider ${e.id} is missing an icon`);if(d.has(e.id))throw Error(`provider already registered: ${e.id}`);d.set(e.id,e)}function m(e){return d.get(e)}function h(){return[...d.values()]}function ue(e,t){let n=d.get(e)?.capabilityDefaults.session?.shellMode,r=t===`read-only`?n?.readOnly:n?.[t];return!!(r&&r!==`unsupported`)}function g(e){return[`open`,`guarded`,`read-only`].filter(t=>ue(e,t))}var _=[`low`,`medium`,`high`,`max`],v=[`low`,`medium`,`high`,`xhigh`,`max`],y={value:2e5,source:`catalog`,confidence:`declared`},b={value:1e6,source:`catalog`,confidence:`declared`},de={modalities:{input:{text:!0,image:!0},output:{text:!0}},tools:{code:!0,review:!0,debug:!0,refactor:!0},source:`catalog`,confidence:`declared`},x=[{name:`five_hour`,unit:`%`,reset:!0},{name:`seven_day`,unit:`%`,reset:!0}];function S(e){return{...e?{limits:e}:{},capabilities:de}}var C={id:`claude`,credentialEnvKeys:f,label:`Claude`,icon:`🟠`,launchModes:[`interactive`,`headless`],effortSwitch:!0,launch:{managedPolicyPrompt:{alwaysOn:`append-system-prompt`},taskHydration:{channel:`append-system-prompt`}},catalog:{defaultModel:`sonnet`,models:[{alias:`haiku-5.5`,label:`Haiku 5.5`,providerModel:`claude-haiku-5-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`opus-5.5`,label:`Opus 5.5`,providerModel:`claude-opus-5-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`sonnet-5.5`,label:`Sonnet 5.5`,providerModel:`claude-sonnet-5-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`fable-5.1`,label:`Fable 5.1`,providerModel:`claude-fable-5-1`,efforts:v,defaultEffort:`high`,...S({contextWindowTokens:b})},{alias:`fable-5`,label:`Fable 5`,providerModel:`claude-fable-5`,efforts:v,defaultEffort:`medium`,unavailable:`suspended by export-control directive, 2026-06-12`,...S({contextWindowTokens:b})},{alias:`opus-4.8`,label:`Opus 4.8`,providerModel:`claude-opus-4-8`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:y})},{alias:`opus-4.8[1m]`,label:`Opus 4.8 1M`,providerModel:`claude-opus-4-8[1m]`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`opus-4.7`,label:`Opus 4.7`,providerModel:`claude-opus-4-7`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:y})},{alias:`opus-4.7[1m]`,label:`Opus 4.7 1M`,providerModel:`claude-opus-4-7[1m]`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`opus-4.6`,label:`Opus 4.6`,providerModel:`claude-opus-4-6`,efforts:_,defaultEffort:`medium`,...S({contextWindowTokens:y})},{alias:`opus-4.6[1m]`,label:`Opus 4.6 1M`,providerModel:`claude-opus-4-6[1m]`,efforts:_,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`sonnet-5`,label:`Sonnet 5`,providerModel:`claude-sonnet-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:y})},{alias:`sonnet-5[1m]`,label:`Sonnet 5 1M`,providerModel:`claude-sonnet-5[1m]`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`haiku`,label:`Haiku`,providerModel:`claude-haiku-5-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`fable`,label:`Fable`,providerModel:`claude-fable-5-1`,efforts:v,defaultEffort:`high`,...S({contextWindowTokens:b})},{alias:`opus`,label:`Opus`,providerModel:`claude-opus-5-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`opus[1m]`,label:`Opus 1M`,providerModel:`claude-opus-5-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`sonnet`,label:`Sonnet`,providerModel:`claude-sonnet-5-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})},{alias:`sonnet[1m]`,label:`Sonnet 1M`,providerModel:`claude-sonnet-5-5`,efforts:v,defaultEffort:`medium`,...S({contextWindowTokens:b})}]},quotaWindows:[...x],capabilityDefaults:{lifecycle:{managed:!0,shutdownHard:{when:`headless`,value:!0,otherwise:!1},restartHard:{when:`headless`,value:!0,otherwise:!1},semanticStatus:!0,reconnect:!0},session:{fileRead:!0,fileWrite:{when:`approval:not-read-only`,value:!0,otherwise:!1},shell:!0,shellMode:{open:`unrestricted`,guarded:`guarded`,readOnly:`read-only-guarded`}},context:{managed:`headless`,compact:{when:`headless`,value:!0,otherwise:!1},clear:{when:`headless`,value:!0,otherwise:!1},inject:!0,resumePreference:[`native`,`clear-inject`,`none`]},quota:{supported:!0,source:`probe`,unit:`%`,windows:[...x]},terminal:{mode:`live`,condition:`headless`,live:{read:!0,write:!0}},liveSession:{capture:!0,inject:!0,interrupt:!0,promptEcho:!0,reasoning:!0,slashCommands:!0}},slashCommands:[`/clear`,`/compact`,`/model`,`/help`],resume:{supported:!0,idFormat:`uuid-v4`,idPattern:`[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}`},home:{configDir:`.claude`,envPrefix:`CLAUDE`,configDirEnvVar:`CLAUDE_CONFIG_DIR`,quotaCredentialFile:`.credentials.json`,authItems:[`.credentials.json`,`statsig`],globalInstructionFiles:[`CLAUDE.md`]},provisioning:{pluginManifestPath:`.claude-plugin/plugin.json`,bundledPlugin:{ref:`agent-relay-claude-plugin`,dir:`runner/plugins/claude`,title:`Humwick Claude plugin`,description:`Bundled Humwick Claude plugin, materialized whole through the provisioning registry.`,omitFiles:[`monitors/relay-monitor.provisioned.mjs`,`hooks/gate-run-guard.provisioned.mjs`,`hooks/kill-guard.provisioned.mjs`],fileOverrides:[{path:`monitors/relay-monitor.ts`,sourcePath:`monitors/relay-monitor.provisioned.mjs`},{path:`hooks/gate-run-guard.ts`,sourcePath:`hooks/gate-run-guard.provisioned.mjs`},{path:`hooks/kill-guard.ts`,sourcePath:`hooks/kill-guard.provisioned.mjs`}]},bundledHooks:[{ref:`agent-relay-rg-r-guard`,dir:`runner/hooks/rg-r-guard`,title:`Humwick baseline hook: rg -r guard`,description:"Baseline Humwick PreToolUse hook that blocks the ripgrep `rg -r` replace footgun.",baseline:!0},{ref:`agent-relay-fff-search-redirect`,dir:`runner/hooks/fff-search-redirect`,title:`Humwick fff search redirect`,description:`Redirects standalone repository searches to fff for Claude profiles with a configured fff MCP server.`,omitFiles:[`fff-search-redirect.test.ts`]},{ref:`agent-relay-web-tools-redirect`,dir:`runner/hooks/web-tools-redirect`,title:`Humwick web tools redirect`,description:`Redirects built-in WebSearch/WebFetch to the profile's Relay web_search and local-first page reader tools (#3024).`,omitFiles:[`web-tools-redirect.test.ts`]}]},upgrade:{packages:[`agent-relay-runner`,`agent-relay-plugin`],detectPackages:[`agent-relay-runner`],detectCommands:[`claude`]},harness:{upgrade:{strategy:`self-update`,args:[`update`]}},probe:{command:`claude`,args:[`--version`],healthCheck:`claude --version`,featureChecks:[{name:`rig`,command:`claude-rig`,homeDir:`.claude-rig`}],authCheck:{command:`claude`,args:[`auth`,`status`,`--json`]}},quotaPoll:{strategy:`none`},shim:{kind:`claude-relay`},mcpToolManifest:{clientNativeToolDeferral:!0,runnerManagedToolDeferral:!1}};p(C),p({...C,id:`claude-b`,label:`Claude B`,home:{...C.home,configDir:`.claude-b`,dedicatedHome:!0}}),p({...C,id:`claude-api`,label:`Claude API`,automaticFamilyRouting:!1,defaultEnabled:!1,resume:{supported:!1},credentialEnvKeys:[`ANTHROPIC_API_KEY`],apiAuth:{keyPrefix:`sk-ant-`,keyEnvVar:`ANTHROPIC_API_KEY`,defaultKeyFile:`~/.config/agent-relay/secrets/anthropic-api.key`,unsetEnvKeys:[...f,`ANTHROPIC_BASE_URL`,`CLAUDE_CODE_USE_BEDROCK`,`CLAUDE_CODE_USE_VERTEX`,`CLAUDE_CODE_USE_FOUNDRY`,`ANTHROPIC_CUSTOM_HEADERS`,`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`]},home:{...C.home,configDir:`.claude-api`,sourceEnvVar:`CLAUDE_API_CONFIG_DIR`,dedicatedHome:!0,authItems:[]},launchModes:void 0,quotaWindows:[],capabilityDefaults:{...C.capabilityDefaults,quota:{supported:!1,source:`runtime`,unit:`USD`,windows:[]}}});var w=[`low`,`medium`,`high`,`xhigh`],T={value:2e5,source:`catalog`,confidence:`declared`},E={value:5e5,source:`catalog`,confidence:`declared`},fe={modalities:{input:{text:!0,image:!0},output:{text:!0}},tools:{code:!0,review:!0,debug:!0,refactor:!0},source:`catalog`,confidence:`declared`},D=[{name:`primary`,unit:`%`,reset:!0},{name:`secondary`,unit:`%`,reset:!0}];function O(e){return{...e?{limits:e}:{},capabilities:fe}}p({id:`codex`,credentialEnvKeys:[`OPENAI_API_KEY`],label:`Codex`,icon:`⌨️`,launch:{secretEnvRequiresManagedHome:!0,managedPolicyPrompt:{alwaysOn:`prompt`},taskHydration:{channel:`prompt`}},catalog:{defaultModel:`sol`,models:[{alias:`sol`,label:`GPT-6.1 Sol`,providerModel:`gpt-6.1-sol`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:E})},{alias:`luna`,label:`GPT-6 Luna`,providerModel:`gpt-6-luna`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})},{alias:`gpt-6-sol`,label:`GPT-6 Sol`,providerModel:`gpt-6-sol`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})},{alias:`gpt-6.1-sol`,label:`GPT-6.1 Sol`,providerModel:`gpt-6.1-sol`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:E})},{alias:`gpt-6-luna`,label:`GPT-6 Luna`,providerModel:`gpt-6-luna`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})},{alias:`gpt-5.6-terra`,label:`GPT-5.6 Terra`,providerModel:`gpt-5.6-terra`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})},{alias:`gpt-5.5`,label:`GPT-5.5`,providerModel:`gpt-5.5`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})},{alias:`gpt-5.4`,label:`GPT-5.4`,providerModel:`gpt-5.4`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})},{alias:`gpt-5.4-mini`,label:`GPT-5.4 Mini`,providerModel:`gpt-5.4-mini`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})},{alias:`gpt-5.3-codex`,label:`GPT-5.3 Codex`,providerModel:`gpt-5.3-codex`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})},{alias:`gpt-5.3-codex-spark`,label:`GPT-5.3 Codex Spark`,providerModel:`gpt-5.3-codex-spark`,efforts:w,defaultEffort:`high`,...O({contextWindowTokens:T})},{alias:`gpt-5.2`,label:`GPT-5.2`,providerModel:`gpt-5.2`,efforts:w,defaultEffort:`medium`,...O({contextWindowTokens:T})}]},quotaWindows:[...D],capabilityDefaults:{lifecycle:{managed:!0,shutdownHard:!0,restartHard:!0,semanticStatus:!0,reconnect:!0},session:{fileRead:!0,fileWrite:{when:`approval:not-read-only`,value:!0,otherwise:!1},shell:{when:`approval:not-read-only`,value:!0,otherwise:!1},shellMode:{open:`unrestricted`,guarded:`guarded`,readOnly:`none`}},context:{managed:`always`,compact:!0,clear:!0,inject:!0,resumePreference:[`native`,`clear-inject`,`none`]},quota:{supported:!0,source:`probe`,unit:`%`,windows:[...D]},terminal:{mode:`attach`,attach:{create:!0,read:!0,write:!0,detach:!0}},liveSession:{capture:!0,inject:!0,interrupt:!0,promptEcho:!0,reasoning:!0,slashCommands:!0}},slashCommands:[`/compact`,`/new`],resume:{supported:!0,idFormat:`codex-thread-id`,idPattern:`[\\w-]+`},home:{configDir:`.codex`,envPrefix:`CODEX`,configDirEnvVar:`CODEX_HOME`,quotaCredentialFile:`auth.json`,authItems:[`auth.json`,`installation_id`],globalInstructionFiles:[`AGENTS.md`]},provisioning:{pluginManifestPath:`.codex-plugin/plugin.json`,bundledSkills:{refPrefix:`agent-relay-codex-`,dir:`runner/plugins/codex/skills`,titlePrefix:`Humwick Codex skill: `,description:`Bundled Humwick Codex skill, materialized through the provisioning registry.`,entryFile:`SKILL.md`},bundledHooks:[{ref:`agent-relay-rg-r-guard`,dir:`runner/hooks/rg-r-guard`,title:`Humwick baseline hook: rg -r guard`,description:"Baseline Humwick PreToolUse hook that blocks the ripgrep `rg -r` replace footgun.",baseline:!0}]},upgrade:{packages:[`agent-relay-runner`,`agent-relay-codex`],detectPackages:[`agent-relay-runner`,`agent-relay-codex`],detectCommands:[`codex-relay`,`agent-relay-runner`]},harness:{upgrade:{strategy:`self-update`,args:[`update`]}},probe:{command:`codex`,args:[`--version`],healthCheck:`codex --version`,authCheck:{command:`codex`,args:[`login`,`status`]}},quotaPoll:{strategy:`codex-app-server`},resetCredits:{supported:!0},shim:{kind:`codex-relay`,extraBinPaths:[`codex/bin/codex`],cleanLegacyHooks:!0},mcpToolManifest:{clientNativeToolDeferral:!1,runnerManagedToolDeferral:!0,runnerManagedToolDeferralRoute:`meta-only-callmux`}});var k={mode:`attach`,attach:{create:!0,read:!0,write:!0,detach:!0}},A=`opencode-ai@latest`;p({id:`opencode`,label:`OpenCode`,icon:`⚡`,launch:{managedPolicyPrompt:{alwaysOn:`prompt`},taskHydration:{channel:`prompt`}},catalog:{defaultModel:`muse-spark`,models:[{alias:`muse-spark`,label:`Muse Spark 1.3 Contributor`,providerModel:`meta/muse-spark-1.3-contributor`,efforts:[],limits:{contextWindowTokens:{value:1048576,source:`catalog`,confidence:`declared`},maxOutputTokens:{value:943718,source:`catalog`,confidence:`declared`}},capabilities:{modalities:{input:{text:!0},output:{text:!0}},tools:{code:!0,shell:!0,fileRead:!0,fileWrite:!0},source:`provider`,confidence:`estimated`}},{alias:`openai/gpt-6.1-sol`,label:`GPT-6.1 Sol · OpenAI API`,providerModel:`openai/gpt-6.1-sol`,efforts:[],limits:{contextWindowTokens:{value:272e3,source:`catalog`,confidence:`declared`},maxOutputTokens:{value:128e3,source:`catalog`,confidence:`declared`}}}]},quotaWindows:[],capabilityDefaults:{lifecycle:{managed:!0,shutdownHard:!0,restartHard:!0,semanticStatus:!0,reconnect:!0},session:{fileRead:!0,fileWrite:!0,shell:!0,shellMode:{open:`unrestricted`,guarded:`unsupported`,readOnly:`unsupported`}},context:{managed:`always`,compact:!0,clear:!0,inject:!0,resumePreference:[`native`,`clear-inject`,`none`]},quota:{supported:!1,source:`runtime`,unit:`%`,windows:[]},terminal:k,liveSession:{capture:!0,inject:!0,interrupt:!0,promptEcho:!0,reasoning:!1,slashCommands:!1}},resume:{supported:!1},home:{configDir:`.config/opencode`,envPrefix:`OPENCODE`},opencode:{opencodeProviderID:`openrouter`,apiKeyEnvVar:`OPENROUTER_API_KEY`},upgrade:{packages:[`agent-relay-runner`],externalPackages:[A],detectPackages:[`opencode-ai`],detectCommands:[`opencode`]},harness:{upgrade:{strategy:`external-packages`}},probe:{command:`opencode`,args:[`--version`],healthCheck:`opencode --version`},shim:{kind:`opencode-relay`},quotaPoll:{strategy:`none`},mcpToolManifest:{clientNativeToolDeferral:!1,runnerManagedToolDeferral:!1}});var j=[{name:`rolling`,unit:`%`,reset:!0,description:`Rolling 5-hour usage window`},{name:`weekly`,unit:`%`,reset:!0,description:`Weekly usage window`},{name:`monthly`,unit:`%`,reset:!0,description:`Monthly usage window (display-only)`}],pe={modalities:{input:{text:!0},output:{text:!0}},tools:{code:!0,shell:!0,fileRead:!0,fileWrite:!0},source:`provider`,confidence:`estimated`};function M(e,t){return{alias:e,label:t,providerModel:e,efforts:[],capabilities:pe}}p({id:`opencode-go`,label:`OpenCode Go`,icon:`⚡`,defaultEnabled:!1,launch:{managedPolicyPrompt:{alwaysOn:`prompt`},taskHydration:{channel:`prompt`}},catalog:{defaultModel:`glm-5.3-flash`,models:[M(`claude-haiku-5-5`,`Claude Haiku 5.5`),M(`deepseek-v4-pro`,`DeepSeek V4 Pro`),M(`deepseek-v4.1-flash`,`DeepSeek V4.1 Flash`),M(`gemini-4-argon-contributor`,`Gemini 4 Argon Contributor`),M(`glm-5.2`,`GLM-5.2`),M(`glm-5.3`,`GLM-5.3`),M(`glm-5.3-flash`,`GLM-5.3 Flash`),M(`gpt-5.6-luna`,`GPT-5.6 Luna`),M(`gpt-6-luna`,`GPT-6 Luna`),M(`grok-4.6`,`Grok 4.6`),M(`grok-4.7`,`Grok 4.7`),M(`hy3`,`Hy3`),M(`hy4-preview`,`Hy4 Preview`),M(`kimi-k2.7-code`,`Kimi K2.7 Code`),M(`kimi-k3`,`Kimi K3`),M(`longcat-2.0`,`LongCat 2.0`),M(`mimo-v2.5`,`MiMo V2.5`),M(`mimo-v2.5-pro`,`MiMo V2.5 Pro`),M(`mimo-v2.6-flash`,`MiMo V2.6 Flash`),M(`mimo-v2.6-pro`,`MiMo V2.6 Pro`),M(`minimax-m2.7`,`MiniMax M2.7`),M(`minimax-m3`,`MiniMax M3`),M(`muse-spark-1.2-contributor`,`Muse Spark 1.2 Contributor`),M(`muse-spark-1.3-contributor`,`Muse Spark 1.3 Contributor`),M(`qwen3.7-plus`,`Qwen3.7 Plus`),M(`qwen3.8-flash`,`Qwen3.8 Flash`),M(`qwen3.8-max`,`Qwen3.8 Max`),M(`space-bunny`,`Space Bunny`)]},quotaWindows:[...j],capabilityDefaults:{lifecycle:{managed:!0,shutdownHard:!0,restartHard:!0,semanticStatus:!0,reconnect:!0},session:{fileRead:!0,fileWrite:!0,shell:!0,shellMode:{open:`unrestricted`,guarded:`unsupported`,readOnly:`unsupported`}},context:{managed:`always`,compact:!0,clear:!0,inject:!0,resumePreference:[`native`,`clear-inject`,`none`]},quota:{supported:!0,source:`runtime`,unit:`%`,windows:[...j]},terminal:k,liveSession:{capture:!0,inject:!0,interrupt:!0,promptEcho:!0,reasoning:!1,slashCommands:!1}},resume:{supported:!1},home:{configDir:`.local/share/opencode`,envPrefix:`OPENCODE_GO`,quotaCredentialFile:`auth.json`},opencode:{opencodeProviderID:`opencode-go`,apiKeyEnvVar:`OPENCODE_API_KEY`,hostAuth:!0},upgrade:{packages:[`agent-relay-runner`],externalPackages:[A],detectPackages:[`opencode-ai`],detectCommands:[`opencode`]},harness:{upgrade:{strategy:`external-packages`}},probe:{command:`opencode`,args:[`--version`],healthCheck:`opencode --version`},shim:{kind:`opencode-relay`},quotaPoll:{strategy:`opencode-go`},quotaAlsoWith:`opencode`,mcpToolManifest:{clientNativeToolDeferral:!1,runnerManagedToolDeferral:!1}});var N={value:1e6,source:`catalog`,confidence:`declared`},P={value:131072,source:`catalog`,confidence:`declared`},me={modalities:{input:{text:!0},output:{text:!0}},tools:{code:!0,shell:!0,fileRead:!0,fileWrite:!0},source:`provider`,confidence:`declared`},he={modalities:{input:{text:!0,image:!0},output:{text:!0}},tools:{code:!0,shell:!0,fileRead:!0,fileWrite:!0},source:`provider`,confidence:`declared`},F=[{name:`five_hour`,unit:`%`,reset:!0,description:`Rolling 5-hour credit window`},{name:`seven_day`,unit:`%`,reset:!0,description:`Weekly credits, reset from the subscription timestamp`}];p({id:`zai`,label:`z.ai`,icon:`🟣`,launch:{managedPolicyPrompt:{alwaysOn:`prompt`},taskHydration:{channel:`prompt`}},catalog:{defaultModel:`glm-5.3-flash`,models:[{alias:`glm-5.3`,label:`GLM-5.3`,providerModel:`glm-5.3`,efforts:[],limits:{contextWindowTokens:N,maxOutputTokens:P},capabilities:me},{alias:`glm-5.3-flash`,label:`GLM-5.3 Flash`,providerModel:`glm-5.3-flash`,efforts:[],limits:{contextWindowTokens:N,maxOutputTokens:P},capabilities:he}]},quotaWindows:[...F],capabilityDefaults:{lifecycle:{managed:!0,shutdownHard:!0,restartHard:!0,semanticStatus:!0,reconnect:!0},session:{fileRead:!0,fileWrite:!0,shell:!0,shellMode:{open:`unrestricted`,guarded:`unsupported`,readOnly:`unsupported`}},context:{managed:`always`,compact:!0,clear:!0,inject:!0,resumePreference:[`native`,`clear-inject`,`none`]},quota:{supported:!0,source:`runtime`,unit:`%`,windows:[...F]},terminal:k,liveSession:{capture:!0,inject:!0,interrupt:!0,promptEcho:!0,reasoning:!1,slashCommands:!1}},resume:{supported:!1},home:{configDir:`.config/opencode`,envPrefix:`ZAI`,quotaCredentialFile:`auth.json`},opencode:{opencodeProviderID:`zai`,baseURL:`https://api.z.ai/api/coding/paas/v4`,npm:`@ai-sdk/openai-compatible`,apiKeyEnvVar:`ZAI_API_KEY`},upgrade:{packages:[`agent-relay-runner`],externalPackages:[A],detectPackages:[`opencode-ai`],detectCommands:[`opencode`]},harness:{upgrade:{strategy:`external-packages`}},probe:{command:`opencode`,args:[`--version`],healthCheck:`opencode --version`},shim:{kind:`opencode-relay`},quotaPoll:{strategy:`zai`},mcpToolManifest:{clientNativeToolDeferral:!1,runnerManagedToolDeferral:!1}}),Object.freeze({codex:{"gpt-5.6-terra":`sol`,"gpt-5.6-sol":`sol`,"gpt-6-sol":`sol`,"gpt-6.1-sol":`sol`,"gpt-5.6-luna":`luna`,"gpt-6-luna":`luna`},claude:{"opus-4.8":`opus`,"sonnet-5":`sonnet`,"fable-5":`fable`},"claude-b":{"opus-4.8":`opus`,"sonnet-5":`sonnet`,"fable-5":`fable`}});var I={opencode:{envVar:`OPENCODE_API_KEY`},"opencode-go":{envVar:`OPENCODE_API_KEY`},anthropic:{envVar:`ANTHROPIC_API_KEY`},openai:{envVar:`OPENAI_API_KEY`},openrouter:{envVar:`OPENROUTER_API_KEY`},google:{envVar:`GOOGLE_GENERATIVE_AI_API_KEY`},mistral:{envVar:`MISTRAL_API_KEY`},deepseek:{envVar:`DEEPSEEK_API_KEY`},xai:{envVar:`XAI_API_KEY`},groq:{envVar:`GROQ_API_KEY`},azure:{envVar:`AZURE_API_KEY`},moonshotai:{envVar:`MOONSHOT_API_KEY`},cerebras:{envVar:`CEREBRAS_API_KEY`},cohere:{envVar:`COHERE_API_KEY`},"fireworks-ai":{envVar:`FIREWORKS_API_KEY`},togetherai:{envVar:`TOGETHER_API_KEY`},chutes:{envVar:`CHUTES_API_KEY`},zai:{envVar:`ZAI_API_KEY`,custom:!0}},L=class extends Error{candidates;constructor(e,t){super(e),this.candidates=t,this.name=`OpenCodeModelResolutionError`}},R=8;function z(e,t){let n=e.indexOf(`/`);return n<=0?{backendID:t,modelID:e,qualified:`${t}/${e}`}:{backendID:e.slice(0,n),modelID:e.slice(n+1),qualified:e}}function ge(e,t,n){let r=e.trim();if(!r)throw new L(`OpenCode model id is empty.`,[]);let i=r.indexOf(`/`),a=i>0?r.slice(0,i):void 0;if(!n)return a&&(a===t||I[a]!==void 0)?z(r,t):{backendID:t,modelID:r,qualified:`${t}/${r}`};if(n.models.has(r))return z(r,t);if(n.models.has(`${t}/${r}`))return{backendID:t,modelID:r,qualified:`${t}/${r}`};if(a&&n.providers.has(a))return z(r,t);if(!a){let e=[...n.models].filter(e=>e.slice(e.indexOf(`/`)+1)===r);if(e.length===1)return z(e[0],t);if(e.length>1){let t=e.sort().slice(0,R);throw new L(`OpenCode model "${r}" is ambiguous on this host (${n.source} registry); qualify it as one of: ${t.join(`, `)}.`,t)}}let o=_e(r,n),s=o.length?` Did you mean: ${o.join(`, `)}?`:``;throw new L(`OpenCode model "${r}" is not available on this host (${n.source} registry: backend "${a??t}" is not a known opencode provider and no listed model matches).${s}`,o)}function _e(e,t){let n=e.slice(e.lastIndexOf(`/`)+1).toLowerCase();if(!n)return[];let r=[],i=[];for(let e of t.models){let t=e.slice(e.lastIndexOf(`/`)+1).toLowerCase();t===n?r.push(e):t.includes(n)&&i.push(e)}return[...r.sort(),...i.sort()].slice(0,R)}var ve=[`off`,`quiet`,`normal`,`verbose`];h().map(e=>e.id);var B=[`narration`,`tools`,`reasoning`,`memories`,`startup`,`injected`,`agentMessages`,`workflow`,`land`,`task`,`agents`,`other`,`undelivered`],ye=[`workflow`,`land`,`task`,`agents`,`other`];function V(e){return Object.fromEntries(B.map(t=>[t,e(t)]))}var H=V(e=>ye.includes(e)),U={calm:H,everything:V(()=>!0)};function be(e){let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return V(e=>typeof t[e]==`boolean`?t[e]:H[e])}function W(e){for(let[t,n]of Object.entries(U))if(B.every(t=>n[t]===e[t]))return t;return null}function xe(e,t){let n=e?.opencodeProviderID,r=t?.trim();if(!(!n||!r))return ge(r,n).qualified}function Se(e){return!e?.disabled}var Ce=.1,we=.9,G=.8,K=.4,q=256e3,J=1e6;function Te(e){return{provider:e.id,label:e.label,defaultModel:e.catalog.defaultModel,models:e.catalog.models,...e.opencode?.opencodeProviderID?{opencodeProviderID:e.opencode.opencodeProviderID}:{},...e.launchModes?.length?{launchModes:[...e.launchModes]}:{},...e.effortSwitch?{effortSwitch:!0}:{}}}var Ee=Object.fromEntries(h().map(e=>[e.id,Te(e)]));function De(e){let t=Oe(e);return{selfCompactUtilization:t,warnUtilization:ke(t),hardBackstopUtilization:Math.max(we,t)}}function Oe(e){return!Number.isFinite(e)||!e||e<=q?G:e>=J?K:Y(G-(e-q)/(J-q)*(G-K))}function ke(e){return Y(Math.max(0,e-Ce))}function Y(e){return Math.round(e*1e3)/1e3}function X(e,t){if(e)return t?.find(t=>t.provider===e)??Ee[e]}function Ae(e,t,n={}){let r=(Array.isArray(t)?t:t?[t]:[]).map(e=>e.trim()).filter(Boolean);if(r.length){for(let t of r){let i=je(e,t,n.requireUnambiguous),a=Me(e,i,r,n.observedWindowTokens);if(a)return a;if(i)return i}if(!(n.requireUnambiguous||n.exactOnly))for(let t of r){let n=e.models.find(e=>e.alias.startsWith(t+`-`));if(n)return n}}}function je(e,t,n=!1){let r=t.toLowerCase(),i=e.models.find(e=>e.alias===t)??e.models.find(e=>e.alias.toLowerCase()===r);if(i)return i;let a=e.models.filter(e=>e.providerModel.toLowerCase()===r);if(a.length>1&&n)throw Error(`ambiguous ${e.provider} provider model: ${t} (select an alias: ${a.map(e=>e.alias).join(`, `)})`);return a[0]}function Me(e,t,n,r){if(!Number.isFinite(r)||!r)return;if(t?.limits?.contextWindowTokens?.value===r)return t;let i=new Set([...t?[t.alias,t.providerModel]:[],...n].map(Z));return e.models.find(e=>e.limits?.contextWindowTokens?.value===r&&(i.has(Z(e.alias))||i.has(Z(e.providerModel))))}function Z(e){return e.trim().toLowerCase().replace(/\[[^\]]+\]$/,``)}function Ne(e){return!e.disabled&&!e.unavailable}function Pe(e){let t=e.defaultModel,n=t?e.models.find(e=>e.alias===t):void 0;return n&&Ne(n)?{alias:n.alias,preferred:t,fellBack:!1}:{alias:void 0,preferred:t,fellBack:!0}}function Fe(e){return m(e)?.resetCredits?.supported===!0}var Q=[`bg-tone-warning/10 text-tone-warning-fg border-tone-warning/30`,`bg-tone-sky/10 text-tone-sky-fg border-tone-sky/30`,`bg-tone-violet/10 text-tone-violet-fg border-tone-violet/30`,`bg-tone-success/10 text-tone-success-fg border-tone-success/30`,`bg-tone-rose/10 text-tone-rose-fg border-tone-rose/30`];function Ie(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return t}var $=new Map(h().map((e,t)=>[e.id,Q[t%Q.length]]));function Le(e){return e?m(e)?.label??e.charAt(0).toUpperCase()+e.slice(1):`Unknown provider`}function Re(e){let t=$.get(e);if(t)return t;let n=Q[Ie(e)%Q.length];return $.set(e,n),n}function ze(){return h().map(e=>e.id)}function Be(e){return m(e)}function Ve(e,t){let n=e?.id||e?.alias;if(!e||!n)return;let r=X(e.provider,t),i=r?Ae(r,[e.alias||``,n]):void 0;return{label:i?.label||n,...i?{entry:i}:{}}}export{o as A,oe as C,ne as D,a as E,n as M,e as N,ee as O,t as P,c as S,i as T,g as _,Fe as a,se as b,X as c,Pe as d,H as f,ve as g,be as h,Be as i,r as j,te as k,Se as l,W as m,Re as n,Ve as o,U as p,Le as r,De as s,ze as t,xe as u,ce as v,s as w,ie as x,u as y};
|
|
2
|
-
//# sourceMappingURL=provider-display-DbLWpP3j.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{t as i}from"./store-BvtFdlGX.js";import{h as a}from"./display-CfO7rTuF.js";import{t as o}from"./api-CIIVBtAV.js";import{t as s}from"./agent-liveness-DyqxfB-t.js";import{t as c}from"./check-B3M9Ug1P.js";import{n as l,t as u}from"./octagon-x-B5lnUY-8.js";import{t as d}from"./inbox-Dfwk3Gt8.js";import{t as f}from"./rotate-ccw-CtD77qkX.js";import{n as p}from"./workflow-marker-Cf3Hf2fN.js";import{t as m}from"./button-Do6Z3vvn.js";import{t as h}from"./input-CsTB6jIx.js";import{t as g}from"./crate-agent-H6S7-B9T.js";var _=e(n(),1),v=r();function y({runId:e}){let[t,n]=(0,_.useState)(),[r,i]=(0,_.useState)();async function a(e,t){try{let r=new URLSearchParams({verbose:`true`,...t}),a=await o(`GET`,`/workflows/runs/${encodeURIComponent(e)}?${r}`);n(e=>t&&e&&e.runId===a.runId?{...a,activations:t.activationCursor?[...e.activations??[],...a.activations??[]]:a.activations,children:t.childCursor?[...e.children??[],...a.children??[]]:a.children,itemResults:t.resultsCursor?[...e.itemResults??[],...a.itemResults??[]]:a.itemResults}:a),i(void 0)}catch(e){i(e.message)}}async function s(e,n){try{await o(`POST`,`/workflows/runs/${encodeURIComponent(t.runId)}/${e}`,{...n?{activationId:n}:{}}),await a(t.runId)}catch(e){i(e.message)}}return(0,v.jsxs)(`details`,{className:`text-xs`,onToggle:n=>{n.currentTarget.open&&!t&&a(e)},children:[(0,v.jsx)(`summary`,{className:`cursor-pointer`,children:`Workflow inputs, children and results`}),r&&(0,v.jsx)(`p`,{role:`alert`,children:r}),t&&(0,v.jsxs)(`div`,{className:`mt-2 space-y-2`,children:[(0,v.jsxs)(`p`,{children:[t.runId,`: `,t.status]}),(0,v.jsx)(`button`,{type:`button`,className:`underline`,onClick:()=>void a(t.runId),children:`Refresh run`}),[`running`,`escalated`].includes(t.status)&&(0,v.jsx)(`button`,{type:`button`,className:`ml-2 underline`,onClick:()=>void s(`cancel`),children:`Cancel run`}),t.cleanup&&(0,v.jsxs)(`p`,{children:[`Cleanup: `,t.cleanup.status,t.cleanup.error?` — ${t.cleanup.error}`:``]}),t.parentRunId&&(0,v.jsxs)(`button`,{type:`button`,className:`underline`,onClick:()=>void a(t.parentRunId),children:[`Parent `,t.parentRunId]}),t.rootRunId&&t.rootRunId!==t.runId&&(0,v.jsxs)(`button`,{type:`button`,className:`ml-2 underline`,onClick:()=>void a(t.rootRunId),children:[`Root `,t.rootRunId]}),(0,v.jsx)(`ul`,{"aria-label":`Child workflows`,children:t.children?.map(e=>(0,v.jsxs)(`li`,{children:[(0,v.jsxs)(`button`,{type:`button`,className:`underline`,onClick:()=>void a(e.runId),children:[e.workflow,`: `,e.runId]}),` — `,e.status,e.reason&&(0,v.jsx)(`p`,{children:e.reason})]},e.runId))}),t.childrenCursor&&(0,v.jsx)(`button`,{type:`button`,className:`underline`,onClick:()=>void a(t.runId,{childCursor:t.childrenCursor}),children:`More children`}),(0,v.jsx)(`ul`,{"aria-label":`Workflow activations`,children:t.activations?.map(e=>(0,v.jsxs)(`li`,{children:[e.path,`: `,e.state,e.needs?.length?(0,v.jsxs)(`span`,{children:[` · needs `,e.needs.join(`, `),` (`,e.remaining??0,` remaining)`]}):null,e.outcome?` (${e.outcome})`:``,e.container&&(0,v.jsxs)(`p`,{children:[e.container.settled,`/`,e.container.total,` settled · `,e.container.live,` active · `,e.container.failed,` failed`,e.container.winner?` · winner ${e.container.winner}`:``,e.container.stopped?` · admissions stopped`:``,` `,(0,v.jsx)(`button`,{type:`button`,className:`underline`,onClick:()=>void a(t.runId,{resultsRef:e.id}),children:`Item results`})]}),e.childRunId&&(0,v.jsxs)(`button`,{type:`button`,className:`ml-2 underline`,onClick:()=>void a(e.childRunId),children:[`Child `,e.childRunId]}),e.parentId&&e.state===`failed`&&t.status===`escalated`&&(0,v.jsxs)(`button`,{type:`button`,className:`ml-2 underline`,onClick:()=>void s(`resume`,e.id),children:[`Retry item `,e.key??e.index]}),e.error&&(0,v.jsx)(`pre`,{className:`max-h-32 overflow-auto whitespace-pre-wrap`,children:JSON.stringify(e.error,null,2)})]},e.id))}),t.activationsCursor&&(0,v.jsx)(`button`,{type:`button`,className:`underline`,onClick:()=>void a(t.runId,{activationCursor:t.activationsCursor}),children:`More activations`}),t.itemResults&&(0,v.jsx)(`ol`,{"aria-label":`Item results`,children:t.itemResults.map(e=>(0,v.jsxs)(`li`,{children:[e.key,`: `,e.status,(0,v.jsx)(`pre`,{className:`max-h-32 overflow-auto whitespace-pre-wrap`,children:JSON.stringify(e.outputs??e.error??{},null,2)})]},e.key))}),t.itemResultsCursor&&(0,v.jsx)(`button`,{type:`button`,className:`underline`,onClick:()=>void a(t.runId,{resultsRef:t.resultsRef,resultsCursor:t.itemResultsCursor}),children:`More item results`}),(0,v.jsx)(`pre`,{className:`max-h-48 overflow-auto whitespace-pre-wrap`,children:JSON.stringify({inputs:t.inputs,outputs:t.outputs??t.output},null,2)})]})]})}var b=e=>e.kind===`agent`?`/agents/${encodeURIComponent(e.agentId)}/spawn-budget`:`/workflows/runs/${encodeURIComponent(e.runId)}/budget`;function x(e,t){return e.kind===`agent`?t.budgets.find(t=>t.subtreeAgentId===e.agentId):t}function S(e){return[e.unknownReports?`${e.unknownReports} report${e.unknownReports===1?``:`s`} without counts`:``,e.unreportedReports?`${e.unreportedReports} not yet stored`:``,e.busyAgents?`${e.busyAgents} agent${e.busyAgents===1?``:`s`} mid-turn`:``].filter(Boolean).join(`, `)}function C({target:e}){return(0,v.jsx)(w,{target:e},b(e))}function w({target:e}){let[t,n]=(0,_.useState)(),[r,i]=(0,_.useState)(),[a,s]=(0,_.useState)(``),c=b(e);if((0,_.useEffect)(()=>{let t=!0,r=()=>o(`GET`,c).then(r=>{t&&n(x(e,r))},()=>{t&&n(void 0)});r().catch(()=>{});let i=setInterval(r,3e4);return()=>{t=!1,clearInterval(i)}},[c]),!t)return null;let l=async a=>{a.preventDefault();let l=Number(r);if(!Number.isSafeInteger(l)||l<=0){s(`Enter a whole number of tokens above 0`);return}try{let r=await o(`PATCH`,c,{tokenCap:l});n(x(e,r)??t),i(void 0),s(``)}catch(e){s(e instanceof Error?e.message:`Could not save the budget`)}},u=S(t),d=Math.min(100,Math.round(t.tokens/t.tokenCap*100));return(0,v.jsxs)(`section`,{"aria-label":`Token budget`,"data-testid":`delegated-budget`,"data-exhausted":t.exhausted,className:`space-y-2 rounded-md border p-3 text-xs`,children:[(0,v.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,v.jsx)(`h3`,{className:`font-medium`,children:`Token budget`}),t.exhausted&&(0,v.jsx)(`span`,{"data-testid":`budget-exhausted`,className:`rounded border border-tone-danger/30 bg-tone-danger/10 px-1.5 py-0.5 font-medium text-tone-danger-fg`,children:`Exhausted: new spawns refused`}),t.partlyUnknown&&(0,v.jsx)(`span`,{"data-testid":`budget-unknown`,title:u,className:`rounded border border-tone-warning/30 bg-tone-warning/10 px-1.5 py-0.5 text-tone-warning-fg`,children:`Partly unknown`})]}),(0,v.jsxs)(`p`,{"data-testid":`budget-spend`,className:`tabular-nums`,children:[t.partlyUnknown?`At least `:``,t.tokens.toLocaleString(),` of `,t.tokenCap.toLocaleString(),` tokens observed`]}),(0,v.jsx)(`div`,{role:`progressbar`,"aria-valuemin":0,"aria-valuemax":t.tokenCap,"aria-valuenow":Math.min(t.tokens,t.tokenCap),className:`h-1.5 overflow-hidden rounded bg-muted`,children:(0,v.jsx)(`div`,{className:`h-full ${t.exhausted?`bg-tone-danger`:`bg-tone-info`}`,style:{width:`${d}%`}})}),u&&(0,v.jsxs)(`p`,{className:`text-muted-foreground`,children:[`True spend is higher than shown: `,u,`.`]}),r===void 0?(0,v.jsx)(m,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>i(String(t.tokenCap)),children:`Edit cap`}):(0,v.jsxs)(`form`,{onSubmit:l,className:`flex flex-wrap items-center gap-2`,children:[(0,v.jsx)(`label`,{className:`sr-only`,htmlFor:`budget-cap-${c}`,children:`Token cap`}),(0,v.jsx)(h,{id:`budget-cap-${c}`,inputMode:`numeric`,className:`h-8 w-36`,value:r,onChange:e=>i(e.target.value)}),(0,v.jsx)(m,{type:`submit`,size:`sm`,children:`Save`}),(0,v.jsx)(m,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>{i(void 0),s(``)},children:`Cancel`})]}),a&&(0,v.jsx)(`p`,{role:`alert`,className:`text-tone-danger-fg`,children:a}),(0,v.jsx)(`p`,{className:`text-muted-foreground`,children:`Soft cap: running work finishes; raising it lets new spawns through.`})]})}function T({text:e,className:n}){return(0,v.jsx)(`span`,{className:t(`block min-w-0 max-w-full truncate`,n),title:e,children:e})}var E=`land`,D=`ci-main`,O={pass:`CI pass`,fail:`CI red`,none:`no CI`};function k(e){let t=e.rounds.find(t=>t.round===e.round)?.steps??[],n=new Map(t.map(e=>[e.step,e.outcome])),r=e.stations?e.stations.map(t=>e.steps.find(e=>e.name===t)??{name:t}):[...e.steps,{name:E},...e.ciMain?[{name:D}]:[]],i=!!e.landedSha||e.status===`done`||e.step===`ci-main`;return r.map(t=>{let r=t.name===`ci-main`&&e.output?.ci?O[e.output.ci.status]:void 0,a=t.name===`land`&&i?`landed`:r??n.get(t.name),o={...t,state:`waiting`,...a?{outcome:a}:{}};return e.status===`running`?o.state=t.name===e.step?`current`:a?`done`:`waiting`:e.status===`done`?o.state=`done`:o.state=t.name===e.step?`stopped`:a?`done`:`waiting`,o})}function A(e){if(e.status!==`running`||!e.awaiting)return;let{kind:t,taskId:n,timedOutAt:r}=e.awaiting,i=t===`landed`?`Waiting for the land`:t===`ci`?`Waiting for CI on main${e.awaiting.sha?` at ${e.awaiting.sha.slice(0,7)}`:``}`:t===`decision`?`Waiting for the operator decision`:t===`script`?`Waiting for the script`:t===`closed`?`Closing the Task and delivering issues`:`Waiting for a delivery${n?` on T${n}`:``}`;return r?`${i}, past its time limit`:i}function j(e){return e.reapedAt?`reaped`:e.exitedAt?`exited`:e.keptAt?`kept`:e.readyAt?`ready`:`starting`}function M(e){let t=e.crossProvider?.fallback?e.crossProvider:void 0;return e.provider?t?{label:`${e.provider}, same as ${t.step}`,title:`Prefers a provider other than ${t.step}'s ${t.avoided}${t.reason?`: ${t.reason}`:``}`}:{label:e.provider}:{}}var N=[`provider`,`model`,`effort`,`orchestratorId`],P={start:`start call`,resume:`resume`,team:`team default`,global:`global default`,workflow:`workflow file`};function F(e){let t=N.filter(t=>e?.[t]);if(!(!e||!t.length))return{label:`Pinned: ${t.map(t=>t===`orchestratorId`?`on ${e[t]}`:e[t]).join(` `)}`,title:t.map(t=>`${t===`orchestratorId`?`host`:t} ${e[t]} (${P[e.from[t]??`workflow`]})`).join(`, `)}}function I(e){if(e.status===`done`){if(e.step===`close`)return`Verified and closed`;if(e.scriptRuns?.length&&!e.output?.landedSha)return`Done`;let t=e.output?.ci?`, ${O[e.output.ci.status]}`:``;return e.output?.nothingToLand&&e.output.landedSha?`Nothing to land, on main at ${e.output.landedSha.slice(0,7)}`:e.output?.landedSha?`Landed ${e.output.landedSha.slice(0,7)}${t}`:`Done`}return e.status===`escalated`?`Escalated`:e.status===`cancelled`?`Cancelled`:e.status===`failed`?`Failed`:`Running`}var L={done:`done`,current:`current step`,waiting:`not reached`,stopped:`stopped here`};function R({taskId:e,title:t}){let n=i(e=>e.openTaskDetailById);return(0,v.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:`flex min-w-0 max-w-full items-baseline gap-1.5 rounded text-left hover:underline focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,children:[(0,v.jsxs)(`span`,{className:`shrink-0 rounded bg-muted px-1 font-mono text-[11px] tabular-nums text-muted-foreground`,children:[`T`,e]}),t&&(0,v.jsx)(T,{text:t,className:`font-medium`})]})}function z({node:e,run:t}){let n=e.state===`current`?A(t):void 0,r=F(e.pin);return(0,v.jsxs)(`li`,{"data-testid":`workflow-node-${e.name}`,"data-state":e.state,className:`wf-station flex min-w-0 items-start gap-2 sm:flex-col sm:items-center sm:text-center`,children:[(0,v.jsxs)(`span`,{className:`wf-stop grid h-8 w-8 shrink-0 place-items-center rounded-full`,"aria-label":`${e.name}: ${L[e.state]}`,role:`img`,children:[e.state===`done`&&(0,v.jsx)(c,{className:`h-4 w-4`,"aria-hidden":!0}),e.state===`stopped`&&(0,v.jsx)(u,{className:`h-4 w-4`,"aria-hidden":!0}),e.state===`waiting`&&(0,v.jsx)(l,{className:`h-4 w-4`,"aria-hidden":!0}),e.state===`current`&&(0,v.jsx)(`span`,{className:`h-2.5 w-2.5 rounded-full bg-current`,"aria-hidden":!0})]}),(0,v.jsxs)(`div`,{className:`min-w-0`,children:[(0,v.jsx)(T,{text:e.name,className:`text-sm font-semibold`}),e.role&&(0,v.jsx)(T,{text:`${e.role}${e.gate?`, gate ${e.gate}`:``}`,className:`text-xs text-muted-foreground`}),r&&(0,v.jsx)(`div`,{"data-testid":`workflow-node-pin`,className:`truncate text-xs text-muted-foreground`,title:r.title,children:r.label}),e.outcome&&(0,v.jsx)(`div`,{className:`wf-outcome truncate text-xs font-medium`,"data-outcome":e.outcome,children:e.outcome}),n&&(0,v.jsx)(`div`,{className:`truncate text-xs font-medium text-foreground`,children:n})]})]})}function B({run:e}){return(0,v.jsx)(`ol`,{"aria-label":`Steps`,className:`wf-line grid gap-3 sm:auto-cols-fr sm:grid-flow-col`,children:k(e).map(t=>(0,v.jsx)(z,{node:t,run:e},t.name))})}function V({run:e,agentsById:t,now:n}){return e.agents.length?(0,v.jsx)(`ul`,{"aria-label":`Step agents`,className:`flex flex-wrap gap-x-4 gap-y-1.5`,children:e.agents.map(r=>{let i=r.agentId?t[r.agentId]:void 0,a=M(r);return(0,v.jsxs)(`li`,{"data-testid":`workflow-agent`,className:`flex min-w-0 items-center gap-1.5 text-xs`,children:[(0,v.jsx)(p,{workflow:e.workflow,step:r.step}),r.agentId?(0,v.jsx)(g,{holder:{id:r.agentId,...i?{agent:i}:{},live:s(n,i)},workflowMarker:!1}):(0,v.jsx)(`span`,{className:`text-muted-foreground`,children:`spawning`}),(0,v.jsxs)(`span`,{className:`text-muted-foreground`,title:r.keptReason,children:[r.step,`, round `,r.round,`, `,j(r)]}),r.routingSources&&(0,v.jsxs)(`span`,{className:`text-muted-foreground`,title:Object.entries(r.routingSources).map(([e,t])=>`${e}: ${t}`).join(`, `),children:[`via `,r.routingSources.provider]}),a.label&&(0,v.jsx)(`span`,{"data-testid":`workflow-agent-provider`,className:`shrink-0 text-muted-foreground`,title:a.title,children:a.label})]},r.spawnRequestId)})}):(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No step agent yet.`})}function H({run:e,agentsById:t,now:n,project:r}){return(0,v.jsxs)(`article`,{"data-testid":`workflow-run-${e.runId}`,"aria-label":`${e.workflow} on T${e.taskId}`,className:`wf-run space-y-3 rounded-lg p-3`,children:[(0,v.jsxs)(`header`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,v.jsxs)(`h3`,{className:`flex min-w-0 max-w-full items-center gap-1.5 text-sm font-semibold`,children:[(0,v.jsx)(p,{workflow:e.workflow,className:`h-3.5 w-3.5 shrink-0`}),(0,v.jsx)(T,{text:e.workflow})]}),(0,v.jsx)(`div`,{className:`min-w-0 flex-1 text-sm`,children:(0,v.jsx)(R,{taskId:e.taskId,title:e.taskTitle})}),(0,v.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 text-xs text-muted-foreground`,children:[(0,v.jsxs)(`span`,{"data-testid":`workflow-round`,className:`flex items-center gap-1`,title:`A loop back to an earlier step starts a new round`,children:[(0,v.jsx)(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),`Round `,e.round]}),(0,v.jsxs)(`span`,{"data-testid":`workflow-held`,className:`flex items-center gap-1`,title:`Messages the run kept instead of waking the coordinator`,children:[(0,v.jsx)(d,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),e.heldCount,` held`]}),(0,v.jsxs)(`span`,{title:`Started ${new Date(e.createdAt).toLocaleString()}`,children:[`Started `,a(n,e.createdAt),` ago`]}),r&&(0,v.jsx)(T,{text:r})]})]}),e.callerAgentId&&(0,v.jsxs)(`p`,{"data-testid":`workflow-caller`,className:`text-xs text-muted-foreground`,children:[`Caller: `,e.callerAgentId,` · up to `,e.maxLiveAgents??2,` live agents`]}),e.budget&&(0,v.jsx)(C,{target:{kind:`run`,runId:e.runId}}),(0,v.jsx)(B,{run:e}),e.rootRunId&&(0,v.jsx)(y,{runId:e.runId}),e.overdueAt!==void 0&&(0,v.jsx)(`p`,{"data-testid":`workflow-backstop`,className:`text-xs text-muted-foreground`,title:`Backstop ${new Date(e.overdueAt).toLocaleString()}`,children:e.overdueNotifiedAt===void 0?`Backstop ${new Date(e.overdueAt).toLocaleString()}`:`Overdue: coordinator notified`}),(0,v.jsx)(V,{run:e,agentsById:t,now:n})]})}function U({runs:e,now:t,projectTitles:n}){return e.length?(0,v.jsx)(`ul`,{"aria-label":`Finished runs`,className:`divide-y divide-border rounded-lg border border-border bg-card`,children:e.map(e=>(0,v.jsxs)(`li`,{"data-testid":`workflow-recent-${e.runId}`,"data-status":e.status,className:`wf-ledger flex flex-wrap items-center gap-x-3 gap-y-1 px-3 py-2 text-sm`,children:[(0,v.jsx)(`span`,{className:`ship-lamp h-2 w-2 shrink-0 rounded-full`,"data-status":e.status===`done`?`success`:e.status===`escalated`?`failing`:`unknown`,"aria-hidden":!0}),(0,v.jsx)(T,{text:e.workflow,className:`font-medium sm:w-28 sm:shrink-0`}),(0,v.jsx)(`div`,{className:`order-last w-full min-w-0 pl-5 sm:order-none sm:w-auto sm:flex-1 sm:pl-0`,children:(0,v.jsx)(R,{taskId:e.taskId,title:e.taskTitle})}),(0,v.jsx)(`span`,{className:`ml-auto shrink-0 font-medium sm:ml-0`,title:e.output?.landedSha,children:I(e)}),(0,v.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:e.round===1?`1 round`:`${e.round} rounds`}),(0,v.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,title:new Date(e.updatedAt).toLocaleString(),children:[a(t,e.updatedAt),` ago`]}),e.projectId&&n.get(e.projectId)&&(0,v.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:n.get(e.projectId)}),e.budget&&(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(C,{target:{kind:`run`,runId:e.runId}})}),e.rootRunId&&(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(y,{runId:e.runId})}),e.reason&&(0,v.jsx)(T,{text:e.reason,className:`order-last w-full pl-5 text-xs text-muted-foreground`})]},e.runId))}):(0,v.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-4 text-center text-sm text-muted-foreground`,children:`No finished runs yet.`})}export{T as a,D as i,H as n,R as r,U as t};
|
|
2
|
-
//# sourceMappingURL=run-card-CO_bguQf.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{r as i,t as a}from"./store-BvtFdlGX.js";import{M as o}from"./provider-display-DbLWpP3j.js";import{et as s,v as c}from"./display-CfO7rTuF.js";import{t as l}from"./api-CIIVBtAV.js";import{a as u,i as d,n as f,r as p,t as m}from"./select-DTQMP4Dk.js";import{t as h}from"./folder-tree-BG3Y9nqH.js";import{t as g}from"./globe-Cl5fXtqs.js";import{t as _}from"./layers-DEfClY-v.js";import{t as v}from"./pencil-B1Hf2V_J.js";import{n as y,t as b}from"./pin-DcsKeXxr.js";import{t as x}from"./refresh-cw-CfpvQcUn.js";import{t as S}from"./trash-2-FbcSq927.js";import{t as C}from"./button-Do6Z3vvn.js";import{t as w}from"./badge-DqJRtj_p.js";import{t as T}from"./input-CsTB6jIx.js";import{t as E}from"./textarea-hs6Mpyfl.js";import{t as D}from"./formatted-body-Cm1RrzmN.js";var O=[`manual`,`promoted`,`steward`];function k(e){return O.includes(e)}var A=[`project-wide`,`process`,`tooling`];function j(e){return A.includes(e)}var M=e(n(),1),N=r(),P=`border-tone-violet/30 bg-tone-violet/10 text-tone-violet-fg`,F=`border-tone-teal/30 bg-tone-teal/10 text-tone-teal-fg`;function I({area:e,active:n,onClick:r}){let i=j(e),a=i?g:h,o=t(`inline-flex h-5 max-w-full items-center gap-1 rounded-md border px-1.5 font-mono text-[10px]`,i?P:F,n&&`ring-2 ring-primary/60`),s=(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(a,{className:`size-3 shrink-0`,"aria-hidden":!0}),(0,N.jsx)(`span`,{className:`truncate`,children:e})]}),c=i?`system area`:`path area`;return r?(0,N.jsx)(`button`,{type:`button`,className:t(o,`cursor-pointer hover:brightness-110`),"data-area-kind":i?`system`:`path`,"aria-pressed":n,title:`${c} — filter`,onClick:r,children:s}):(0,N.jsx)(`span`,{className:o,"data-area-kind":i?`system`:`path`,title:c,children:s})}function L(e){let t=new Map;for(let n of e)for(let e of n.areas??[])t.set(e,(t.get(e)??0)+1);return[...t].sort(([e],[t])=>Number(j(t))-Number(j(e))||e.localeCompare(t))}function R(e){let t=new Map;for(let n of e)for(let e of n.tags)t.set(e,(t.get(e)??0)+1);return[...t].sort(([e,t],[n,r])=>r-t||e.localeCompare(n))}function z({counts:e,active:t,onChange:n}){return e.length===0?null:(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,role:`group`,"aria-label":`Filter by area`,children:[(0,N.jsx)(`span`,{className:`mr-0.5 text-[10px] text-muted-foreground`,children:`Areas`}),e.map(([e,r])=>(0,N.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-0.5`,children:[(0,N.jsx)(I,{area:e,active:t===e,onClick:()=>n(t===e?null:e)}),(0,N.jsx)(`span`,{className:`text-[9px] text-muted-foreground`,children:r})]},e)),t&&(0,N.jsx)(`button`,{type:`button`,className:`text-[10px] text-primary hover:underline`,onClick:()=>n(null),children:`clear`})]})}var B=[`rule`,`decision`,`fact`,`memory`],V={rule:`Rules`,decision:`Decisions`,fact:`Facts`,memory:`Memory`},H=[`pinned`,`indexed`,`never`],U=[`ingested`,...B],W={ingested:`Ingested CLAUDE.md`,...V};function G(e){return e===`ingested`?`bg-tone-info/10 text-tone-info-fg border-tone-info/30`:e===`promoted`?`bg-tone-success/10 text-tone-success-fg border-tone-success/30`:e===`steward`?`bg-tone-violet/10 text-tone-violet-fg border-tone-violet/30`:`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/30`}function K(e){return e.length===0?0:Math.max(1,Math.ceil(e.length/4))}function q(e){return`${e.length}c/${K(e)}t`}function J(e){return!e.inherited&&k(e.source)}function Y(e,t){return{kind:e?.kind??t??`memory`,title:e?.title??``,body:e?.body??``,tags:e?.tags??[],audience:e?.audience??`all`,inject:e?.inject??`indexed`}}function X(e){return{kind:e.kind,title:e.title,body:e.body,tags:e.tags,audience:e.audience,inject:e.inject}}var Z=320;function Q({audience:e,onChange:t,profiles:n}){let r=e===`all`;function i(n){let i=r?[]:e,a=i.includes(n)?i.filter(e=>e!==n):[...i,n];t(a.length?a:`all`)}return(0,N.jsxs)(`div`,{className:`min-w-[220px] flex-1 space-y-1`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,N.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Profiles (audience)`}),(0,N.jsxs)(`label`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground select-none`,children:[(0,N.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:r,onChange:e=>t(e.target.checked?`all`:[])}),`All profiles`]})]}),!r&&(n.length===0?(0,N.jsx)(`div`,{className:`rounded border border-border px-1.5 py-1 text-[10px] text-muted-foreground`,children:`No agent profiles found.`}):(0,N.jsx)(`div`,{className:`grid max-h-28 grid-cols-2 gap-0.5 overflow-y-auto rounded border border-border p-1`,children:n.map(t=>(0,N.jsxs)(`label`,{className:`flex items-center gap-1.5 rounded px-1 py-0.5 text-[10px] hover:bg-accent`,children:[(0,N.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:e.includes(t.name),onChange:()=>i(t.name)}),(0,N.jsxs)(`span`,{className:`truncate font-mono`,children:[t.icon?`${t.icon} `:``,t.name]})]},t.name))}))]})}function $({initial:e,submitLabel:t,onSubmit:n,onCancel:r}){let s=a(e=>e.agentProfiles),[c,l]=(0,M.useState)(e.kind),[h,g]=(0,M.useState)(e.title),[_,v]=(0,M.useState)(e.body),[y,b]=(0,M.useState)(e.tags.join(`, `)),[x,S]=(0,M.useState)(e.audience),[w,D]=(0,M.useState)(e.inject),[O,k]=(0,M.useState)(!1),[A,j]=(0,M.useState)(null);async function P(){if(!h.trim()){j(`Title is required`);return}k(!0),j(null);let e=y.split(`,`).map(e=>e.trim()).filter(Boolean);try{await n({kind:c,title:h.trim(),body:_,tags:e,audience:x,inject:w})}catch(e){j(o(e)),k(!1)}}return(0,N.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-card/60 p-3`,children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,N.jsxs)(m,{value:c,onValueChange:e=>l(e),children:[(0,N.jsx)(d,{size:`sm`,className:`w-32`,children:(0,N.jsx)(u,{})}),(0,N.jsx)(f,{children:B.map(e=>(0,N.jsx)(p,{value:e,children:V[e]},e))})]}),(0,N.jsx)(T,{value:h,onChange:e=>g(e.target.value),placeholder:`Title`,className:`h-8 min-w-[200px] flex-1`})]}),(0,N.jsx)(E,{value:_,onChange:e=>v(e.target.value),placeholder:`Body (markdown)`,className:`min-h-24 font-mono text-xs`}),(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-3 text-[9px] text-muted-foreground`,children:[(0,N.jsxs)(`span`,{children:[`label `,q(h)]}),(0,N.jsxs)(`span`,{children:[`body `,q(_)]})]}),(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,N.jsx)(T,{value:y,onChange:e=>b(e.target.value),placeholder:`tags, comma, separated`,className:`h-8 min-w-[160px] flex-1 text-xs`}),(0,N.jsxs)(m,{value:w,onValueChange:e=>D(e),children:[(0,N.jsx)(d,{size:`sm`,className:`w-28`,children:(0,N.jsx)(u,{})}),(0,N.jsx)(f,{children:H.map(e=>(0,N.jsx)(p,{value:e,children:e},e))})]})]}),(0,N.jsx)(Q,{audience:x,onChange:S,profiles:i(s)}),A&&(0,N.jsx)(`div`,{className:`text-xs text-destructive`,children:A}),(0,N.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,N.jsx)(C,{variant:`outline`,size:`sm`,onClick:r,disabled:O,children:`Cancel`}),(0,N.jsx)(C,{size:`sm`,onClick:()=>void P(),disabled:O,children:O?`Saving…`:t})]})]})}function ee({entry:e,ownerName:t,now:n,editing:r,expanded:i,onToggleExpanded:a,onEdit:o,onDelete:l,onTogglePin:u,onSubmitEdit:d,onCancelEdit:f,onAreaClick:p}){if(r)return(0,N.jsx)($,{initial:Y(e),submitLabel:`Save`,onSubmit:d,onCancel:f});let m=e.body??``,h=m.length>Z,g=i||!h?m:m.slice(0,Z).trimEnd()+`…`,x=J(e),T=e.inject===`pinned`;return(0,N.jsxs)(`div`,{className:`rounded-md border border-border bg-card/60 p-3`,children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,N.jsx)(`span`,{className:`min-w-0 break-words text-sm font-medium`,children:e.title}),(0,N.jsx)(w,{variant:`outline`,className:`text-[10px] ${G(e.source)}`,children:e.source}),T&&(0,N.jsxs)(w,{variant:`outline`,className:`gap-1 border-primary/30 bg-primary/10 text-[10px] text-primary`,children:[(0,N.jsx)(b,{className:`h-3 w-3`}),`pinned`]}),e.inherited&&(0,N.jsxs)(w,{variant:`outline`,className:`gap-1 border-tone-warning/30 bg-tone-warning/10 text-[10px] text-tone-warning-fg`,children:[(0,N.jsx)(_,{className:`h-3 w-3`}),`inherited`,t?` · ${t}`:``]}),(0,N.jsxs)(`span`,{className:`ml-auto flex items-center gap-1`,children:[(0,N.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,title:`Created ${c(e.createdAt)}`,children:s(n,e.updatedAt)}),x&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6`,onClick:u,title:T?`Unpin (revert to indexed)`:`Pin (always render full body)`,children:T?(0,N.jsx)(y,{className:`h-3 w-3 text-primary`}):(0,N.jsx)(b,{className:`h-3 w-3`})}),(0,N.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6`,onClick:o,title:`Edit entry`,children:(0,N.jsx)(v,{className:`h-3 w-3`})}),(0,N.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6 text-destructive hover:text-destructive`,onClick:l,title:`Remove entry`,children:(0,N.jsx)(S,{className:`h-3 w-3`})})]})]})]}),m&&(0,N.jsxs)(`div`,{className:`mt-2`,children:[(0,N.jsx)(D,{text:g,className:`text-xs text-muted-foreground`}),h&&(0,N.jsx)(`button`,{type:`button`,className:`mt-1 text-[11px] font-medium text-primary hover:underline`,onClick:a,children:i?`Show less`:`Show more`})]}),(e.areas?.length||e.tags.length>0)&&(0,N.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:[e.areas?.map(e=>(0,N.jsx)(I,{area:e,onClick:p&&(()=>p(e))},`area:${e}`)),e.tags.map(e=>(0,N.jsx)(w,{variant:`secondary`,className:`h-4 px-1 text-[9px]`,children:e},e))]}),(0,N.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[9px] text-muted-foreground`,children:[(0,N.jsxs)(`span`,{children:[`label `,q(e.title)]}),m&&(0,N.jsxs)(`span`,{children:[`body `,q(m)]}),(0,N.jsxs)(`span`,{children:[`Created `,c(e.createdAt)]}),(0,N.jsxs)(`span`,{children:[`Updated `,c(e.updatedAt)]})]})]})}function te(){let e=a(e=>e.projectFocusId),t=a(e=>e.consumeProjectFocus),[n,r]=(0,M.useState)([]),[i,s]=(0,M.useState)(``),[c,u]=(0,M.useState)(!1),[d,f]=(0,M.useState)(!0),[p,m]=(0,M.useState)(null);async function h(){m(null);try{let n=await l(`GET`,`/projects${c?`?includeArchived=true`:``}`);r(n.projects);let i=e?n.projects.find(t=>t.id===e||t.slug===e):void 0;i?(s(i.id),t()):s(e=>n.projects.some(t=>t.id===e)?e:n.projects[0]?.id??``)}catch(e){m(o(e))}finally{f(!1)}}return(0,M.useEffect)(()=>{h()},[c]),(0,M.useEffect)(()=>{let r=e?n.find(t=>t.id===e||t.slug===e):void 0;r&&(s(r.id),t())},[e]),{projects:n,selectedId:i,setSelectedId:s,includeArchived:c,setIncludeArchived:u,loading:d,error:p,setError:m,refresh:h}}function ne({list:e}){let{projects:t,selectedId:n,setSelectedId:r,includeArchived:i,setIncludeArchived:a}=e;return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`select`,{"aria-label":`Project`,className:`ml-auto h-8 w-full min-w-0 max-w-full basis-full rounded-md border border-border bg-card px-2 text-sm text-foreground sm:w-auto sm:basis-auto`,value:n,onChange:e=>r(e.target.value),disabled:t.length===0,children:[t.length===0&&(0,N.jsx)(`option`,{value:``,children:`No projects`}),t.map(e=>(0,N.jsxs)(`option`,{value:e.id,children:[e.title||e.slug,e.status===`archived`?` (archived)`:``]},e.id))]}),(0,N.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground select-none`,children:[(0,N.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:i,onChange:e=>a(e.target.checked)}),`Archived`]})]})}function re({icon:e,title:t,list:n,actions:r,onRefresh:i}){return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[e,(0,N.jsx)(`h1`,{className:`text-lg font-semibold`,children:t}),(0,N.jsx)(ne,{list:n}),r,(0,N.jsxs)(C,{variant:`outline`,size:`sm`,onClick:i,children:[(0,N.jsx)(x,{className:`size-4`}),` Refresh`]})]}),n.error&&(0,N.jsx)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:n.error})]})}export{$ as a,Y as c,L as d,R as f,U as i,J as l,te as n,ee as o,W as r,X as s,re as t,z as u};
|
|
2
|
-
//# sourceMappingURL=use-project-list-B-T2Bnnn.js.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{M as i}from"./provider-display-DbLWpP3j.js";import{t as a}from"./api-CIIVBtAV.js";import{t as o}from"./button-Do6Z3vvn.js";import{t as s}from"./badge-DqJRtj_p.js";var c=e(n(),1),l=class{diff(e,t,n={}){let r;typeof n==`function`?(r=n,n={}):`callback`in n&&(r=n.callback);let i=this.castInput(e,n),a=this.castInput(t,n),o=this.removeEmpty(this.tokenize(i,n)),s=this.removeEmpty(this.tokenize(a,n));return this.diffWithOptionsObj(o,s,n,r)}diffWithOptionsObj(e,t,n,r){let i=e=>{if(e=this.postProcess(e,n),r){setTimeout(function(){r(e)},0);return}else return e},a=t.length,o=e.length,s=1,c=a+o;n.maxEditLength!=null&&(c=Math.min(c,n.maxEditLength));let l=n.timeout??1/0,u=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],f=this.extractCommon(d[0],t,e,0,n);if(d[0].oldPos+1>=o&&f+1>=a)return i(this.buildValues(d[0].lastComponent,t,e));let p=-1/0,m=1/0,h=()=>{for(let r=Math.max(p,-s);r<=Math.min(m,s);r+=2){let s,c=d[r-1],l=d[r+1];c&&(d[r-1]=void 0);let u=!1;if(l){let e=l.oldPos-r;u=l&&0<=e&&e<a}let h=c&&c.oldPos+1<o;if(!u&&!h){d[r]=void 0;continue}if(s=!h||u&&c.oldPos<l.oldPos?this.addToPath(l,!0,!1,0,n):this.addToPath(c,!1,!0,1,n),f=this.extractCommon(s,t,e,r,n),s.oldPos+1>=o&&f+1>=a)return i(this.buildValues(s.lastComponent,t,e))||!0;d[r]=s,s.oldPos+1>=o&&(m=Math.min(m,r-1)),f+1>=a&&(p=Math.max(p,r+1))}s++};if(r)(function e(){setTimeout(function(){if(s>c||Date.now()>u)return r(void 0);h()||e()},0)})();else for(;s<=c&&Date.now()<=u;){let e=h();if(e)return e}}addToPath(e,t,n,r,i){let a=e.lastComponent;return a&&!i.oneChangePerToken&&a.added===t&&a.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:a.count+1,added:t,removed:n,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:a}}}extractCommon(e,t,n,r,i){let a=t.length,o=n.length,s=e.oldPos,c=s-r,l=0;for(;c+1<a&&s+1<o&&this.equals(n[s+1],t[c+1],i);)c++,s++,l++,i.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return l&&!i.oneChangePerToken&&(e.lastComponent={count:l,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=s,c}equals(e,t,n){return n.comparator?n.comparator(e,t):e===t||!!n.ignoreCase&&e.toLowerCase()===t.toLowerCase()}removeEmpty(e){let t=[];for(let n=0;n<e.length;n++)e[n]&&t.push(e[n]);return t}castInput(e,t){return e}tokenize(e,t){return Array.from(e)}join(e){return e.join(``)}postProcess(e,t){return e}get useLongestToken(){return!1}buildValues(e,t,n){let r=[],i;for(;e;)r.push(e),i=e.previousComponent,delete e.previousComponent,e=i;r.reverse();let a=r.length,o=0,s=0,c=0;for(;o<a;o++){let e=r[o];if(e.removed)e.value=this.join(n.slice(c,c+e.count)),c+=e.count;else{if(!e.added&&this.useLongestToken){let r=t.slice(s,s+e.count);r=r.map(function(e,t){let r=n[c+t];return r.length>e.length?r:e}),e.value=this.join(r)}else e.value=this.join(t.slice(s,s+e.count));s+=e.count,e.added||(c+=e.count)}}return r}};new class extends l{};function u(e,t){let n;for(n=0;n<e.length&&n<t.length;n++)if(e[n]!=t[n])return e.slice(0,n);return e.slice(0,n)}function d(e,t){let n;if(!e||!t||e[e.length-1]!=t[t.length-1])return``;for(n=0;n<e.length&&n<t.length;n++)if(e[e.length-(n+1)]!=t[t.length-(n+1)])return e.slice(-n);return e.slice(-n)}function f(e,t,n){if(e.slice(0,t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't start with prefix ${JSON.stringify(t)}; this is a bug`);return n+e.slice(t.length)}function p(e,t,n){if(!t)return e+n;if(e.slice(-t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't end with suffix ${JSON.stringify(t)}; this is a bug`);return e.slice(0,-t.length)+n}function m(e,t){return f(e,t,``)}function h(e,t){return p(e,t,``)}function g(e,t){return t.slice(0,_(e,t))}function _(e,t){let n=0;e.length>t.length&&(n=e.length-t.length);let r=t.length;e.length<t.length&&(r=e.length);let i=Array(r),a=0;i[0]=0;for(let e=1;e<r;e++){for(t[e]==t[a]?i[e]=i[a]:i[e]=a;a>0&&t[e]!=t[a];)a=i[a];t[e]==t[a]&&a++}a=0;for(let r=n;r<e.length;r++){for(;a>0&&e[r]!=t[a];)a=i[a];e[r]==t[a]&&a++}return a}function v(e,t){let n=[];for(let r of Array.from(t.segment(e))){let e=r.segment;n.length&&/\s/.test(n[n.length-1])&&/\s/.test(e)?n[n.length-1]+=e:n.push(e)}return n}function y(e,t){if(t)return x(e,t)[1];let n;for(n=e.length-1;n>=0&&e[n].match(/\s/);n--);return e.substring(n+1)}function b(e,t){if(t)return x(e,t)[0];let n=e.match(/^\s*/);return n?n[0]:``}function x(e,t){if(!t)return[b(e),y(e)];if(t.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);let n=v(e,t),r=n[0],i=n[n.length-1];return[/\s/.test(r)?r:``,/\s/.test(i)?i:``]}var S=`a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}`,C=RegExp(`[${S}]+|\\s+|[^${S}]`,`ug`);new class extends l{equals(e,t,n){return n.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e.trim()===t.trim()}tokenize(e,t={}){let n;if(t.intlSegmenter){let r=t.intlSegmenter;if(r.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);n=v(e,r)}else n=e.match(C)||[];let r=[],i=null;return n.forEach(e=>{/\s/.test(e)?i==null?r.push(e):r.push(r.pop()+e):i!=null&&/\s/.test(i)?r[r.length-1]==i?r.push(r.pop()+e):r.push(i+e):r.push(e),i=e}),r}join(e){return e.map((e,t)=>t==0?e:e.replace(/^\s+/,``)).join(``)}postProcess(e,t){if(!e||t.oneChangePerToken)return e;let n=null,r=null,i=null;return e.forEach(e=>{e.added?r=e:e.removed?i=e:((r||i)&&w(n,i,r,e,t.intlSegmenter),n=e,r=null,i=null)}),(r||i)&&w(n,i,r,null,t.intlSegmenter),e}};function w(e,t,n,r,i){if(t&&n){let[a,o]=x(t.value,i),[s,c]=x(n.value,i);if(e){let r=u(a,s);e.value=p(e.value,s,r),t.value=m(t.value,r),n.value=m(n.value,r)}if(r){let e=d(o,c);r.value=f(r.value,c,e),t.value=h(t.value,e),n.value=h(n.value,e)}}else if(n){if(e){let e=b(n.value,i);n.value=n.value.substring(e.length)}if(r){let e=b(r.value,i);r.value=r.value.substring(e.length)}}else if(e&&r){let n=b(r.value,i),[a,o]=x(t.value,i),s=u(n,a);t.value=m(t.value,s);let c=d(m(n,s),o);t.value=h(t.value,c),r.value=f(r.value,n,c),e.value=p(e.value,n,n.slice(0,n.length-c.length))}else if(r){let e=b(r.value,i),n=g(y(t.value,i),e);t.value=h(t.value,n)}else if(e){let n=g(y(e.value,i),b(t.value,i));t.value=m(t.value,n)}}new class extends l{tokenize(e){let t=RegExp(`(\\r?\\n)|[${S}]+|[^\\S\\n\\r]+|[^${S}]`,`ug`);return e.match(t)||[]}};var T=new class extends l{constructor(){super(...arguments),this.tokenize=D}equals(e,t,n){return n.ignoreWhitespace?((!n.newlineIsToken||!e.includes(`
|
|
2
|
-
`))&&(e=e.trim()),(!n.newlineIsToken||!t.includes(`
|
|
3
|
-
`))&&(t=t.trim())):n.ignoreNewlineAtEof&&!n.newlineIsToken&&(e.endsWith(`
|
|
4
|
-
`)&&(e=e.slice(0,-1)),t.endsWith(`
|
|
5
|
-
`)&&(t=t.slice(0,-1))),super.equals(e,t,n)}};function E(e,t,n){return T.diff(e,t,n)}function D(e,t){t.stripTrailingCr&&(e=e.replace(/\r\n/g,`
|
|
6
|
-
`));let n=[],r=e.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(let e=0;e<r.length;e++){let i=r[e];e%2&&!t.newlineIsToken?n[n.length-1]+=i:n.push(i)}return n}function O(e){return e==`.`||e==`!`||e==`?`}new class extends l{tokenize(e){let t=[],n=0;for(let r=0;r<e.length;r++){if(r==e.length-1){t.push(e.slice(n));break}if(O(e[r])&&e[r+1].match(/\s/)){for(t.push(e.slice(n,r+1)),r=n=r+1;e[r+1]?.match(/\s/);)r++;t.push(e.slice(n,r+1)),n=r+1}}return t}},new class extends l{tokenize(e){return e.split(/([{}:;,]|\s+)/)}},new class extends l{constructor(){super(...arguments),this.tokenize=D}get useLongestToken(){return!0}castInput(e,t){let{undefinedReplacement:n,stringifyReplacer:r=(e,t)=>t===void 0?n:t}=t;return typeof e==`string`?e:JSON.stringify(k(e,null,null,r),null,` `)}equals(e,t,n){return super.equals(e.replace(/,([\r\n])/g,`$1`),t.replace(/,([\r\n])/g,`$1`),n)}};function k(e,t,n,r,i){t||=[],n||=[],r&&(e=r(i===void 0?``:i,e));let a;for(a=0;a<t.length;a+=1)if(t[a]===e)return n[a];let o;if(Object.prototype.toString.call(e)===`[object Array]`){for(t.push(e),o=Array(e.length),n.push(o),a=0;a<e.length;a+=1)o[a]=k(e[a],t,n,r,String(a));return t.pop(),n.pop(),o}if(e&&e.toJSON&&(e=e.toJSON()),typeof e==`object`&&e){t.push(e),o={},n.push(o);let i=[],s;for(s in e)Object.prototype.hasOwnProperty.call(e,s)&&i.push(s);for(i.sort(),a=0;a<i.length;a+=1)s=i[a],o[s]=k(e[s],t,n,r,s);t.pop(),n.pop()}else o=e;return o}new class extends l{tokenize(e){return e.slice()}join(e){return e}removeEmpty(e){return e}};var A=r(),j=2;function M(e,t){let n=E(e,t).flatMap(e=>{let t=e.added?`add`:e.removed?`del`:`same`;return e.value.replace(/\n$/,``).split(`
|
|
7
|
-
`).map(e=>({kind:t,text:e}))}),r=n.map((e,t)=>e.kind!==`same`||n.slice(Math.max(0,t-j),t+j+1).some(e=>e.kind!==`same`)),i=[],a=0;return n.forEach((e,t)=>{r[t]?(a&&i.push({kind:`gap`,text:`${a} unchanged line${a===1?``:`s`}`}),a=0,i.push(e)):a++}),a&&i.push({kind:`gap`,text:`${a} unchanged line${a===1?``:`s`}`}),i}function N({from:e,to:n,label:r}){let i=M(e,n),a=i.some(e=>e.kind===`add`||e.kind===`del`);return(0,A.jsxs)(`div`,{className:`min-w-0 space-y-1`,"data-testid":`prompt-diff`,children:[(0,A.jsx)(`p`,{className:`text-[11px] font-medium text-muted-foreground`,children:r}),a?(0,A.jsx)(`pre`,{className:`max-h-64 max-w-full overflow-auto rounded border bg-background p-1 font-mono text-[11px] leading-4`,children:i.map((e,n)=>(0,A.jsxs)(`div`,{className:t(`whitespace-pre-wrap break-words`,e.kind===`add`&&`bg-tone-success/10 text-tone-success-fg`,e.kind===`del`&&`bg-tone-danger/10 text-tone-danger-fg`,e.kind===`gap`&&`text-muted-foreground italic`),children:[e.kind===`add`?`+ `:e.kind===`del`?`- `:e.kind===`gap`?`… `:` `,e.text]},n))}):(0,A.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No differences.`})]})}function P(e){return`/settings/prompts/${encodeURIComponent(e)}`}async function F(e){let[t,n]=await Promise.all([a(`GET`,P(e)),a(`GET`,`${P(e)}/history`).then(e=>e.versions,()=>void 0)]);return[t,n]}function I(e){return new Date(e).toLocaleString()}function L(e){return e.fallbackReason===`db-error`?`The prompt database is unavailable, so the bundled text is being served. Editing is disabled until it recovers.`:`No saved version exists for this prompt yet, so the bundled text is being served. Editing is disabled until a saved version exists.`}function R({slug:e,children:t,onSaved:n,readOnly:r=!1}){let[l,u]=(0,c.useState)(),[d,f]=(0,c.useState)(),[p,m]=(0,c.useState)(``),[h,g]=(0,c.useState)(``),[_,v]=(0,c.useState)(``),[y,b]=(0,c.useState)(!1),[x,S]=(0,c.useState)(!1),[C,w]=(0,c.useState)(``);(0,c.useEffect)(()=>{let t=!0;return F(e).then(e=>{t&&u(e)},e=>{t&&g(i(e))}),()=>{t=!1}},[e]);async function T(){let t=await F(e);u(t),t[0].version&&n?.(t[0])}async function E(){S(!0);try{await T(),g(``),v(y?`Reloaded the latest version. Your unsaved text is kept; review the changes and save again.`:``),b(!1)}catch(e){g(i(e))}finally{S(!1)}}async function D(t,n){if(!l)return;let[r]=l;S(!0),g(``),v(``),b(!1);try{await a(t===`edit`?`PUT`:`POST`,`${P(e)}${t===`edit`?``:`/${t}`}`,{...t===`edit`?{template:d??r.template}:{},...n===void 0?{}:{version:n},expectedVersion:r.version,reason:p.trim()||void 0}),await T(),f(void 0),m(``),w(``)}catch(e){e.status===409?(b(!0),g(`Version ${r.version} is no longer current: someone else saved first. Reload the latest version, then re-apply your change.`)):g(i(e))}finally{S(!1)}}if(!l||l[0].version===void 0)return(0,A.jsxs)(A.Fragment,{children:[t,h&&(0,A.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,children:h})]});let[O,k]=l,j=O.source===`bundled-fallback`,M=r||j,R=d!==void 0&&d!==O.template,z=k?.find(e=>e.version===O.version),B=!!O.bundledUpdateAvailable&&O.bundledTemplate!==void 0,V=R?`Save or discard your edits first`:void 0;return(0,A.jsxs)(`div`,{className:`min-w-0 space-y-2 rounded border p-2 text-xs`,"data-testid":`versioned-prompt-editor`,children:[(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,A.jsx)(`span`,{className:`min-w-0 break-all font-medium`,children:e}),(0,A.jsxs)(`span`,{children:[`· `,j?`No saved version`:`Version ${O.version}`]}),j&&(0,A.jsx)(s,{variant:`outline`,className:`border-tone-warning/40 bg-tone-warning/10 text-tone-warning-fg`,children:`Bundled fallback`}),B&&(0,A.jsx)(s,{variant:`outline`,className:`border-tone-info/40 bg-tone-info/10 text-tone-info-fg`,children:`Bundled update available`})]}),z&&(0,A.jsxs)(`p`,{className:`break-words text-muted-foreground`,children:[`Saved by `,z.actor,` · `,I(z.createdAt),z.reason?` · ${z.reason}`:``]}),j&&(0,A.jsxs)(`p`,{role:`status`,className:`rounded border border-tone-warning/30 bg-tone-warning/10 p-1.5 text-tone-warning-fg`,children:[L(O),` `,(0,A.jsx)(o,{type:`button`,variant:`outline`,size:`xs`,disabled:x,onClick:()=>void E(),children:`Reload`})]}),h&&(0,A.jsxs)(`p`,{role:`alert`,className:`rounded border border-destructive/40 bg-destructive/10 p-1.5 text-destructive`,children:[h,` `,y&&(0,A.jsx)(o,{type:`button`,variant:`outline`,size:`xs`,disabled:x,onClick:()=>void E(),children:`Reload latest`})]}),_&&(0,A.jsx)(`p`,{role:`status`,className:`rounded border border-tone-info/30 bg-tone-info/10 p-1.5 text-tone-info-fg`,children:_}),B&&!j&&(0,A.jsxs)(`details`,{className:`rounded border p-1.5`,children:[(0,A.jsx)(`summary`,{className:`cursor-pointer font-medium`,children:`Review bundled update`}),(0,A.jsxs)(`div`,{className:`mt-1.5 space-y-1.5`,children:[(0,A.jsx)(N,{from:O.template,to:O.bundledTemplate,label:`Live version ${O.version} → bundled update`}),(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[!r&&(0,A.jsx)(o,{type:`button`,size:`sm`,disabled:x||R,title:V,onClick:()=>void D(`adopt`),children:`Adopt bundled update`}),V&&!r&&(0,A.jsxs)(`span`,{className:`text-muted-foreground`,children:[V,`.`]})]})]})]}),(0,A.jsxs)(`label`,{className:`block`,children:[`Prompt text`,(0,A.jsx)(`textarea`,{className:`mt-1 w-full rounded border bg-background p-2 font-mono`,rows:8,readOnly:M,value:d??O.template,onChange:e=>f(e.target.value),disabled:x})]}),R&&(0,A.jsxs)(`details`,{className:`rounded border p-1.5`,children:[(0,A.jsx)(`summary`,{className:`cursor-pointer`,children:`Review my changes`}),(0,A.jsx)(`div`,{className:`mt-1.5`,children:(0,A.jsx)(N,{from:O.template,to:d,label:`Version ${O.version} → my edits`})})]}),!M&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`label`,{className:`block`,children:[`Reason (optional)`,(0,A.jsx)(`input`,{className:`mt-1 w-full rounded border bg-background p-1`,value:p,maxLength:2e3,onChange:e=>m(e.target.value)})]}),(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,A.jsx)(o,{type:`button`,size:`sm`,disabled:x||!R,onClick:()=>void D(`edit`),children:`Save prompt version`}),(0,A.jsx)(o,{type:`button`,size:`sm`,variant:`outline`,disabled:x||!R,onClick:()=>{f(void 0),v(``)},children:`Discard changes`})]})]}),(0,A.jsxs)(`details`,{className:`rounded border p-1.5`,children:[(0,A.jsx)(`summary`,{className:`cursor-pointer font-medium`,children:k?`History (${k.length}${k.length>=100?`+, latest 100`:``})`:`History unavailable`}),(0,A.jsx)(`ul`,{className:`mt-1.5 space-y-1.5`,children:(k??[]).map(e=>{let t=e.version===O.version,n=`v${e.version}`;return(0,A.jsxs)(`li`,{className:`min-w-0 space-y-1 rounded border p-1.5`,children:[(0,A.jsxs)(`p`,{className:`break-words`,children:[`Version `,e.version,t?` (current)`:``,` · `,e.actor,` · `,I(e.createdAt),e.reason?` · ${e.reason}`:``]}),!t&&(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,A.jsxs)(o,{type:`button`,size:`xs`,variant:`outline`,"aria-pressed":C===n,disabled:x,onClick:()=>w(C===n?``:n),children:[`Compare version `,e.version,` with current`]}),!M&&(0,A.jsxs)(o,{type:`button`,size:`xs`,variant:`outline`,disabled:x||R,title:V,onClick:()=>void D(`restore`,e.version),children:[`Restore version `,e.version]})]}),C===n&&(0,A.jsx)(N,{from:e.template,to:O.template,label:`Version ${e.version} → current version ${O.version}`})]},e.version)})})]})]})}export{R as t};
|
|
8
|
-
//# sourceMappingURL=versioned-prompt-editor-Diu8BIaM.js.map
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// #2461 — keep the runner's view of this agent's gate-run LEASE HOLDER fresh, off the dedup sweep's
|
|
2
|
-
// own path. The sweep must not block on a file read plus a `ps` every tick, and the holder only
|
|
3
|
-
// changes when a gate run starts or ends, so a cheap self-arming probe on the same cadence is
|
|
4
|
-
// enough. When a holder exists it is AUTHORITATIVE for the sweep: the launch-time lease already
|
|
5
|
-
// decided which run survives, and the backstop must not independently re-decide.
|
|
6
|
-
import { readLiveGateRunHolderPid } from "@humwick/sdk/gate-run-lease";
|
|
7
|
-
|
|
8
|
-
export class GateRunLeaseProbe {
|
|
9
|
-
private timer?: ReturnType<typeof setInterval>;
|
|
10
|
-
private holderPid: number | undefined;
|
|
11
|
-
|
|
12
|
-
constructor(private readonly agentId: string, private readonly intervalMs: number) {}
|
|
13
|
-
|
|
14
|
-
/** Last observed holder pid, or undefined when this agent has no live gate run. */
|
|
15
|
-
pid(): number | undefined {
|
|
16
|
-
return this.holderPid;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
start(): void {
|
|
20
|
-
if (this.timer) return;
|
|
21
|
-
const probe = () => {
|
|
22
|
-
void readLiveGateRunHolderPid(this.agentId)
|
|
23
|
-
.then((pid) => { this.holderPid = pid; })
|
|
24
|
-
// A failed read must read as "no holder", which returns the sweep to newest-wins rather
|
|
25
|
-
// than pinning it to a stale pid it can no longer verify.
|
|
26
|
-
.catch(() => { this.holderPid = undefined; });
|
|
27
|
-
};
|
|
28
|
-
probe();
|
|
29
|
-
this.timer = setInterval(probe, this.intervalMs);
|
|
30
|
-
this.timer.unref?.();
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
stop(): void {
|
|
34
|
-
if (this.timer) clearInterval(this.timer);
|
|
35
|
-
this.timer = undefined;
|
|
36
|
-
this.holderPid = undefined;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { getDb } from "./connection.ts";
|
|
2
|
-
import { providerCatalogList } from "@humwick/sdk/provider-catalog";
|
|
3
|
-
import { upsertProviderModelOverride } from "../provider-catalog-store.ts";
|
|
4
|
-
|
|
5
|
-
// #2750 — insert-only seeding otherwise freezes family aliases at their first release.
|
|
6
|
-
export function reconcileClaudeCatalogSeeds(): number {
|
|
7
|
-
const db = getDb();
|
|
8
|
-
const rows = db.query(`
|
|
9
|
-
SELECT provider, alias, entry FROM provider_model_overrides
|
|
10
|
-
WHERE provider IN ('claude', 'claude-b') AND updated_by LIKE 'seed:%'
|
|
11
|
-
AND deleted = 0 AND disabled = 0
|
|
12
|
-
`).all() as Array<{ provider: string; alias: string; entry: string }>;
|
|
13
|
-
const aliases = new Set(["haiku", "opus", "opus[1m]", "sonnet", "sonnet[1m]", "fable"]);
|
|
14
|
-
const catalog = providerCatalogList();
|
|
15
|
-
return db.transaction(() => {
|
|
16
|
-
let refreshed = 0;
|
|
17
|
-
for (const row of rows) {
|
|
18
|
-
if (!aliases.has(row.alias)) continue;
|
|
19
|
-
const model = catalog.find((entry) => entry.provider === row.provider)?.models.find((entry) => entry.alias === row.alias);
|
|
20
|
-
if (!model || model.disabled || model.unavailable) continue;
|
|
21
|
-
if (JSON.stringify(model) === row.entry) continue;
|
|
22
|
-
upsertProviderModelOverride({ provider: row.provider, alias: row.alias, entry: model, updatedBy: "seed:claude-5.5" });
|
|
23
|
-
refreshed++;
|
|
24
|
-
}
|
|
25
|
-
return refreshed;
|
|
26
|
-
})();
|
|
27
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { DispatchPolicy, RoutingPolicy } from "@humwick/sdk";
|
|
2
|
-
import { routingModelAliases } from "@humwick/providers";
|
|
3
|
-
|
|
4
|
-
/** Project saved version-pinned routing onto the current stable family aliases. */
|
|
5
|
-
export function currentRoutingModels(policy: RoutingPolicy): RoutingPolicy {
|
|
6
|
-
return policy.dispatch ? { ...policy, dispatch: currentDispatchModels(policy.dispatch) } : policy;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function currentDispatchModels(policy: DispatchPolicy): DispatchPolicy {
|
|
10
|
-
return {
|
|
11
|
-
...policy,
|
|
12
|
-
rules: policy.rules.map((rule) => ({ ...rule, target: currentModelTarget(rule.target) })),
|
|
13
|
-
...(policy.fallback ? { fallback: currentModelTarget(policy.fallback) } : {}),
|
|
14
|
-
...(policy.autoReview?.target ? { autoReview: { ...policy.autoReview, target: currentModelTarget(policy.autoReview.target) } } : {}),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function currentModelTarget<T extends { provider: string; model?: string }>(target: T): T {
|
|
19
|
-
const model = target.model ? routingModelAliases[target.provider]?.[target.model] : undefined;
|
|
20
|
-
return model ? { ...target, model } : target;
|
|
21
|
-
}
|