crewly 1.20.185 → 1.20.187
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/config/skills/agent/core/remember/SKILL.md +1 -0
- package/config/skills/agent/core/remember/execute.sh +12 -0
- package/config/skills/agent/core/report-status/SKILL.md +7 -1
- package/config/skills/agent/core/report-status/execute.sh +41 -0
- package/config/skills/agent/core/slack-post/SKILL.md +1 -0
- package/config/skills/agent/core/slack-post/execute.sh +9 -2
- package/config/skills/team-leader/_common/lib.sh +45 -0
- package/config/skills/team-leader/start-agent/SKILL.md +6 -6
- package/config/skills/team-leader/start-agent/execute.sh +3 -12
- package/config/skills/team-leader/stop-agent/SKILL.md +6 -6
- package/config/skills/team-leader/stop-agent/execute.sh +3 -12
- package/dist/backend/backend/src/constants.d.ts +64 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +64 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +62 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request/open-items.controller.js +1 -1
- package/dist/backend/backend/src/controllers/request/open-items.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +4 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts +18 -1
- package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/standing/standing.controller.js +77 -4
- package/dist/backend/backend/src/controllers/standing/standing.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/spend.controller.d.ts +32 -0
- package/dist/backend/backend/src/controllers/system/spend.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/system/spend.controller.js +100 -0
- package/dist/backend/backend/src/controllers/system/spend.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts +12 -0
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.js +28 -3
- package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +7 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +64 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +59 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
- package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
- package/dist/backend/backend/src/scripts/open-items-stale-followups.d.ts +51 -0
- package/dist/backend/backend/src/scripts/open-items-stale-followups.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/open-items-stale-followups.js +142 -0
- package/dist/backend/backend/src/scripts/open-items-stale-followups.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +32 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +9 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js +37 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +28 -0
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js +83 -2
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.d.ts +14 -2
- package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.js +12 -1
- package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.d.ts +18 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.js +38 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts +11 -0
- package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/standing-answers.service.js +40 -2
- package/dist/backend/backend/src/services/memory/standing-answers.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/offline-agent-message.d.ts +70 -0
- package/dist/backend/backend/src/services/messaging/offline-agent-message.d.ts.map +1 -0
- package/dist/backend/backend/src/services/messaging/offline-agent-message.js +92 -0
- package/dist/backend/backend/src/services/messaging/offline-agent-message.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts +5 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js +11 -2
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js +2 -0
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +9 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +41 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +87 -2
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +30 -12
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +83 -13
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +25 -0
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js +45 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts +10 -1
- package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-item-extractor.js +86 -5
- package/dist/backend/backend/src/services/open-items/open-item-extractor.js.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts +2 -1
- package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items-backfill.js +17 -6
- package/dist/backend/backend/src/services/open-items/open-items-backfill.js.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +62 -1
- package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.service.js +203 -9
- package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/idle-holder-surfacer.d.ts +40 -0
- package/dist/backend/backend/src/services/reconciler/idle-holder-surfacer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/reconciler/idle-holder-surfacer.js +82 -0
- package/dist/backend/backend/src/services/reconciler/idle-holder-surfacer.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +29 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +49 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +6 -11
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +23 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +55 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js +10 -4
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts +13 -2
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js +19 -5
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap-command.d.ts +99 -0
- package/dist/backend/backend/src/services/spend/spend-cap-command.d.ts.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap-command.js +190 -0
- package/dist/backend/backend/src/services/spend/spend-cap-command.js.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap.gate.d.ts +64 -0
- package/dist/backend/backend/src/services/spend/spend-cap.gate.d.ts.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap.gate.js +71 -0
- package/dist/backend/backend/src/services/spend/spend-cap.gate.js.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts +225 -0
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap.service.js +503 -0
- package/dist/backend/backend/src/services/spend/spend-cap.service.js.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap.store.d.ts +85 -0
- package/dist/backend/backend/src/services/spend/spend-cap.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap.store.js +95 -0
- package/dist/backend/backend/src/services/spend/spend-cap.store.js.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap.wiring.d.ts +50 -0
- package/dist/backend/backend/src/services/spend/spend-cap.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-cap.wiring.js +98 -0
- package/dist/backend/backend/src/services/spend/spend-cap.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-ledger.service.d.ts +124 -0
- package/dist/backend/backend/src/services/spend/spend-ledger.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/spend/spend-ledger.service.js +189 -0
- package/dist/backend/backend/src/services/spend/spend-ledger.service.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/claim-target-waker.d.ts +51 -0
- package/dist/backend/backend/src/services/task-pool/claim-target-waker.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/claim-target-waker.js +43 -0
- package/dist/backend/backend/src/services/task-pool/claim-target-waker.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +38 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +73 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/work-item-usage.d.ts +44 -0
- package/dist/backend/backend/src/services/task-pool/work-item-usage.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/work-item-usage.js +37 -0
- package/dist/backend/backend/src/services/task-pool/work-item-usage.js.map +1 -0
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.js +11 -14
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +25 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +50 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +9 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +16 -2
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/decision.types.d.ts +5 -1
- package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +9 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/review-reason.types.d.ts +3 -1
- package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/review-reason.types.js +1 -0
- package/dist/backend/backend/src/types/review-reason.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/open-item.types.d.ts +5 -1
- package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/open-item.types.js +1 -1
- package/dist/backend/backend/src/types/v2/open-item.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +64 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +64 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +32 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts +9 -0
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.js +37 -1
- package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts +28 -0
- package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js +83 -2
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.d.ts +14 -2
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.js +12 -1
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +18 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.js +38 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts +11 -0
- package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/standing-answers.service.js +40 -2
- package/dist/cli/backend/src/services/memory/standing-answers.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts +5 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +11 -2
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js +9 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +41 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +87 -2
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +30 -12
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +83 -13
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts +97 -0
- package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/model-pricing.js +120 -0
- package/dist/cli/backend/src/services/monitoring/model-pricing.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +25 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +45 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts +10 -1
- package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -1
- package/dist/cli/backend/src/services/open-items/open-item-extractor.js +86 -5
- package/dist/cli/backend/src/services/open-items/open-item-extractor.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts +13 -2
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js +19 -5
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
- package/dist/cli/backend/src/services/spend/spend-cap.gate.d.ts +64 -0
- package/dist/cli/backend/src/services/spend/spend-cap.gate.d.ts.map +1 -0
- package/dist/cli/backend/src/services/spend/spend-cap.gate.js +71 -0
- package/dist/cli/backend/src/services/spend/spend-cap.gate.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +38 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +73 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/work-item-usage.d.ts +44 -0
- package/dist/cli/backend/src/services/task-pool/work-item-usage.d.ts.map +1 -0
- package/dist/cli/backend/src/services/task-pool/work-item-usage.js +37 -0
- package/dist/cli/backend/src/services/task-pool/work-item-usage.js.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.js +11 -14
- package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/cli/backend/src/types/decision.types.d.ts +5 -1
- package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.d.ts +9 -1
- package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/open-item.types.d.ts +5 -1
- package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/open-item.types.js +1 -1
- package/dist/cli/backend/src/types/v2/open-item.types.js.map +1 -1
- package/frontend/dist/assets/{index-1ee8a9a2.js → index-15c2faf2.js} +279 -279
- package/frontend/dist/assets/{index-a79c7852.css → index-20a67829.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spend cap gate — the process-wide hook the delivery and wake paths ask
|
|
3
|
+
* "may this agent start a new turn?". Kept apart from the service so the
|
|
4
|
+
* hot paths (agent registration, the orc queue processor, the owner-message
|
|
5
|
+
* watchdog) import a tiny module with no dependencies of its own.
|
|
6
|
+
*
|
|
7
|
+
* specs/2026-10-02-spend-cap.md
|
|
8
|
+
*
|
|
9
|
+
* @module services/spend/spend-cap.gate
|
|
10
|
+
*/
|
|
11
|
+
let gate = null;
|
|
12
|
+
/**
|
|
13
|
+
* Install (or clear) the gate.
|
|
14
|
+
*
|
|
15
|
+
* @param next - Gate, or null
|
|
16
|
+
*/
|
|
17
|
+
export function setSpendCapGate(next) {
|
|
18
|
+
gate = next;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The stop in force for a session. Never throws: a broken gate lets the
|
|
22
|
+
* agent run rather than silently dropping its work.
|
|
23
|
+
*
|
|
24
|
+
* @param session - Agent session
|
|
25
|
+
* @returns Stop, or null
|
|
26
|
+
*/
|
|
27
|
+
export function spendCapStopOf(session) {
|
|
28
|
+
try {
|
|
29
|
+
return gate?.stopOf(session) ?? null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Owner-facing name of a session.
|
|
37
|
+
*
|
|
38
|
+
* @param session - Agent session
|
|
39
|
+
* @returns Name (the session name when unknown)
|
|
40
|
+
*/
|
|
41
|
+
export function spendCapNameOf(session) {
|
|
42
|
+
try {
|
|
43
|
+
return gate?.displayNameOf?.(session) || session;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return session;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* USD for owner text.
|
|
51
|
+
*
|
|
52
|
+
* @param usd - Amount
|
|
53
|
+
* @returns e.g. `$5.00`
|
|
54
|
+
*/
|
|
55
|
+
export function formatUsd(usd) {
|
|
56
|
+
return `$${(Math.round(usd * 100) / 100).toFixed(2)}`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The one-line reason, e.g. "Orc hit its daily spend cap ($5.00)".
|
|
60
|
+
*
|
|
61
|
+
* @param stop - The stop
|
|
62
|
+
* @param name - Owner-facing name (default: looked up)
|
|
63
|
+
* @returns Reason text
|
|
64
|
+
*/
|
|
65
|
+
export function spendCapReason(stop, name = spendCapNameOf(stop.session)) {
|
|
66
|
+
if (stop.scope === 'total') {
|
|
67
|
+
return `${name} is stopped: all agents together hit the daily total spend cap (${formatUsd(stop.capUsd)})`;
|
|
68
|
+
}
|
|
69
|
+
return `${name} hit its daily spend cap (${formatUsd(stop.capUsd)})`;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=spend-cap.gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-cap.gate.js","sourceRoot":"","sources":["../../../../../../backend/src/services/spend/spend-cap.gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,IAAI,IAAI,GAAwB,IAAI,CAAC;AAErC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAyB;IACvD,IAAI,GAAG,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAe,EAAE,OAAe,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;IACzF,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,GAAG,IAAI,mEAAmE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7G,CAAC;IACD,OAAO,GAAG,IAAI,6BAA6B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-agent daily spend cap with a hard stop.
|
|
3
|
+
*
|
|
4
|
+
* - Caps are the owner's own limits (unlike the runtime fallback, which
|
|
5
|
+
* reacts to a provider's usage limit). All are OFF until the owner sets
|
|
6
|
+
* one: a default per-agent cap, per-agent overrides, and an optional
|
|
7
|
+
* all-agents daily total.
|
|
8
|
+
* - At {@link SPEND_CAP_CONSTANTS.WARN_FRACTION} of a cap the owner gets ONE
|
|
9
|
+
* heads-up.
|
|
10
|
+
* - At 100% the agent is hard-stopped: {@link stopOf} answers the delivery
|
|
11
|
+
* and wake gates, so no new turn starts (the current one may finish) and
|
|
12
|
+
* messages stay queued. The owner gets ONE decision card: "Raise to $Y
|
|
13
|
+
* today" / "Keep stopped".
|
|
14
|
+
* - Local midnight resets everything; raises last for the day they were
|
|
15
|
+
* made. When a stop lifts (midnight, raise, cap change) the queued
|
|
16
|
+
* messages are released.
|
|
17
|
+
*
|
|
18
|
+
* Spend comes from {@link SpendLedger} (the shared token ledger and its one
|
|
19
|
+
* cost computation).
|
|
20
|
+
*
|
|
21
|
+
* specs/2026-10-02-spend-cap.md
|
|
22
|
+
*
|
|
23
|
+
* @module services/spend/spend-cap.service
|
|
24
|
+
*/
|
|
25
|
+
import type { OwnerDecision } from '../../types/decision.types.js';
|
|
26
|
+
import type { SystemAskInput } from '../decisions/decision.service.js';
|
|
27
|
+
import { type SpendCapGate, type SpendStop } from './spend-cap.gate.js';
|
|
28
|
+
import { type SpendLedger, type SpendSummary } from './spend-ledger.service.js';
|
|
29
|
+
import { type SpendCapConfig, type SpendCapStoreLike } from './spend-cap.store.js';
|
|
30
|
+
/** Minimal logger. */
|
|
31
|
+
export interface SpendCapLogger {
|
|
32
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
33
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
34
|
+
}
|
|
35
|
+
/** The decision-card calls the service makes. */
|
|
36
|
+
export interface SpendCapDecisions {
|
|
37
|
+
askSystem(input: SystemAskInput): Promise<OwnerDecision>;
|
|
38
|
+
replyInThread(id: string, text: string): Promise<boolean>;
|
|
39
|
+
}
|
|
40
|
+
/** Collaborators. */
|
|
41
|
+
export interface SpendCapServiceDeps {
|
|
42
|
+
store: SpendCapStoreLike;
|
|
43
|
+
ledger: Pick<SpendLedger, 'spentToday' | 'totalToday' | 'summarize' | 'invalidate'>;
|
|
44
|
+
/** One line to the owner (Slack DM from this machine's orc bot); false/throw = not sent */
|
|
45
|
+
notifyOwner: (text: string) => Promise<unknown>;
|
|
46
|
+
/** Decision cards (null before they are wired: the stop is then a plain notice) */
|
|
47
|
+
decisions?: () => SpendCapDecisions | null;
|
|
48
|
+
/** Owner-facing name of a session ("Orc", "Ella") */
|
|
49
|
+
displayNameOf?: (session: string) => string;
|
|
50
|
+
/** Sessions the owner configured (orc + team members), for the caps view */
|
|
51
|
+
knownSessions?: () => Promise<string[]>;
|
|
52
|
+
/** Stops lifted: deliver what was queued for these sessions */
|
|
53
|
+
onReleased?: (sessions: string[]) => Promise<void>;
|
|
54
|
+
now?: () => Date;
|
|
55
|
+
logger?: SpendCapLogger;
|
|
56
|
+
}
|
|
57
|
+
/** Body of `PUT /api/system/spend/caps`. */
|
|
58
|
+
export interface SpendCapPatch {
|
|
59
|
+
/** Default per-agent cap (USD); null turns it off */
|
|
60
|
+
defaultAgentCapUsd?: number | null;
|
|
61
|
+
/** All-agents total cap (USD); null turns it off */
|
|
62
|
+
totalCapUsd?: number | null;
|
|
63
|
+
/** Session → cap (USD), `null` = no cap for this agent, `"default"` = drop the override */
|
|
64
|
+
agents?: Record<string, number | null | 'default'>;
|
|
65
|
+
}
|
|
66
|
+
/** A rejected cap change. */
|
|
67
|
+
export declare class SpendCapError extends Error {
|
|
68
|
+
readonly status: number;
|
|
69
|
+
/**
|
|
70
|
+
* @param status - HTTP status
|
|
71
|
+
* @param message - Owner-facing reason
|
|
72
|
+
*/
|
|
73
|
+
constructor(status: number, message: string);
|
|
74
|
+
}
|
|
75
|
+
/** One agent in the view. */
|
|
76
|
+
export interface SpendCapAgentView {
|
|
77
|
+
session: string;
|
|
78
|
+
name: string;
|
|
79
|
+
runtimes: string[];
|
|
80
|
+
todayUsd: number;
|
|
81
|
+
windowUsd: number;
|
|
82
|
+
daily: number[];
|
|
83
|
+
/** Cap in force today (USD), null = none */
|
|
84
|
+
capUsd: number | null;
|
|
85
|
+
/** Where the cap comes from */
|
|
86
|
+
capSource: 'override' | 'default' | 'raised' | 'none' | 'exempt';
|
|
87
|
+
/** Stopped right now, and why */
|
|
88
|
+
stopped: boolean;
|
|
89
|
+
stopReason?: string;
|
|
90
|
+
}
|
|
91
|
+
/** What `GET /api/system/spend` returns. */
|
|
92
|
+
export interface SpendView extends Omit<SpendSummary, 'agents'> {
|
|
93
|
+
agents: SpendCapAgentView[];
|
|
94
|
+
caps: SpendCapConfig;
|
|
95
|
+
/** Raises in force today: target → USD */
|
|
96
|
+
raisedToday: Record<string, number>;
|
|
97
|
+
/** Total cap in force today (raise included), null = off */
|
|
98
|
+
totalCapTodayUsd: number | null;
|
|
99
|
+
/** Suggested default per-agent cap: last window's p90 agent-day, rounded up to whole dollars (null = no data) */
|
|
100
|
+
suggestedAgentCapUsd: number | null;
|
|
101
|
+
/** All agents together stopped by the total cap */
|
|
102
|
+
totalStopped: boolean;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The "Raise to $Y today" amount: the cap times RAISE_FACTOR, rounded up to
|
|
106
|
+
* whole dollars, and always above what was already spent.
|
|
107
|
+
*
|
|
108
|
+
* @param capUsd - Cap in force
|
|
109
|
+
* @param spentUsd - Spent today
|
|
110
|
+
* @returns USD
|
|
111
|
+
*/
|
|
112
|
+
export declare function suggestedRaise(capUsd: number, spentUsd: number): number;
|
|
113
|
+
/**
|
|
114
|
+
* Read the amount out of a "Raise to $Y today" option label.
|
|
115
|
+
*
|
|
116
|
+
* @param label - Option label
|
|
117
|
+
* @returns USD, or null when the label is not a raise
|
|
118
|
+
*/
|
|
119
|
+
export declare function raiseAmountOf(label: string | undefined): number | null;
|
|
120
|
+
/**
|
|
121
|
+
* Per-agent daily spend cap service.
|
|
122
|
+
*/
|
|
123
|
+
export declare class SpendCapService implements SpendCapGate {
|
|
124
|
+
private readonly deps;
|
|
125
|
+
private file;
|
|
126
|
+
private readonly now;
|
|
127
|
+
private readonly logger;
|
|
128
|
+
private timer;
|
|
129
|
+
/** Sessions stopped at the last evaluation (to release them when the stop lifts) */
|
|
130
|
+
private lastStopped;
|
|
131
|
+
/** Evaluation passes run one after another */
|
|
132
|
+
private chain;
|
|
133
|
+
private queuedPass;
|
|
134
|
+
/**
|
|
135
|
+
* @param deps - Collaborators
|
|
136
|
+
*/
|
|
137
|
+
constructor(deps: SpendCapServiceDeps);
|
|
138
|
+
/** Start the enforcement tick. */
|
|
139
|
+
start(): void;
|
|
140
|
+
/** Stop the tick. */
|
|
141
|
+
stop(): void;
|
|
142
|
+
/** @returns The owner's caps (a copy) */
|
|
143
|
+
getConfig(): SpendCapConfig;
|
|
144
|
+
/**
|
|
145
|
+
* Change caps. Takes effect at once (a stop can lift or start).
|
|
146
|
+
*
|
|
147
|
+
* @param patch - Changes
|
|
148
|
+
* @returns The new caps
|
|
149
|
+
* @throws SpendCapError on a bad value
|
|
150
|
+
*/
|
|
151
|
+
setCaps(patch: SpendCapPatch): Promise<SpendCapConfig>;
|
|
152
|
+
/**
|
|
153
|
+
* Lift a cap for today only.
|
|
154
|
+
*
|
|
155
|
+
* @param target - Agent session, or `*` for the all-agents total
|
|
156
|
+
* @param usd - New cap for today (must be above today's spend)
|
|
157
|
+
* @returns The new cap for today
|
|
158
|
+
* @throws SpendCapError when the amount is not above today's spend
|
|
159
|
+
*/
|
|
160
|
+
raiseToday(target: string, usd: unknown): Promise<number>;
|
|
161
|
+
/**
|
|
162
|
+
* The stop in force for a session (the delivery / wake gate). Synchronous
|
|
163
|
+
* and live: it reads today's spend now, not at the last tick.
|
|
164
|
+
*
|
|
165
|
+
* @param session - Agent session
|
|
166
|
+
* @returns Stop, or null when the agent may run
|
|
167
|
+
*/
|
|
168
|
+
stopOf(session: string): SpendStop | null;
|
|
169
|
+
/**
|
|
170
|
+
* Owner-facing name.
|
|
171
|
+
*
|
|
172
|
+
* @param session - Agent session
|
|
173
|
+
* @returns Name
|
|
174
|
+
*/
|
|
175
|
+
displayNameOf(session: string): string;
|
|
176
|
+
/**
|
|
177
|
+
* Cap in force today for a target, and where it comes from.
|
|
178
|
+
*
|
|
179
|
+
* @param target - Agent session, or `*`
|
|
180
|
+
* @returns Cap (null = none) and source
|
|
181
|
+
*/
|
|
182
|
+
capOf(target: string): {
|
|
183
|
+
capUsd: number | null;
|
|
184
|
+
source: SpendCapAgentView['capSource'];
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Spend plus caps for the API / Settings panel.
|
|
188
|
+
*
|
|
189
|
+
* @param days - Window
|
|
190
|
+
* @returns View
|
|
191
|
+
*/
|
|
192
|
+
view(days?: number): Promise<SpendView>;
|
|
193
|
+
/**
|
|
194
|
+
* One enforcement pass: day roll, 80% notices, stop announcements (one
|
|
195
|
+
* card per stop), and releasing agents whose stop lifted. Passes run
|
|
196
|
+
* one at a time; a call during a pass gets another pass after it.
|
|
197
|
+
*/
|
|
198
|
+
evaluate(): Promise<void>;
|
|
199
|
+
/**
|
|
200
|
+
* React to a settled "cap reached" card (decision kind `spend_cap`).
|
|
201
|
+
*
|
|
202
|
+
* @param d - The settled decision
|
|
203
|
+
* @returns Always null (nobody else is told)
|
|
204
|
+
*/
|
|
205
|
+
onSettled(d: OwnerDecision): Promise<null>;
|
|
206
|
+
private evaluateOnce;
|
|
207
|
+
private checkThresholds;
|
|
208
|
+
private announceStop;
|
|
209
|
+
private anyCap;
|
|
210
|
+
private computeStop;
|
|
211
|
+
private stopKey;
|
|
212
|
+
private scheduleEvaluate;
|
|
213
|
+
/** Reset today's bookkeeping when the local day changed. */
|
|
214
|
+
private rollDay;
|
|
215
|
+
private nextMidnight;
|
|
216
|
+
private nameOf;
|
|
217
|
+
private notify;
|
|
218
|
+
private reply;
|
|
219
|
+
private persist;
|
|
220
|
+
}
|
|
221
|
+
/** @returns The backend's service, or null before it is wired */
|
|
222
|
+
export declare function getSpendCapService(): SpendCapService | null;
|
|
223
|
+
/** @param service - Instance (null clears) */
|
|
224
|
+
export declare function setSpendCapService(service: SpendCapService | null): void;
|
|
225
|
+
//# sourceMappingURL=spend-cap.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-cap.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/spend/spend-cap.service.ts"],"names":[],"mappings":"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"}
|