@jungjaehoon/mama-os 0.28.6 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/agent-loop.d.ts +0 -4
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +33 -10
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +53 -3
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/code-act/tool-policy.d.ts.map +1 -1
- package/dist/agent/code-act/tool-policy.js +5 -0
- package/dist/agent/code-act/tool-policy.js.map +1 -1
- package/dist/agent/codex-auth.d.ts +0 -1
- package/dist/agent/codex-auth.d.ts.map +1 -1
- package/dist/agent/codex-auth.js +0 -4
- package/dist/agent/codex-auth.js.map +1 -1
- package/dist/agent/codex-home.d.ts +0 -2
- package/dist/agent/codex-home.d.ts.map +1 -1
- package/dist/agent/codex-home.js +0 -66
- package/dist/agent/codex-home.js.map +1 -1
- package/dist/agent/context-compile-service.d.ts +9 -0
- package/dist/agent/context-compile-service.d.ts.map +1 -1
- package/dist/agent/context-compile-service.js +6 -0
- package/dist/agent/context-compile-service.js.map +1 -1
- package/dist/agent/context-prompt-builder.d.ts +0 -6
- package/dist/agent/context-prompt-builder.d.ts.map +1 -1
- package/dist/agent/context-prompt-builder.js +0 -131
- package/dist/agent/context-prompt-builder.js.map +1 -1
- package/dist/agent/contract-extractor.d.ts +0 -4
- package/dist/agent/contract-extractor.d.ts.map +1 -1
- package/dist/agent/contract-extractor.js +0 -68
- package/dist/agent/contract-extractor.js.map +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +20 -15
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +236 -90
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +7 -4
- package/dist/agent/skill-loader.d.ts +0 -7
- package/dist/agent/skill-loader.d.ts.map +1 -1
- package/dist/agent/skill-loader.js +0 -86
- package/dist/agent/skill-loader.js.map +1 -1
- package/dist/agent/token-estimator.d.ts +0 -8
- package/dist/agent/token-estimator.d.ts.map +1 -1
- package/dist/agent/token-estimator.js +0 -14
- package/dist/agent/token-estimator.js.map +1 -1
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +23 -5
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/agent/types.d.ts +27 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/agent-graph-handler.d.ts +9 -0
- package/dist/api/agent-graph-handler.d.ts.map +1 -1
- package/dist/api/agent-graph-handler.js +27 -1
- package/dist/api/agent-graph-handler.js.map +1 -1
- package/dist/api/entity-audit-handler.d.ts +1 -2
- package/dist/api/entity-audit-handler.d.ts.map +1 -1
- package/dist/api/entity-audit-handler.js +0 -5
- package/dist/api/entity-audit-handler.js.map +1 -1
- package/dist/api/index.d.ts +1 -9
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +4 -17
- package/dist/api/index.js.map +1 -1
- package/dist/api/intelligence-handler.d.ts +0 -5
- package/dist/api/intelligence-handler.d.ts.map +1 -1
- package/dist/api/intelligence-handler.js +0 -15
- package/dist/api/intelligence-handler.js.map +1 -1
- package/dist/api/types.d.ts +1 -5
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js +0 -14
- package/dist/api/types.js.map +1 -1
- package/dist/cli/commands/start.d.ts +117 -3
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +223 -62
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/config/config-manager.d.ts +0 -5
- package/dist/cli/config/config-manager.d.ts.map +1 -1
- package/dist/cli/config/config-manager.js +0 -29
- package/dist/cli/config/config-manager.js.map +1 -1
- package/dist/cli/config/types.d.ts.map +1 -1
- package/dist/cli/config/types.js +3 -0
- package/dist/cli/config/types.js.map +1 -1
- package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-routes-init.js +32 -5
- package/dist/cli/runtime/api-routes-init.js.map +1 -1
- package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-server-init.js +2 -0
- package/dist/cli/runtime/api-server-init.js.map +1 -1
- package/dist/cli/runtime/gateway-init.d.ts +1 -1
- package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
- package/dist/cli/runtime/gateway-init.js +11 -38
- package/dist/cli/runtime/gateway-init.js.map +1 -1
- package/dist/cli/runtime/gateway-wiring.d.ts.map +1 -1
- package/dist/cli/runtime/gateway-wiring.js +6 -120
- package/dist/cli/runtime/gateway-wiring.js.map +1 -1
- package/dist/cli/utils/pid-manager.d.ts +0 -10
- package/dist/cli/utils/pid-manager.d.ts.map +1 -1
- package/dist/cli/utils/pid-manager.js +0 -26
- package/dist/cli/utils/pid-manager.js.map +1 -1
- package/dist/connectors/framework/polling-scheduler.d.ts +33 -1
- package/dist/connectors/framework/polling-scheduler.d.ts.map +1 -1
- package/dist/connectors/framework/polling-scheduler.js +46 -40
- package/dist/connectors/framework/polling-scheduler.js.map +1 -1
- package/dist/connectors/trello/query-tools.d.ts +32 -5
- package/dist/connectors/trello/query-tools.d.ts.map +1 -1
- package/dist/connectors/trello/query-tools.js +56 -17
- package/dist/connectors/trello/query-tools.js.map +1 -1
- package/dist/db/agent-store.d.ts +0 -4
- package/dist/db/agent-store.d.ts.map +1 -1
- package/dist/db/agent-store.js +0 -65
- package/dist/db/agent-store.js.map +1 -1
- package/dist/envelope/enforcer.d.ts.map +1 -1
- package/dist/envelope/enforcer.js +10 -1
- package/dist/envelope/enforcer.js.map +1 -1
- package/dist/envelope/index.d.ts +0 -1
- package/dist/envelope/index.d.ts.map +1 -1
- package/dist/envelope/index.js +0 -1
- package/dist/envelope/index.js.map +1 -1
- package/dist/envelope/signature.d.ts +0 -1
- package/dist/envelope/signature.d.ts.map +1 -1
- package/dist/envelope/signature.js +0 -7
- package/dist/envelope/signature.js.map +1 -1
- package/dist/envelope/tool-connector-scope.d.ts +35 -0
- package/dist/envelope/tool-connector-scope.d.ts.map +1 -0
- package/dist/envelope/tool-connector-scope.js +57 -0
- package/dist/envelope/tool-connector-scope.js.map +1 -0
- package/dist/evidence/effects.d.ts +107 -0
- package/dist/evidence/effects.d.ts.map +1 -0
- package/dist/evidence/effects.js +281 -0
- package/dist/evidence/effects.js.map +1 -0
- package/dist/evidence/read.d.ts +75 -0
- package/dist/evidence/read.d.ts.map +1 -0
- package/dist/evidence/read.js +105 -0
- package/dist/evidence/read.js.map +1 -0
- package/dist/gateways/base-gateway.d.ts +23 -3
- package/dist/gateways/base-gateway.d.ts.map +1 -1
- package/dist/gateways/base-gateway.js +15 -2
- package/dist/gateways/base-gateway.js.map +1 -1
- package/dist/gateways/discord.d.ts +4 -16
- package/dist/gateways/discord.d.ts.map +1 -1
- package/dist/gateways/discord.js +22 -189
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/index.d.ts +2 -1
- package/dist/gateways/index.d.ts.map +1 -1
- package/dist/gateways/message-router.d.ts +13 -20
- package/dist/gateways/message-router.d.ts.map +1 -1
- package/dist/gateways/message-router.js +32 -3
- package/dist/gateways/message-router.js.map +1 -1
- package/dist/gateways/slack.d.ts +2 -12
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +6 -220
- package/dist/gateways/slack.js.map +1 -1
- package/dist/gateways/telegram.d.ts +2 -2
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +3 -2
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/gateways/turn-contract.d.ts +104 -0
- package/dist/gateways/turn-contract.d.ts.map +1 -0
- package/dist/{memory/consult-contract.js → gateways/turn-contract.js} +1 -1
- package/dist/gateways/turn-contract.js.map +1 -0
- package/dist/memory/provenance-live.d.ts +111 -0
- package/dist/memory/provenance-live.d.ts.map +1 -0
- package/dist/memory/provenance-live.js +381 -0
- package/dist/memory/provenance-live.js.map +1 -0
- package/dist/memory/provenance-resolver.d.ts +184 -0
- package/dist/memory/provenance-resolver.d.ts.map +1 -0
- package/dist/memory/provenance-resolver.js +152 -0
- package/dist/memory/provenance-resolver.js.map +1 -0
- package/dist/multi-agent/agent-event-bus.d.ts +1 -0
- package/dist/multi-agent/agent-event-bus.d.ts.map +1 -1
- package/dist/multi-agent/bmad-templates.d.ts +0 -18
- package/dist/multi-agent/bmad-templates.d.ts.map +1 -1
- package/dist/multi-agent/bmad-templates.js +0 -127
- package/dist/multi-agent/bmad-templates.js.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.js +3 -3
- package/dist/operator/board-reconcile.d.ts +2 -3
- package/dist/operator/board-reconcile.d.ts.map +1 -1
- package/dist/operator/board-reconcile.js +18 -32
- package/dist/operator/board-reconcile.js.map +1 -1
- package/dist/operator/changes-projection.d.ts +70 -0
- package/dist/operator/changes-projection.d.ts.map +1 -0
- package/dist/operator/changes-projection.js +109 -0
- package/dist/operator/changes-projection.js.map +1 -0
- package/dist/operator/external-correlation.d.ts +94 -0
- package/dist/operator/external-correlation.d.ts.map +1 -0
- package/dist/operator/external-correlation.js +177 -0
- package/dist/operator/external-correlation.js.map +1 -0
- package/dist/operator/operator-trigger-loop.d.ts +9 -1
- package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
- package/dist/operator/operator-trigger-loop.js +8 -4
- package/dist/operator/operator-trigger-loop.js.map +1 -1
- package/dist/operator/provenance-lookup.d.ts +18 -0
- package/dist/operator/provenance-lookup.d.ts.map +1 -0
- package/dist/operator/provenance-lookup.js +54 -0
- package/dist/operator/provenance-lookup.js.map +1 -0
- package/dist/operator/report-carry.d.ts +18 -1
- package/dist/operator/report-carry.d.ts.map +1 -1
- package/dist/operator/report-carry.js +22 -3
- package/dist/operator/report-carry.js.map +1 -1
- package/dist/operator/report-run.d.ts +31 -0
- package/dist/operator/report-run.d.ts.map +1 -1
- package/dist/operator/report-run.js +140 -22
- package/dist/operator/report-run.js.map +1 -1
- package/dist/operator/task-ledger.d.ts +84 -2
- package/dist/operator/task-ledger.d.ts.map +1 -1
- package/dist/operator/task-ledger.js +274 -31
- package/dist/operator/task-ledger.js.map +1 -1
- package/dist/operator/worker-run.js +1 -1
- package/dist/operator/worker-run.js.map +1 -1
- package/dist/operator/workorder-hooks.d.ts +79 -4
- package/dist/operator/workorder-hooks.d.ts.map +1 -1
- package/dist/operator/workorder-hooks.js +152 -20
- package/dist/operator/workorder-hooks.js.map +1 -1
- package/dist/operator/workorder-publishers.d.ts +2 -0
- package/dist/operator/workorder-publishers.d.ts.map +1 -1
- package/dist/operator/workorder-publishers.js +8 -1
- package/dist/operator/workorder-publishers.js.map +1 -1
- package/dist/utils/untrusted-content.d.ts +11 -0
- package/dist/utils/untrusted-content.d.ts.map +1 -1
- package/dist/utils/untrusted-content.js +20 -0
- package/dist/utils/untrusted-content.js.map +1 -1
- package/package.json +4 -3
- package/scripts/backfill-channel-keys.ts +451 -0
- package/dist/agent/auto-recall.d.ts +0 -48
- package/dist/agent/auto-recall.d.ts.map +0 -1
- package/dist/agent/auto-recall.js +0 -192
- package/dist/agent/auto-recall.js.map +0 -1
- package/dist/agent/claude-client.d.ts +0 -50
- package/dist/agent/claude-client.d.ts.map +0 -1
- package/dist/agent/claude-client.js +0 -219
- package/dist/agent/claude-client.js.map +0 -1
- package/dist/agent/delegation-executor.d.ts +0 -49
- package/dist/agent/delegation-executor.d.ts.map +0 -1
- package/dist/agent/delegation-executor.js +0 -692
- package/dist/agent/delegation-executor.js.map +0 -1
- package/dist/agent/mcp-executor.d.ts +0 -60
- package/dist/agent/mcp-executor.d.ts.map +0 -1
- package/dist/agent/mcp-executor.js +0 -190
- package/dist/agent/mcp-executor.js.map +0 -1
- package/dist/agent/process-tree.d.ts +0 -6
- package/dist/agent/process-tree.d.ts.map +0 -1
- package/dist/agent/process-tree.js +0 -21
- package/dist/agent/process-tree.js.map +0 -1
- package/dist/agent/streaming-callback-manager.d.ts +0 -85
- package/dist/agent/streaming-callback-manager.d.ts.map +0 -1
- package/dist/agent/streaming-callback-manager.js +0 -103
- package/dist/agent/streaming-callback-manager.js.map +0 -1
- package/dist/agent/token-budget.d.ts +0 -49
- package/dist/agent/token-budget.d.ts.map +0 -1
- package/dist/agent/token-budget.js +0 -92
- package/dist/agent/token-budget.js.map +0 -1
- package/dist/connectors/kagemusha/history-compiler.d.ts +0 -18
- package/dist/connectors/kagemusha/history-compiler.d.ts.map +0 -1
- package/dist/connectors/kagemusha/history-compiler.js +0 -35
- package/dist/connectors/kagemusha/history-compiler.js.map +0 -1
- package/dist/db/migrations/wiki-artifacts.d.ts +0 -3
- package/dist/db/migrations/wiki-artifacts.d.ts.map +0 -1
- package/dist/db/migrations/wiki-artifacts.js +0 -24
- package/dist/db/migrations/wiki-artifacts.js.map +0 -1
- package/dist/envelope/subset.d.ts +0 -9
- package/dist/envelope/subset.d.ts.map +0 -1
- package/dist/envelope/subset.js +0 -67
- package/dist/envelope/subset.js.map +0 -1
- package/dist/memory/consult-contract.d.ts +0 -8
- package/dist/memory/consult-contract.d.ts.map +0 -1
- package/dist/memory/consult-contract.js.map +0 -1
- package/dist/multi-agent/agent-message-queue.d.ts +0 -104
- package/dist/multi-agent/agent-message-queue.d.ts.map +0 -1
- package/dist/multi-agent/agent-message-queue.js +0 -227
- package/dist/multi-agent/agent-message-queue.js.map +0 -1
- package/dist/multi-agent/background-task-manager.d.ts +0 -248
- package/dist/multi-agent/background-task-manager.d.ts.map +0 -1
- package/dist/multi-agent/background-task-manager.js +0 -415
- package/dist/multi-agent/background-task-manager.js.map +0 -1
- package/dist/multi-agent/category-router.d.ts +0 -56
- package/dist/multi-agent/category-router.d.ts.map +0 -1
- package/dist/multi-agent/category-router.js +0 -99
- package/dist/multi-agent/category-router.js.map +0 -1
- package/dist/multi-agent/council-engine.d.ts +0 -60
- package/dist/multi-agent/council-engine.d.ts.map +0 -1
- package/dist/multi-agent/council-engine.js +0 -284
- package/dist/multi-agent/council-engine.js.map +0 -1
- package/dist/multi-agent/delegation-format-validator.d.ts +0 -22
- package/dist/multi-agent/delegation-format-validator.d.ts.map +0 -1
- package/dist/multi-agent/delegation-format-validator.js +0 -31
- package/dist/multi-agent/delegation-format-validator.js.map +0 -1
- package/dist/multi-agent/delegation-manager.d.ts +0 -128
- package/dist/multi-agent/delegation-manager.d.ts.map +0 -1
- package/dist/multi-agent/delegation-manager.js +0 -276
- package/dist/multi-agent/delegation-manager.js.map +0 -1
- package/dist/multi-agent/i18n-messages.d.ts +0 -35
- package/dist/multi-agent/i18n-messages.d.ts.map +0 -1
- package/dist/multi-agent/i18n-messages.js +0 -54
- package/dist/multi-agent/i18n-messages.js.map +0 -1
- package/dist/multi-agent/index.d.ts +0 -31
- package/dist/multi-agent/index.d.ts.map +0 -1
- package/dist/multi-agent/index.js +0 -46
- package/dist/multi-agent/index.js.map +0 -1
- package/dist/multi-agent/multi-agent-base.d.ts +0 -223
- package/dist/multi-agent/multi-agent-base.d.ts.map +0 -1
- package/dist/multi-agent/multi-agent-base.js +0 -592
- package/dist/multi-agent/multi-agent-base.js.map +0 -1
- package/dist/multi-agent/multi-agent-discord.d.ts +0 -142
- package/dist/multi-agent/multi-agent-discord.d.ts.map +0 -1
- package/dist/multi-agent/multi-agent-discord.js +0 -1235
- package/dist/multi-agent/multi-agent-discord.js.map +0 -1
- package/dist/multi-agent/multi-agent-slack.d.ts +0 -146
- package/dist/multi-agent/multi-agent-slack.d.ts.map +0 -1
- package/dist/multi-agent/multi-agent-slack.js +0 -953
- package/dist/multi-agent/multi-agent-slack.js.map +0 -1
- package/dist/multi-agent/multi-bot-manager.d.ts +0 -119
- package/dist/multi-agent/multi-bot-manager.d.ts.map +0 -1
- package/dist/multi-agent/multi-bot-manager.js +0 -449
- package/dist/multi-agent/multi-bot-manager.js.map +0 -1
- package/dist/multi-agent/orchestrator.d.ts +0 -110
- package/dist/multi-agent/orchestrator.d.ts.map +0 -1
- package/dist/multi-agent/orchestrator.js +0 -436
- package/dist/multi-agent/orchestrator.js.map +0 -1
- package/dist/multi-agent/rate-limiter.d.ts +0 -76
- package/dist/multi-agent/rate-limiter.d.ts.map +0 -1
- package/dist/multi-agent/rate-limiter.js +0 -128
- package/dist/multi-agent/rate-limiter.js.map +0 -1
- package/dist/multi-agent/shared-context.d.ts +0 -127
- package/dist/multi-agent/shared-context.d.ts.map +0 -1
- package/dist/multi-agent/shared-context.js +0 -239
- package/dist/multi-agent/shared-context.js.map +0 -1
- package/dist/multi-agent/slack-config-validator.d.ts +0 -42
- package/dist/multi-agent/slack-config-validator.d.ts.map +0 -1
- package/dist/multi-agent/slack-config-validator.js +0 -194
- package/dist/multi-agent/slack-config-validator.js.map +0 -1
- package/dist/multi-agent/slack-multi-bot-manager.d.ts +0 -143
- package/dist/multi-agent/slack-multi-bot-manager.d.ts.map +0 -1
- package/dist/multi-agent/slack-multi-bot-manager.js +0 -413
- package/dist/multi-agent/slack-multi-bot-manager.js.map +0 -1
- package/dist/multi-agent/swarm/swarm-anti-pattern-detector.d.ts +0 -98
- package/dist/multi-agent/swarm/swarm-anti-pattern-detector.d.ts.map +0 -1
- package/dist/multi-agent/swarm/swarm-anti-pattern-detector.js +0 -225
- package/dist/multi-agent/swarm/swarm-anti-pattern-detector.js.map +0 -1
- package/dist/multi-agent/swarm/swarm-db.d.ts +0 -175
- package/dist/multi-agent/swarm/swarm-db.d.ts.map +0 -1
- package/dist/multi-agent/swarm/swarm-db.js +0 -313
- package/dist/multi-agent/swarm/swarm-db.js.map +0 -1
- package/dist/multi-agent/swarm/swarm-event-reporter.d.ts +0 -116
- package/dist/multi-agent/swarm/swarm-event-reporter.d.ts.map +0 -1
- package/dist/multi-agent/swarm/swarm-event-reporter.js +0 -243
- package/dist/multi-agent/swarm/swarm-event-reporter.js.map +0 -1
- package/dist/multi-agent/swarm/swarm-mama-adapter.d.ts +0 -57
- package/dist/multi-agent/swarm/swarm-mama-adapter.d.ts.map +0 -1
- package/dist/multi-agent/swarm/swarm-mama-adapter.js +0 -87
- package/dist/multi-agent/swarm/swarm-mama-adapter.js.map +0 -1
- package/dist/multi-agent/swarm/swarm-manager.d.ts +0 -122
- package/dist/multi-agent/swarm/swarm-manager.d.ts.map +0 -1
- package/dist/multi-agent/swarm/swarm-manager.js +0 -199
- package/dist/multi-agent/swarm/swarm-manager.js.map +0 -1
- package/dist/multi-agent/swarm/swarm-task-learner.d.ts +0 -104
- package/dist/multi-agent/swarm/swarm-task-learner.d.ts.map +0 -1
- package/dist/multi-agent/swarm/swarm-task-learner.js +0 -211
- package/dist/multi-agent/swarm/swarm-task-learner.js.map +0 -1
- package/dist/multi-agent/swarm/swarm-task-runner.d.ts +0 -155
- package/dist/multi-agent/swarm/swarm-task-runner.d.ts.map +0 -1
- package/dist/multi-agent/swarm/swarm-task-runner.js +0 -615
- package/dist/multi-agent/swarm/swarm-task-runner.js.map +0 -1
- package/dist/multi-agent/swarm/wave-engine.d.ts +0 -96
- package/dist/multi-agent/swarm/wave-engine.d.ts.map +0 -1
- package/dist/multi-agent/swarm/wave-engine.js +0 -123
- package/dist/multi-agent/swarm/wave-engine.js.map +0 -1
- package/dist/multi-agent/system-reminder.d.ts +0 -206
- package/dist/multi-agent/system-reminder.d.ts.map +0 -1
- package/dist/multi-agent/system-reminder.js +0 -455
- package/dist/multi-agent/system-reminder.js.map +0 -1
- package/dist/multi-agent/task-continuation.d.ts +0 -74
- package/dist/multi-agent/task-continuation.d.ts.map +0 -1
- package/dist/multi-agent/task-continuation.js +0 -172
- package/dist/multi-agent/task-continuation.js.map +0 -1
- package/dist/multi-agent/ultrawork-state.d.ts +0 -57
- package/dist/multi-agent/ultrawork-state.d.ts.map +0 -1
- package/dist/multi-agent/ultrawork-state.js +0 -191
- package/dist/multi-agent/ultrawork-state.js.map +0 -1
- package/dist/multi-agent/ultrawork.d.ts +0 -152
- package/dist/multi-agent/ultrawork.d.ts.map +0 -1
- package/dist/multi-agent/ultrawork.js +0 -879
- package/dist/multi-agent/ultrawork.js.map +0 -1
- package/dist/multi-agent/work-tracker.d.ts +0 -22
- package/dist/multi-agent/work-tracker.d.ts.map +0 -1
- package/dist/multi-agent/work-tracker.js +0 -45
- package/dist/multi-agent/work-tracker.js.map +0 -1
- package/dist/multi-agent/workflow-engine.d.ts +0 -87
- package/dist/multi-agent/workflow-engine.d.ts.map +0 -1
- package/dist/multi-agent/workflow-engine.js +0 -604
- package/dist/multi-agent/workflow-engine.js.map +0 -1
- package/dist/onboarding/all-tools.d.ts +0 -18
- package/dist/onboarding/all-tools.d.ts.map +0 -1
- package/dist/onboarding/all-tools.js +0 -149
- package/dist/onboarding/all-tools.js.map +0 -1
- package/dist/onboarding/autonomous-discovery-tools.d.ts +0 -23
- package/dist/onboarding/autonomous-discovery-tools.d.ts.map +0 -1
- package/dist/onboarding/autonomous-discovery-tools.js +0 -268
- package/dist/onboarding/autonomous-discovery-tools.js.map +0 -1
- package/dist/onboarding/onboarding-state.d.ts +0 -70
- package/dist/onboarding/onboarding-state.d.ts.map +0 -1
- package/dist/onboarding/onboarding-state.js +0 -183
- package/dist/onboarding/onboarding-state.js.map +0 -1
- package/dist/onboarding/personality-quiz.d.ts +0 -35
- package/dist/onboarding/personality-quiz.d.ts.map +0 -1
- package/dist/onboarding/personality-quiz.js +0 -219
- package/dist/onboarding/personality-quiz.js.map +0 -1
- package/dist/onboarding/phase-5-summary.d.ts +0 -26
- package/dist/onboarding/phase-5-summary.d.ts.map +0 -1
- package/dist/onboarding/phase-5-summary.js +0 -153
- package/dist/onboarding/phase-5-summary.js.map +0 -1
- package/dist/onboarding/phase-6-security.d.ts +0 -33
- package/dist/onboarding/phase-6-security.d.ts.map +0 -1
- package/dist/onboarding/phase-6-security.js +0 -473
- package/dist/onboarding/phase-6-security.js.map +0 -1
- package/dist/onboarding/phase-7-integrations.d.ts +0 -91
- package/dist/onboarding/phase-7-integrations.d.ts.map +0 -1
- package/dist/onboarding/phase-7-integrations.js +0 -725
- package/dist/onboarding/phase-7-integrations.js.map +0 -1
- package/dist/onboarding/phase-8-demo.d.ts +0 -43
- package/dist/onboarding/phase-8-demo.d.ts.map +0 -1
- package/dist/onboarding/phase-8-demo.js +0 -346
- package/dist/onboarding/phase-8-demo.js.map +0 -1
- package/dist/onboarding/phase-9-finalization.d.ts +0 -27
- package/dist/onboarding/phase-9-finalization.d.ts.map +0 -1
- package/dist/onboarding/phase-9-finalization.js +0 -417
- package/dist/onboarding/phase-9-finalization.js.map +0 -1
- package/dist/onboarding/ritual-prompt.d.ts +0 -2
- package/dist/onboarding/ritual-prompt.d.ts.map +0 -1
- package/dist/onboarding/ritual-prompt.js +0 -285
- package/dist/onboarding/ritual-prompt.js.map +0 -1
- package/dist/onboarding/ritual-tools.d.ts +0 -17
- package/dist/onboarding/ritual-tools.d.ts.map +0 -1
- package/dist/onboarding/ritual-tools.js +0 -93
- package/dist/onboarding/ritual-tools.js.map +0 -1
- package/dist/setup/setup-tools.d.ts +0 -13
- package/dist/setup/setup-tools.d.ts.map +0 -1
- package/dist/setup/setup-tools.js +0 -106
- package/dist/setup/setup-tools.js.map +0 -1
- package/dist/utils/slack-input-validator.d.ts +0 -74
- package/dist/utils/slack-input-validator.d.ts.map +0 -1
- package/dist/utils/slack-input-validator.js +0 -275
- package/dist/utils/slack-input-validator.js.map +0 -1
- package/dist/utils/slack-rate-limiter.d.ts +0 -139
- package/dist/utils/slack-rate-limiter.d.ts.map +0 -1
- package/dist/utils/slack-rate-limiter.js +0 -324
- package/dist/utils/slack-rate-limiter.js.map +0 -1
- package/dist/wiki/wiki-compiler.d.ts +0 -13
- package/dist/wiki/wiki-compiler.d.ts.map +0 -1
- package/dist/wiki/wiki-compiler.js +0 -82
- package/dist/wiki/wiki-compiler.js.map +0 -1
|
@@ -1,615 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Swarm Task Runner
|
|
4
|
-
*
|
|
5
|
-
* Orchestrates automated execution of Swarm tasks by:
|
|
6
|
-
* - Polling for pending tasks and executing them on agent processes
|
|
7
|
-
* - Managing task dependencies (depends_on) and file conflict detection
|
|
8
|
-
* - Handling both event-driven (immediate) and polling-based execution
|
|
9
|
-
* - Automatically stopping sessions when complete
|
|
10
|
-
*
|
|
11
|
-
* Features:
|
|
12
|
-
* - Dependency resolution: tasks wait for prerequisite tasks to complete
|
|
13
|
-
* - File conflict warnings: detects when multiple tasks modify same files
|
|
14
|
-
* - Stale lease expiration: recovers from agent crashes
|
|
15
|
-
* - Event emission: task-completed, task-failed, session-complete, file-conflict
|
|
16
|
-
*
|
|
17
|
-
* @module swarm-task-runner
|
|
18
|
-
* @version 1.0
|
|
19
|
-
*/
|
|
20
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
-
}
|
|
26
|
-
Object.defineProperty(o, k2, desc);
|
|
27
|
-
}) : (function(o, m, k, k2) {
|
|
28
|
-
if (k2 === undefined) k2 = k;
|
|
29
|
-
o[k2] = m[k];
|
|
30
|
-
}));
|
|
31
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
-
}) : function(o, v) {
|
|
34
|
-
o["default"] = v;
|
|
35
|
-
});
|
|
36
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
-
var ownKeys = function(o) {
|
|
38
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
-
var ar = [];
|
|
40
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
-
return ar;
|
|
42
|
-
};
|
|
43
|
-
return ownKeys(o);
|
|
44
|
-
};
|
|
45
|
-
return function (mod) {
|
|
46
|
-
if (mod && mod.__esModule) return mod;
|
|
47
|
-
var result = {};
|
|
48
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
-
__setModuleDefault(result, mod);
|
|
50
|
-
return result;
|
|
51
|
-
};
|
|
52
|
-
})();
|
|
53
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
-
exports.SwarmTaskRunner = void 0;
|
|
55
|
-
const events_1 = require("events");
|
|
56
|
-
const debugLogger = __importStar(require("@jungjaehoon/mama-core/debug-logger"));
|
|
57
|
-
const swarm_db_js_1 = require("./swarm-db.js");
|
|
58
|
-
/**
|
|
59
|
-
* Swarm Task Runner
|
|
60
|
-
*
|
|
61
|
-
* Manages automated execution of swarm tasks across multiple agent processes.
|
|
62
|
-
* Supports both event-driven (immediate) and polling-based execution modes.
|
|
63
|
-
*
|
|
64
|
-
* Events:
|
|
65
|
-
* - 'task-completed': (result: TaskExecutionResult) => void
|
|
66
|
-
* - 'task-failed': (result: TaskExecutionResult) => void
|
|
67
|
-
* - 'session-complete': (sessionId: string) => void
|
|
68
|
-
* - 'file-conflict': (taskId: string, conflictingFiles: string[], conflictingTasks: string[]) => void
|
|
69
|
-
*/
|
|
70
|
-
class SwarmTaskRunner extends events_1.EventEmitter {
|
|
71
|
-
swarmManager;
|
|
72
|
-
agentProcessManager;
|
|
73
|
-
sessions = new Map();
|
|
74
|
-
pollingIntervalMs = 30000; // 30 seconds
|
|
75
|
-
contextInjector;
|
|
76
|
-
// Prevent concurrent pollAndExecute for the same session
|
|
77
|
-
pollingSessionIds = new Set();
|
|
78
|
-
// Auto-checkpoint settings (F6)
|
|
79
|
-
enableAutoCheckpoint = false;
|
|
80
|
-
checkpointDebounceMs = 5000;
|
|
81
|
-
checkpointFailCounts = new Map();
|
|
82
|
-
checkpointTimers = new Map();
|
|
83
|
-
antiPatternDetector;
|
|
84
|
-
maxRetries = 3;
|
|
85
|
-
constructor(swarmManager, agentProcessManager, options) {
|
|
86
|
-
super();
|
|
87
|
-
this.swarmManager = swarmManager;
|
|
88
|
-
this.agentProcessManager = agentProcessManager;
|
|
89
|
-
if (options?.pollingIntervalMs !== undefined) {
|
|
90
|
-
this.pollingIntervalMs = options.pollingIntervalMs;
|
|
91
|
-
}
|
|
92
|
-
if (options?.contextInjector) {
|
|
93
|
-
this.contextInjector = options.contextInjector;
|
|
94
|
-
}
|
|
95
|
-
if (options?.antiPatternDetector) {
|
|
96
|
-
this.antiPatternDetector = options.antiPatternDetector;
|
|
97
|
-
}
|
|
98
|
-
if (options?.maxRetries !== undefined) {
|
|
99
|
-
this.maxRetries = options.maxRetries;
|
|
100
|
-
}
|
|
101
|
-
if (options?.enableAutoCheckpoint !== undefined) {
|
|
102
|
-
this.enableAutoCheckpoint = options.enableAutoCheckpoint;
|
|
103
|
-
}
|
|
104
|
-
if (options?.checkpointDebounceMs !== undefined) {
|
|
105
|
-
this.checkpointDebounceMs = options.checkpointDebounceMs;
|
|
106
|
-
}
|
|
107
|
-
// Setup auto-checkpoint listeners (F6)
|
|
108
|
-
if (this.enableAutoCheckpoint) {
|
|
109
|
-
this.setupAutoCheckpoint();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Start a session with automatic polling
|
|
114
|
-
*
|
|
115
|
-
* @param sessionId - Session ID to start
|
|
116
|
-
*/
|
|
117
|
-
startSession(sessionId) {
|
|
118
|
-
if (this.sessions.has(sessionId)) {
|
|
119
|
-
debugLogger.warn(`[SwarmTaskRunner] Session ${sessionId} already running`);
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
console.log(`[SwarmTaskRunner] Starting session ${sessionId}`);
|
|
123
|
-
const intervalHandle = setInterval(() => {
|
|
124
|
-
this.pollAndExecute(sessionId).catch((error) => {
|
|
125
|
-
console.error(`[SwarmTaskRunner] Error in polling for session ${sessionId}:`, error);
|
|
126
|
-
});
|
|
127
|
-
}, this.pollingIntervalMs);
|
|
128
|
-
this.sessions.set(sessionId, {
|
|
129
|
-
sessionId,
|
|
130
|
-
intervalHandle,
|
|
131
|
-
isRunning: true,
|
|
132
|
-
});
|
|
133
|
-
// Execute immediately on start
|
|
134
|
-
this.pollAndExecute(sessionId).catch((error) => {
|
|
135
|
-
console.error(`[SwarmTaskRunner] Error in initial poll for session ${sessionId}:`, error);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Stop a session
|
|
140
|
-
*
|
|
141
|
-
* @param sessionId - Session ID to stop
|
|
142
|
-
*/
|
|
143
|
-
stopSession(sessionId) {
|
|
144
|
-
const state = this.sessions.get(sessionId);
|
|
145
|
-
if (!state) {
|
|
146
|
-
debugLogger.warn(`[SwarmTaskRunner] Session ${sessionId} not running`);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
console.log(`[SwarmTaskRunner] Stopping session ${sessionId}`);
|
|
150
|
-
clearInterval(state.intervalHandle);
|
|
151
|
-
this.sessions.delete(sessionId);
|
|
152
|
-
// Clear debounce timer (F6)
|
|
153
|
-
const checkpointTimer = this.checkpointTimers.get(sessionId);
|
|
154
|
-
if (checkpointTimer) {
|
|
155
|
-
clearTimeout(checkpointTimer);
|
|
156
|
-
this.checkpointTimers.delete(sessionId);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Execute a specific task immediately (event-driven mode)
|
|
161
|
-
*
|
|
162
|
-
* Used for mention-triggered tasks that should run immediately
|
|
163
|
-
* rather than waiting for the next polling cycle.
|
|
164
|
-
*
|
|
165
|
-
* @param sessionId - Session ID
|
|
166
|
-
* @param taskId - Task ID to execute
|
|
167
|
-
* @param source - Source platform (e.g., 'discord', 'slack')
|
|
168
|
-
* @param channelId - Channel ID
|
|
169
|
-
* @returns Execution result
|
|
170
|
-
*/
|
|
171
|
-
async executeImmediateTask(sessionId, taskId, source, channelId) {
|
|
172
|
-
const db = this.swarmManager.getDatabase();
|
|
173
|
-
// Get the task
|
|
174
|
-
const task = db.prepare(`SELECT * FROM swarm_tasks WHERE id = ?`).get(taskId);
|
|
175
|
-
if (!task) {
|
|
176
|
-
throw new Error(`Task ${taskId} not found`);
|
|
177
|
-
}
|
|
178
|
-
if (task.session_id !== sessionId) {
|
|
179
|
-
throw new Error(`Task ${taskId} does not belong to session ${sessionId}`);
|
|
180
|
-
}
|
|
181
|
-
// Claim the task before execution
|
|
182
|
-
if (!task.category) {
|
|
183
|
-
throw new Error(`Task ${task.id} has no category; cannot determine target agent.`);
|
|
184
|
-
}
|
|
185
|
-
const agentId = task.category;
|
|
186
|
-
const claimed = (0, swarm_db_js_1.claimTask)(db, task.id, agentId);
|
|
187
|
-
if (!claimed) {
|
|
188
|
-
throw new Error(`Task ${taskId} could not be claimed (current status: ${task.status})`);
|
|
189
|
-
}
|
|
190
|
-
// Execute the task
|
|
191
|
-
return this.executeTask(task, source, channelId);
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Poll for pending tasks and execute them
|
|
195
|
-
*
|
|
196
|
-
* @param sessionId - Session ID to poll
|
|
197
|
-
*/
|
|
198
|
-
async pollAndExecute(sessionId) {
|
|
199
|
-
const state = this.sessions.get(sessionId);
|
|
200
|
-
if (!state || !state.isRunning) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
// Prevent concurrent polling for the same session
|
|
204
|
-
if (this.pollingSessionIds.has(sessionId)) {
|
|
205
|
-
console.log(`[SwarmTaskRunner] Polling already in progress for session ${sessionId}, skipping`);
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
this.pollingSessionIds.add(sessionId);
|
|
209
|
-
try {
|
|
210
|
-
await this.pollAndExecuteInternal(sessionId);
|
|
211
|
-
}
|
|
212
|
-
finally {
|
|
213
|
-
this.pollingSessionIds.delete(sessionId);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Internal poll logic (extracted for concurrency guard)
|
|
218
|
-
*/
|
|
219
|
-
async pollAndExecuteInternal(sessionId) {
|
|
220
|
-
const state = this.sessions.get(sessionId);
|
|
221
|
-
if (!state || !state.isRunning) {
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
// Expire stale leases first
|
|
225
|
-
const db = this.swarmManager.getDatabase();
|
|
226
|
-
const expired = (0, swarm_db_js_1.expireStaleLeases)(db);
|
|
227
|
-
if (expired > 0) {
|
|
228
|
-
console.log(`[SwarmTaskRunner] Expired ${expired} stale leases`);
|
|
229
|
-
}
|
|
230
|
-
// Check if session is complete
|
|
231
|
-
if (this.swarmManager.isSessionComplete(sessionId)) {
|
|
232
|
-
console.log(`[SwarmTaskRunner] Session ${sessionId} is complete`);
|
|
233
|
-
this.stopSession(sessionId);
|
|
234
|
-
this.emit('session-complete', sessionId);
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
// Get pending tasks
|
|
238
|
-
const pendingTasks = (0, swarm_db_js_1.getPendingTasks)(db, sessionId);
|
|
239
|
-
if (pendingTasks.length === 0) {
|
|
240
|
-
return; // No tasks to execute
|
|
241
|
-
}
|
|
242
|
-
// Try to execute each pending task
|
|
243
|
-
for (const task of pendingTasks) {
|
|
244
|
-
// Check dependencies
|
|
245
|
-
if (!this.checkDependencies(db, task)) {
|
|
246
|
-
continue; // Dependencies not met, skip for now
|
|
247
|
-
}
|
|
248
|
-
// Check for file conflicts (warning only, doesn't block)
|
|
249
|
-
const conflicts = this.checkFileConflicts(db, sessionId, task);
|
|
250
|
-
if (conflicts.length > 0) {
|
|
251
|
-
const conflictingFiles = conflicts.map((t) => (0, swarm_db_js_1.parseFilesOwned)(t)).flat();
|
|
252
|
-
const conflictingTaskIds = conflicts.map((t) => t.id);
|
|
253
|
-
console.warn(`[SwarmTaskRunner] File conflict detected for task ${task.id}: files=${conflictingFiles.join(', ')}`);
|
|
254
|
-
this.emit('file-conflict', task.id, conflictingFiles, conflictingTaskIds);
|
|
255
|
-
}
|
|
256
|
-
// Determine agent ID from category
|
|
257
|
-
if (!task.category) {
|
|
258
|
-
throw new Error(`Task ${task.id} has no category; cannot determine target agent.`);
|
|
259
|
-
}
|
|
260
|
-
const agentId = task.category;
|
|
261
|
-
// Try to claim the task
|
|
262
|
-
const claimed = (0, swarm_db_js_1.claimTask)(db, task.id, agentId);
|
|
263
|
-
if (!claimed) {
|
|
264
|
-
continue; // Already claimed by another runner
|
|
265
|
-
}
|
|
266
|
-
// Execute the task asynchronously (don't wait)
|
|
267
|
-
this.executeTask(task, 'swarm', 'auto-' + sessionId).catch((error) => {
|
|
268
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
269
|
-
console.error(`[SwarmTaskRunner] Error executing task ${task.id}:`, errorMsg);
|
|
270
|
-
// Ensure task is marked as failed in DB if executeTask didn't handle it
|
|
271
|
-
// (executeTask's catch block should handle this, but this is a safety net)
|
|
272
|
-
try {
|
|
273
|
-
const taskStatus = db
|
|
274
|
-
.prepare('SELECT status FROM swarm_tasks WHERE id = ?')
|
|
275
|
-
.get(task.id);
|
|
276
|
-
if (taskStatus && taskStatus.status !== 'failed' && taskStatus.status !== 'completed') {
|
|
277
|
-
console.warn(`[SwarmTaskRunner] Task ${task.id} in unexpected state after error: ${taskStatus.status}, marking as failed`);
|
|
278
|
-
(0, swarm_db_js_1.failTask)(db, task.id, errorMsg);
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
catch (dbError) {
|
|
282
|
-
console.error(`[SwarmTaskRunner] Failed to verify task status:`, dbError);
|
|
283
|
-
}
|
|
284
|
-
// Emit task-failed event for monitoring
|
|
285
|
-
this.emit('task-failed', {
|
|
286
|
-
taskId: task.id,
|
|
287
|
-
agentId: task.category || 'developer',
|
|
288
|
-
status: 'failed',
|
|
289
|
-
error: errorMsg,
|
|
290
|
-
});
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Execute a single task
|
|
296
|
-
*
|
|
297
|
-
* @param task - Task to execute
|
|
298
|
-
* @param source - Source platform
|
|
299
|
-
* @param channelId - Channel ID
|
|
300
|
-
* @returns TaskExecutionResult with status and optional error
|
|
301
|
-
*/
|
|
302
|
-
async executeTask(task, source, channelId) {
|
|
303
|
-
const db = this.swarmManager.getDatabase();
|
|
304
|
-
// Determine agent ID from category
|
|
305
|
-
if (!task.category) {
|
|
306
|
-
throw new Error(`Task ${task.id} has no category; cannot determine target agent.`);
|
|
307
|
-
}
|
|
308
|
-
const agentId = task.category;
|
|
309
|
-
let process; // Declare in outer scope for catch block access
|
|
310
|
-
try {
|
|
311
|
-
console.log(`[SwarmTaskRunner] Executing task ${task.id}: ${task.description}`);
|
|
312
|
-
// Inject MAMA context if available
|
|
313
|
-
let enrichedDescription = task.description;
|
|
314
|
-
if (this.contextInjector) {
|
|
315
|
-
try {
|
|
316
|
-
const context = await this.contextInjector.getRelevantContext(task.description);
|
|
317
|
-
if (context.hasContext) {
|
|
318
|
-
enrichedDescription = `${context.prompt}\n\n---\n\nTask:\n${task.description}`;
|
|
319
|
-
console.log(`[SwarmTaskRunner] Injected ${context.decisions.length} related decisions into task ${task.id}`);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
catch (error) {
|
|
323
|
-
// Graceful fallback - log error but continue with original description
|
|
324
|
-
debugLogger.warn(`[SwarmTaskRunner] Failed to inject context for task ${task.id}:`, error);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
// Anti-pattern detection
|
|
328
|
-
if (this.antiPatternDetector) {
|
|
329
|
-
try {
|
|
330
|
-
const warnings = await this.antiPatternDetector.detect(agentId, task.description);
|
|
331
|
-
if (warnings.length > 0) {
|
|
332
|
-
const warningText = this.antiPatternDetector.formatWarnings(warnings);
|
|
333
|
-
enrichedDescription = `${warningText}\n\n---\n\n${enrichedDescription}`;
|
|
334
|
-
console.log(`[SwarmTaskRunner] Injected ${warnings.length} anti-pattern warnings for agent ${agentId}`);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
catch (error) {
|
|
338
|
-
debugLogger.warn(`[SwarmTaskRunner] Anti-pattern detection failed for task ${task.id}:`, error);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
// Get agent process
|
|
342
|
-
process = await this.agentProcessManager.getProcess(source, channelId, agentId);
|
|
343
|
-
// Busy Guard: defer task if agent process is not ready
|
|
344
|
-
if (!process.isReady()) {
|
|
345
|
-
(0, swarm_db_js_1.deferTask)(db, task.id);
|
|
346
|
-
const deferredResult = {
|
|
347
|
-
taskId: task.id,
|
|
348
|
-
agentId,
|
|
349
|
-
status: 'deferred',
|
|
350
|
-
error: 'Agent process busy, task deferred',
|
|
351
|
-
};
|
|
352
|
-
console.log(`[SwarmTaskRunner] Task ${task.id} deferred — agent ${agentId} busy`);
|
|
353
|
-
this.emit('task-deferred', deferredResult);
|
|
354
|
-
return deferredResult;
|
|
355
|
-
}
|
|
356
|
-
// Send enriched task description to agent
|
|
357
|
-
const promptResult = await process.sendMessage(enrichedDescription);
|
|
358
|
-
// Mark task as completed
|
|
359
|
-
const resultText = promptResult.response || 'Task completed';
|
|
360
|
-
(0, swarm_db_js_1.completeTask)(db, task.id, resultText);
|
|
361
|
-
const result = {
|
|
362
|
-
taskId: task.id,
|
|
363
|
-
agentId,
|
|
364
|
-
status: 'completed',
|
|
365
|
-
result: resultText,
|
|
366
|
-
};
|
|
367
|
-
console.log(`[SwarmTaskRunner] Task ${task.id} completed`);
|
|
368
|
-
this.emit('task-completed', result);
|
|
369
|
-
return result;
|
|
370
|
-
}
|
|
371
|
-
catch (error) {
|
|
372
|
-
// Check retry count
|
|
373
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
374
|
-
const currentTask = db
|
|
375
|
-
.prepare('SELECT retry_count FROM swarm_tasks WHERE id = ?')
|
|
376
|
-
.get(task.id);
|
|
377
|
-
const retryCount = currentTask?.retry_count ?? 0;
|
|
378
|
-
if (retryCount < this.maxRetries) {
|
|
379
|
-
// Retry the task
|
|
380
|
-
(0, swarm_db_js_1.retryTask)(db, task.id);
|
|
381
|
-
const retriedResult = {
|
|
382
|
-
taskId: task.id,
|
|
383
|
-
agentId,
|
|
384
|
-
status: 'retrying',
|
|
385
|
-
error: errorMsg,
|
|
386
|
-
retryCount: retryCount + 1,
|
|
387
|
-
};
|
|
388
|
-
console.log(`[SwarmTaskRunner] Task ${task.id} will be retried (attempt ${retryCount + 1}/${this.maxRetries})`);
|
|
389
|
-
this.emit('task-retried', retriedResult, retryCount + 1, this.maxRetries);
|
|
390
|
-
return retriedResult;
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
393
|
-
// Max retries reached, mark as failed
|
|
394
|
-
(0, swarm_db_js_1.failTask)(db, task.id, errorMsg);
|
|
395
|
-
const result = {
|
|
396
|
-
taskId: task.id,
|
|
397
|
-
agentId,
|
|
398
|
-
status: 'failed',
|
|
399
|
-
error: errorMsg,
|
|
400
|
-
retryCount,
|
|
401
|
-
};
|
|
402
|
-
console.error(`[SwarmTaskRunner] Task ${task.id} failed after ${retryCount} retries:`, errorMsg);
|
|
403
|
-
this.emit('task-failed', result);
|
|
404
|
-
return result;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Check if all task dependencies are met
|
|
410
|
-
*
|
|
411
|
-
* @param db - Database instance
|
|
412
|
-
* @param task - Task to check (avoids redundant SELECT)
|
|
413
|
-
* @returns true if all dependencies are completed, false if pending/failed/missing
|
|
414
|
-
*/
|
|
415
|
-
checkDependencies(db, task) {
|
|
416
|
-
const dependencies = (0, swarm_db_js_1.parseDependsOn)(task);
|
|
417
|
-
if (dependencies.length === 0) {
|
|
418
|
-
return true; // No dependencies
|
|
419
|
-
}
|
|
420
|
-
// Check for circular dependencies (self-reference and transitive cycles)
|
|
421
|
-
if (dependencies.includes(task.id)) {
|
|
422
|
-
debugLogger.warn(`[SwarmTaskRunner] Circular dependency detected for task ${task.id}`);
|
|
423
|
-
return false;
|
|
424
|
-
}
|
|
425
|
-
// DFS cycle detection: walk dependency graph with visited set
|
|
426
|
-
const visited = new Set();
|
|
427
|
-
const stack = [...dependencies];
|
|
428
|
-
while (stack.length > 0) {
|
|
429
|
-
const depId = stack.pop();
|
|
430
|
-
if (depId === task.id) {
|
|
431
|
-
debugLogger.warn(`[SwarmTaskRunner] Transitive circular dependency: task ${task.id} → ... → ${task.id}`);
|
|
432
|
-
return false;
|
|
433
|
-
}
|
|
434
|
-
if (visited.has(depId))
|
|
435
|
-
continue;
|
|
436
|
-
visited.add(depId);
|
|
437
|
-
const depTask = db.prepare('SELECT depends_on FROM swarm_tasks WHERE id = ?').get(depId);
|
|
438
|
-
if (depTask?.depends_on) {
|
|
439
|
-
for (const transitive of (0, swarm_db_js_1.parseDependsOn)(depTask)) {
|
|
440
|
-
stack.push(transitive);
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
// Check each dependency
|
|
445
|
-
for (const depId of dependencies) {
|
|
446
|
-
const depTask = db.prepare(`SELECT status FROM swarm_tasks WHERE id = ?`).get(depId);
|
|
447
|
-
if (!depTask) {
|
|
448
|
-
debugLogger.warn(`[SwarmTaskRunner] Dependency task ${depId} not found`);
|
|
449
|
-
return false;
|
|
450
|
-
}
|
|
451
|
-
if (depTask.status === 'failed') {
|
|
452
|
-
// Dependency failed, mark this task as failed too
|
|
453
|
-
console.log(`[SwarmTaskRunner] Task ${task.id} auto-failed due to failed dependency ${depId}`);
|
|
454
|
-
(0, swarm_db_js_1.failPendingTask)(db, task.id, `Dependency ${depId} failed`);
|
|
455
|
-
return false;
|
|
456
|
-
}
|
|
457
|
-
if (depTask.status !== 'completed') {
|
|
458
|
-
// Dependency not yet completed
|
|
459
|
-
return false;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
return true; // All dependencies completed
|
|
463
|
-
}
|
|
464
|
-
/**
|
|
465
|
-
* Check for file conflicts with other claimed tasks
|
|
466
|
-
*
|
|
467
|
-
* @param db - Database instance
|
|
468
|
-
* @param sessionId - Session ID
|
|
469
|
-
* @param task - Task to check
|
|
470
|
-
* @returns Array of conflicting tasks (empty if no conflicts)
|
|
471
|
-
*/
|
|
472
|
-
checkFileConflicts(db, sessionId, task) {
|
|
473
|
-
const files = (0, swarm_db_js_1.parseFilesOwned)(task);
|
|
474
|
-
if (files.length === 0) {
|
|
475
|
-
return []; // No files to conflict
|
|
476
|
-
}
|
|
477
|
-
// Get all claimed tasks in this session
|
|
478
|
-
const claimedTasks = db
|
|
479
|
-
.prepare(`SELECT * FROM swarm_tasks WHERE session_id = ? AND status = 'claimed' AND id != ?`)
|
|
480
|
-
.all(sessionId, task.id);
|
|
481
|
-
const conflicts = [];
|
|
482
|
-
for (const claimedTask of claimedTasks) {
|
|
483
|
-
const claimedFiles = (0, swarm_db_js_1.parseFilesOwned)(claimedTask);
|
|
484
|
-
// Check for intersection
|
|
485
|
-
const hasConflict = files.some((file) => claimedFiles.includes(file));
|
|
486
|
-
if (hasConflict) {
|
|
487
|
-
conflicts.push(claimedTask);
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
return conflicts;
|
|
491
|
-
}
|
|
492
|
-
/**
|
|
493
|
-
* Setup auto-checkpoint listeners (F6)
|
|
494
|
-
*/
|
|
495
|
-
setupAutoCheckpoint() {
|
|
496
|
-
// session-complete: immediate checkpoint (no debounce)
|
|
497
|
-
this.on('session-complete', async (sessionId) => {
|
|
498
|
-
try {
|
|
499
|
-
await this.saveSessionCheckpoint(sessionId, true);
|
|
500
|
-
// Reset fail counter on success
|
|
501
|
-
this.checkpointFailCounts.delete(sessionId);
|
|
502
|
-
}
|
|
503
|
-
catch (err) {
|
|
504
|
-
const failCount = (this.checkpointFailCounts.get(sessionId) || 0) + 1;
|
|
505
|
-
this.checkpointFailCounts.set(sessionId, failCount);
|
|
506
|
-
if (failCount >= 3) {
|
|
507
|
-
debugLogger.warn(`[SwarmTaskRunner] Checkpoint failed ${failCount} times for session ${sessionId}. Continuing without checkpoint.`, err);
|
|
508
|
-
}
|
|
509
|
-
else {
|
|
510
|
-
debugLogger.warn(`[SwarmTaskRunner] Failed to save checkpoint for session ${sessionId}:`, err);
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
});
|
|
514
|
-
// task-completed / task-failed: debounced checkpoint
|
|
515
|
-
const handleTaskEvent = async (result) => {
|
|
516
|
-
if (!result)
|
|
517
|
-
return;
|
|
518
|
-
// Extract sessionId from taskId (format: {sessionId}-task-{N})
|
|
519
|
-
const match = result.taskId.match(/^(.+)-task-\d+$/);
|
|
520
|
-
if (!match)
|
|
521
|
-
return;
|
|
522
|
-
const sessionId = match[1];
|
|
523
|
-
this.scheduleCheckpoint(sessionId);
|
|
524
|
-
};
|
|
525
|
-
this.on('task-completed', handleTaskEvent);
|
|
526
|
-
this.on('task-failed', handleTaskEvent);
|
|
527
|
-
}
|
|
528
|
-
/**
|
|
529
|
-
* Schedule a debounced checkpoint save (F6)
|
|
530
|
-
*/
|
|
531
|
-
scheduleCheckpoint(sessionId) {
|
|
532
|
-
// Clear existing timer
|
|
533
|
-
const existingTimer = this.checkpointTimers.get(sessionId);
|
|
534
|
-
if (existingTimer) {
|
|
535
|
-
clearTimeout(existingTimer);
|
|
536
|
-
}
|
|
537
|
-
// Schedule new timer
|
|
538
|
-
const timer = setTimeout(async () => {
|
|
539
|
-
try {
|
|
540
|
-
await this.saveSessionCheckpoint(sessionId, false);
|
|
541
|
-
this.checkpointTimers.delete(sessionId);
|
|
542
|
-
// Reset fail counter on success
|
|
543
|
-
this.checkpointFailCounts.delete(sessionId);
|
|
544
|
-
}
|
|
545
|
-
catch (err) {
|
|
546
|
-
const failCount = (this.checkpointFailCounts.get(sessionId) || 0) + 1;
|
|
547
|
-
this.checkpointFailCounts.set(sessionId, failCount);
|
|
548
|
-
if (failCount >= 3) {
|
|
549
|
-
debugLogger.warn(`[SwarmTaskRunner] Checkpoint failed ${failCount} times for session ${sessionId}. Continuing without checkpoint.`, err);
|
|
550
|
-
}
|
|
551
|
-
else {
|
|
552
|
-
debugLogger.warn(`[SwarmTaskRunner] Failed to save debounced checkpoint:`, err);
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
}, this.checkpointDebounceMs);
|
|
556
|
-
this.checkpointTimers.set(sessionId, timer);
|
|
557
|
-
}
|
|
558
|
-
/**
|
|
559
|
-
* Save session checkpoint to MAMA (F6)
|
|
560
|
-
*/
|
|
561
|
-
async saveSessionCheckpoint(sessionId, isComplete) {
|
|
562
|
-
const db = this.swarmManager.getDatabase();
|
|
563
|
-
// Get all tasks for this session
|
|
564
|
-
const allTasks = (0, swarm_db_js_1.getTasksBySession)(db, sessionId);
|
|
565
|
-
const completed = allTasks.filter((t) => t.status === 'completed').length;
|
|
566
|
-
const failed = allTasks.filter((t) => t.status === 'failed').length;
|
|
567
|
-
const total = allTasks.length;
|
|
568
|
-
// Build summary
|
|
569
|
-
const summary = isComplete
|
|
570
|
-
? `Swarm session ${sessionId} completed. ${completed}/${total} tasks succeeded.`
|
|
571
|
-
: `Swarm session ${sessionId} progress: ${completed}/${total} tasks completed.`;
|
|
572
|
-
// Collect open files (files_owned from active tasks)
|
|
573
|
-
const activeTasks = allTasks.filter((t) => t.status === 'claimed' || t.status === 'completed');
|
|
574
|
-
const openFiles = [];
|
|
575
|
-
for (const task of activeTasks) {
|
|
576
|
-
if (task.files_owned) {
|
|
577
|
-
const files = (0, swarm_db_js_1.parseFilesOwned)(task);
|
|
578
|
-
openFiles.push(...files);
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
// Build next steps (list failed tasks if any)
|
|
582
|
-
let nextSteps = '';
|
|
583
|
-
if (failed > 0) {
|
|
584
|
-
const failedTasks = allTasks.filter((t) => t.status === 'failed');
|
|
585
|
-
const failedDescriptions = failedTasks.map((t) => `- ${t.description}`).slice(0, 5);
|
|
586
|
-
nextSteps = `Failed tasks (${failed}):\n${failedDescriptions.join('\n')}`;
|
|
587
|
-
}
|
|
588
|
-
// Save checkpoint via swarm-mama-adapter
|
|
589
|
-
const { saveSwarmCheckpoint } = await import('./swarm-mama-adapter.js');
|
|
590
|
-
await saveSwarmCheckpoint(sessionId, summary, openFiles, nextSteps);
|
|
591
|
-
}
|
|
592
|
-
/**
|
|
593
|
-
* Stop all sessions
|
|
594
|
-
*/
|
|
595
|
-
stopAll() {
|
|
596
|
-
console.log(`[SwarmTaskRunner] Stopping all sessions (${this.sessions.size})`);
|
|
597
|
-
for (const sessionId of Array.from(this.sessions.keys())) {
|
|
598
|
-
this.stopSession(sessionId);
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
/**
|
|
602
|
-
* Get active session count
|
|
603
|
-
*/
|
|
604
|
-
getActiveSessionCount() {
|
|
605
|
-
return this.sessions.size;
|
|
606
|
-
}
|
|
607
|
-
/**
|
|
608
|
-
* Get active session IDs
|
|
609
|
-
*/
|
|
610
|
-
getActiveSessionIds() {
|
|
611
|
-
return Array.from(this.sessions.keys());
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
exports.SwarmTaskRunner = SwarmTaskRunner;
|
|
615
|
-
//# sourceMappingURL=swarm-task-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-task-runner.js","sourceRoot":"","sources":["../../../src/multi-agent/swarm/swarm-task-runner.ts"],"names":[],"mappings":"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"}
|