steroids-cli 0.4.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +640 -0
- package/dist/cli/colors.d.ts +110 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +228 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/env.d.ts +159 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +227 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/errors.d.ts +166 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +244 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/flags.d.ts +75 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +232 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/help.d.ts +97 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +275 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +29 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interactive.d.ts +58 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +127 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/output.d.ts +116 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +178 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/commands/about.d.ts +7 -0
- package/dist/commands/about.d.ts.map +1 -0
- package/dist/commands/about.js +259 -0
- package/dist/commands/about.js.map +1 -0
- package/dist/commands/ai.d.ts +6 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +382 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/backup.d.ts +3 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +528 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +405 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +665 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/disputes.d.ts +3 -0
- package/dist/commands/disputes.d.ts.map +1 -0
- package/dist/commands/disputes.js +499 -0
- package/dist/commands/disputes.js.map +1 -0
- package/dist/commands/gc.d.ts +3 -0
- package/dist/commands/gc.d.ts.map +1 -0
- package/dist/commands/gc.js +300 -0
- package/dist/commands/gc.js.map +1 -0
- package/dist/commands/git.d.ts +3 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +458 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/health.d.ts +3 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +604 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/hooks.d.ts +6 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +529 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +200 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/llm.d.ts +7 -0
- package/dist/commands/llm.d.ts.map +1 -0
- package/dist/commands/llm.js +285 -0
- package/dist/commands/llm.js.map +1 -0
- package/dist/commands/locks.d.ts +3 -0
- package/dist/commands/locks.d.ts.map +1 -0
- package/dist/commands/locks.js +431 -0
- package/dist/commands/locks.js.map +1 -0
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +487 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/loop-phases.d.ts +11 -0
- package/dist/commands/loop-phases.d.ts.map +1 -0
- package/dist/commands/loop-phases.js +204 -0
- package/dist/commands/loop-phases.js.map +1 -0
- package/dist/commands/loop.d.ts +3 -0
- package/dist/commands/loop.d.ts.map +1 -0
- package/dist/commands/loop.js +396 -0
- package/dist/commands/loop.js.map +1 -0
- package/dist/commands/projects.d.ts +6 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +362 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/purge.d.ts +3 -0
- package/dist/commands/purge.d.ts.map +1 -0
- package/dist/commands/purge.js +516 -0
- package/dist/commands/purge.js.map +1 -0
- package/dist/commands/runners.d.ts +3 -0
- package/dist/commands/runners.d.ts.map +1 -0
- package/dist/commands/runners.js +1076 -0
- package/dist/commands/runners.js.map +1 -0
- package/dist/commands/scan.d.ts +3 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +291 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/sections-commands.d.ts +9 -0
- package/dist/commands/sections-commands.d.ts.map +1 -0
- package/dist/commands/sections-commands.js +282 -0
- package/dist/commands/sections-commands.js.map +1 -0
- package/dist/commands/sections-graph.d.ts +25 -0
- package/dist/commands/sections-graph.d.ts.map +1 -0
- package/dist/commands/sections-graph.js +180 -0
- package/dist/commands/sections-graph.js.map +1 -0
- package/dist/commands/sections.d.ts +3 -0
- package/dist/commands/sections.d.ts.map +1 -0
- package/dist/commands/sections.js +376 -0
- package/dist/commands/sections.js.map +1 -0
- package/dist/commands/stats.d.ts +6 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +324 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/tasks.d.ts +3 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +1115 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/web.d.ts +7 -0
- package/dist/commands/web.d.ts.map +1 -0
- package/dist/commands/web.js +204 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/config/ai-setup.d.ts +27 -0
- package/dist/config/ai-setup.d.ts.map +1 -0
- package/dist/config/ai-setup.js +432 -0
- package/dist/config/ai-setup.js.map +1 -0
- package/dist/config/browser.d.ts +9 -0
- package/dist/config/browser.d.ts.map +1 -0
- package/dist/config/browser.js +200 -0
- package/dist/config/browser.js.map +1 -0
- package/dist/config/json-schema.d.ts +28 -0
- package/dist/config/json-schema.d.ts.map +1 -0
- package/dist/config/json-schema.js +84 -0
- package/dist/config/json-schema.js.map +1 -0
- package/dist/config/loader.d.ts +152 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +270 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +34 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +437 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/validator.d.ts +32 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +187 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/database/connection.d.ts +35 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +208 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/queries.d.ts +218 -0
- package/dist/database/queries.d.ts.map +1 -0
- package/dist/database/queries.js +613 -0
- package/dist/database/queries.js.map +1 -0
- package/dist/database/schema.d.ts +8 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +160 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/disputes/behavior.d.ts +106 -0
- package/dist/disputes/behavior.d.ts.map +1 -0
- package/dist/disputes/behavior.js +150 -0
- package/dist/disputes/behavior.js.map +1 -0
- package/dist/disputes/create.d.ts +59 -0
- package/dist/disputes/create.d.ts.map +1 -0
- package/dist/disputes/create.js +222 -0
- package/dist/disputes/create.js.map +1 -0
- package/dist/disputes/index.d.ts +21 -0
- package/dist/disputes/index.d.ts.map +1 -0
- package/dist/disputes/index.js +76 -0
- package/dist/disputes/index.js.map +1 -0
- package/dist/disputes/markdown.d.ts +41 -0
- package/dist/disputes/markdown.d.ts.map +1 -0
- package/dist/disputes/markdown.js +261 -0
- package/dist/disputes/markdown.js.map +1 -0
- package/dist/disputes/queries.d.ts +83 -0
- package/dist/disputes/queries.d.ts.map +1 -0
- package/dist/disputes/queries.js +180 -0
- package/dist/disputes/queries.js.map +1 -0
- package/dist/disputes/resolve.d.ts +57 -0
- package/dist/disputes/resolve.d.ts.map +1 -0
- package/dist/disputes/resolve.js +171 -0
- package/dist/disputes/resolve.js.map +1 -0
- package/dist/disputes/stale.d.ts +98 -0
- package/dist/disputes/stale.d.ts.map +1 -0
- package/dist/disputes/stale.js +205 -0
- package/dist/disputes/stale.js.map +1 -0
- package/dist/disputes/types.d.ts +92 -0
- package/dist/disputes/types.d.ts.map +1 -0
- package/dist/disputes/types.js +100 -0
- package/dist/disputes/types.js.map +1 -0
- package/dist/git/push.d.ts +26 -0
- package/dist/git/push.d.ts.map +1 -0
- package/dist/git/push.js +97 -0
- package/dist/git/push.js.map +1 -0
- package/dist/git/status.d.ts +61 -0
- package/dist/git/status.d.ts.map +1 -0
- package/dist/git/status.js +251 -0
- package/dist/git/status.js.map +1 -0
- package/dist/hooks/events.d.ts +72 -0
- package/dist/hooks/events.d.ts.map +1 -0
- package/dist/hooks/events.js +120 -0
- package/dist/hooks/events.js.map +1 -0
- package/dist/hooks/index.d.ts +19 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +48 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/integration.d.ts +69 -0
- package/dist/hooks/integration.d.ts.map +1 -0
- package/dist/hooks/integration.js +179 -0
- package/dist/hooks/integration.js.map +1 -0
- package/dist/hooks/merge.d.ts +115 -0
- package/dist/hooks/merge.d.ts.map +1 -0
- package/dist/hooks/merge.js +161 -0
- package/dist/hooks/merge.js.map +1 -0
- package/dist/hooks/orchestrator.d.ts +115 -0
- package/dist/hooks/orchestrator.d.ts.map +1 -0
- package/dist/hooks/orchestrator.js +226 -0
- package/dist/hooks/orchestrator.js.map +1 -0
- package/dist/hooks/payload.d.ts +294 -0
- package/dist/hooks/payload.d.ts.map +1 -0
- package/dist/hooks/payload.js +267 -0
- package/dist/hooks/payload.js.map +1 -0
- package/dist/hooks/script-runner.d.ts +63 -0
- package/dist/hooks/script-runner.d.ts.map +1 -0
- package/dist/hooks/script-runner.js +221 -0
- package/dist/hooks/script-runner.js.map +1 -0
- package/dist/hooks/templates.d.ts +104 -0
- package/dist/hooks/templates.d.ts.map +1 -0
- package/dist/hooks/templates.js +327 -0
- package/dist/hooks/templates.js.map +1 -0
- package/dist/hooks/webhook-runner.d.ts +69 -0
- package/dist/hooks/webhook-runner.d.ts.map +1 -0
- package/dist/hooks/webhook-runner.js +208 -0
- package/dist/hooks/webhook-runner.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +281 -0
- package/dist/index.js.map +1 -0
- package/dist/locking/cleanup.d.ts +70 -0
- package/dist/locking/cleanup.d.ts.map +1 -0
- package/dist/locking/cleanup.js +157 -0
- package/dist/locking/cleanup.js.map +1 -0
- package/dist/locking/queries.d.ts +116 -0
- package/dist/locking/queries.d.ts.map +1 -0
- package/dist/locking/queries.js +255 -0
- package/dist/locking/queries.js.map +1 -0
- package/dist/locking/section-lock.d.ts +74 -0
- package/dist/locking/section-lock.d.ts.map +1 -0
- package/dist/locking/section-lock.js +207 -0
- package/dist/locking/section-lock.js.map +1 -0
- package/dist/locking/task-lock.d.ts +92 -0
- package/dist/locking/task-lock.d.ts.map +1 -0
- package/dist/locking/task-lock.js +246 -0
- package/dist/locking/task-lock.js.map +1 -0
- package/dist/migrations/index.d.ts +7 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +37 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/manifest.d.ts +92 -0
- package/dist/migrations/manifest.d.ts.map +1 -0
- package/dist/migrations/manifest.js +270 -0
- package/dist/migrations/manifest.js.map +1 -0
- package/dist/migrations/runner.d.ts +84 -0
- package/dist/migrations/runner.d.ts.map +1 -0
- package/dist/migrations/runner.js +351 -0
- package/dist/migrations/runner.js.map +1 -0
- package/dist/orchestrator/coder.d.ts +32 -0
- package/dist/orchestrator/coder.d.ts.map +1 -0
- package/dist/orchestrator/coder.js +174 -0
- package/dist/orchestrator/coder.js.map +1 -0
- package/dist/orchestrator/coordinator.d.ts +28 -0
- package/dist/orchestrator/coordinator.d.ts.map +1 -0
- package/dist/orchestrator/coordinator.js +256 -0
- package/dist/orchestrator/coordinator.js.map +1 -0
- package/dist/orchestrator/reviewer.d.ts +35 -0
- package/dist/orchestrator/reviewer.d.ts.map +1 -0
- package/dist/orchestrator/reviewer.js +241 -0
- package/dist/orchestrator/reviewer.js.map +1 -0
- package/dist/orchestrator/task-selector.d.ts +102 -0
- package/dist/orchestrator/task-selector.d.ts.map +1 -0
- package/dist/orchestrator/task-selector.js +341 -0
- package/dist/orchestrator/task-selector.js.map +1 -0
- package/dist/prompts/coder.d.ts +36 -0
- package/dist/prompts/coder.d.ts.map +1 -0
- package/dist/prompts/coder.js +315 -0
- package/dist/prompts/coder.js.map +1 -0
- package/dist/prompts/prompt-helpers.d.ts +51 -0
- package/dist/prompts/prompt-helpers.d.ts.map +1 -0
- package/dist/prompts/prompt-helpers.js +312 -0
- package/dist/prompts/prompt-helpers.js.map +1 -0
- package/dist/prompts/reviewer.d.ts +40 -0
- package/dist/prompts/reviewer.d.ts.map +1 -0
- package/dist/prompts/reviewer.js +438 -0
- package/dist/prompts/reviewer.js.map +1 -0
- package/dist/providers/api-models.d.ts +65 -0
- package/dist/providers/api-models.d.ts.map +1 -0
- package/dist/providers/api-models.js +323 -0
- package/dist/providers/api-models.js.map +1 -0
- package/dist/providers/claude.d.ts +53 -0
- package/dist/providers/claude.d.ts.map +1 -0
- package/dist/providers/claude.js +229 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/codex.d.ts +53 -0
- package/dist/providers/codex.d.ts.map +1 -0
- package/dist/providers/codex.js +214 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/gemini.d.ts +58 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +242 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +49 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/interface.d.ts +173 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +96 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/providers/invocation-logger.d.ts +114 -0
- package/dist/providers/invocation-logger.d.ts.map +1 -0
- package/dist/providers/invocation-logger.js +298 -0
- package/dist/providers/invocation-logger.js.map +1 -0
- package/dist/providers/openai.d.ts +53 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +232 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/registry.d.ts +100 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +178 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/runners/activity-log.d.ts +65 -0
- package/dist/runners/activity-log.d.ts.map +1 -0
- package/dist/runners/activity-log.js +148 -0
- package/dist/runners/activity-log.js.map +1 -0
- package/dist/runners/cron.d.ts +26 -0
- package/dist/runners/cron.d.ts.map +1 -0
- package/dist/runners/cron.js +176 -0
- package/dist/runners/cron.js.map +1 -0
- package/dist/runners/daemon.d.ts +71 -0
- package/dist/runners/daemon.d.ts.map +1 -0
- package/dist/runners/daemon.js +245 -0
- package/dist/runners/daemon.js.map +1 -0
- package/dist/runners/global-db.d.ts +31 -0
- package/dist/runners/global-db.d.ts.map +1 -0
- package/dist/runners/global-db.js +230 -0
- package/dist/runners/global-db.js.map +1 -0
- package/dist/runners/hang-detector.d.ts +38 -0
- package/dist/runners/hang-detector.d.ts.map +1 -0
- package/dist/runners/hang-detector.js +136 -0
- package/dist/runners/hang-detector.js.map +1 -0
- package/dist/runners/heartbeat.d.ts +39 -0
- package/dist/runners/heartbeat.d.ts.map +1 -0
- package/dist/runners/heartbeat.js +79 -0
- package/dist/runners/heartbeat.js.map +1 -0
- package/dist/runners/lock.d.ts +47 -0
- package/dist/runners/lock.d.ts.map +1 -0
- package/dist/runners/lock.js +150 -0
- package/dist/runners/lock.js.map +1 -0
- package/dist/runners/orchestrator-loop.d.ts +20 -0
- package/dist/runners/orchestrator-loop.d.ts.map +1 -0
- package/dist/runners/orchestrator-loop.js +285 -0
- package/dist/runners/orchestrator-loop.js.map +1 -0
- package/dist/runners/projects.d.ts +96 -0
- package/dist/runners/projects.d.ts.map +1 -0
- package/dist/runners/projects.js +255 -0
- package/dist/runners/projects.js.map +1 -0
- package/dist/runners/wakeup.d.ts +34 -0
- package/dist/runners/wakeup.d.ts.map +1 -0
- package/dist/runners/wakeup.js +291 -0
- package/dist/runners/wakeup.js.map +1 -0
- package/migrations/001_initial_schema.sql +106 -0
- package/migrations/002_add_commit_sha.sql +12 -0
- package/migrations/003_add_section_priority.sql +13 -0
- package/migrations/004_add_section_dependencies.sql +18 -0
- package/migrations/005_add_audit_actor_model.sql +10 -0
- package/migrations/006_add_task_invocations.sql +33 -0
- package/migrations/007_add_file_anchor.sql +14 -0
- package/migrations/manifest.json +62 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/disputes/markdown.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA2BH,0DAsDC;AAyJD,4CAeC;AAKD,0CASC;AAKD,8CAIC;AAKD,gDAGC;AAQD,8CAKC;AAKD,sEAEC;AA1SD,qCAAkE;AAClE,yCAAiC;AAEjC,6CAIsB;AAOtB,yCAA0E;AAE1E,0CAA0C;AAE1C,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,gDAAgD;AAEhD;;GAEG;AACH,SAAgB,uBAAuB,CAAC,EAAqB;IAC3D,MAAM,YAAY,GAAG,IAAA,kCAAqB,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAA,kCAAqB,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,UAAU;IACV,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,4BAA4B,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,yBAAyB,YAAY,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,gBAAgB;IAChB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,OAAwB;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C,qBAAqB;IACrB,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,iBAAiB;IACjB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,UAAU,OAAO,WAAW,OAAO,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,gBAAgB,SAAS,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,kBAAkB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAA,8BAAiB,EAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACtH,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,iBAAiB;IACjB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,oBAAoB,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,2BAA2B;QAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kCAAkC,OAAO,4CAA4C,CAAC,CAAC;QAClG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+CAA+C;AAE/C;;GAEG;AACH,SAAS,cAAc,CAAC,MAAqB,EAAE,UAAqC;IAClF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAiB;IACrC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,UAAU;YACb,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAAc;IAClC,IAAI,IAAA,0BAAe,EAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,MAAM,MAAM,sCAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,QAA4B;IACpD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,iCAAiC,CAAC;QAC3C,KAAK,UAAU;YACb,OAAO,4CAA4C,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,0BAA0B,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACtC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;AACL,CAAC;AAED,4CAA4C;AAE5C;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,EAAqB,EACrB,WAAoB;IAEpB,MAAM,QAAQ,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,QAAQ,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAA,uBAAa,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,OAAO;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,WAAoB;IAClD,MAAM,QAAQ,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAEnD,IAAI,CAAC,IAAA,oBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAA,sBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,WAAoB;IACpD,MAAM,QAAQ,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACnD,OAAO,IAAA,oBAAU,EAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,WAAoB;IACrD,MAAM,QAAQ,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,OAAO,IAAA,gBAAI,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3C,CAAC;AAED,8CAA8C;AAE9C;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,EAAqB,EACrB,WAAoB;IAEpB,gBAAgB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,OAAwB;IACpE,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database queries for disputes
|
|
3
|
+
*
|
|
4
|
+
* Provides CRUD operations for the disputes table and
|
|
5
|
+
* integration with the task system.
|
|
6
|
+
*/
|
|
7
|
+
import type Database from 'better-sqlite3';
|
|
8
|
+
import type { Dispute, DisputeType, DisputeStatus, ResolutionDecision } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Get a dispute by ID (supports short ID prefix match)
|
|
11
|
+
*/
|
|
12
|
+
export declare function getDispute(db: Database.Database, id: string): Dispute | null;
|
|
13
|
+
/**
|
|
14
|
+
* Get all disputes for a specific task
|
|
15
|
+
*/
|
|
16
|
+
export declare function getDisputesForTask(db: Database.Database, taskId: string): Dispute[];
|
|
17
|
+
/**
|
|
18
|
+
* Get the most recent open dispute for a task (if any)
|
|
19
|
+
*/
|
|
20
|
+
export declare function getOpenDisputeForTask(db: Database.Database, taskId: string): Dispute | null;
|
|
21
|
+
/**
|
|
22
|
+
* List disputes with optional filtering
|
|
23
|
+
*/
|
|
24
|
+
export declare function listDisputes(db: Database.Database, options?: {
|
|
25
|
+
status?: DisputeStatus | 'all';
|
|
26
|
+
type?: DisputeType;
|
|
27
|
+
taskId?: string;
|
|
28
|
+
}): Dispute[];
|
|
29
|
+
/**
|
|
30
|
+
* Get stale disputes (open longer than specified days)
|
|
31
|
+
*/
|
|
32
|
+
export declare function getStaleDisputes(db: Database.Database, timeoutDays: number): Dispute[];
|
|
33
|
+
/**
|
|
34
|
+
* Count disputes by status
|
|
35
|
+
*/
|
|
36
|
+
export declare function countDisputesByStatus(db: Database.Database): {
|
|
37
|
+
open: number;
|
|
38
|
+
resolved: number;
|
|
39
|
+
total: number;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Insert a new dispute into the database
|
|
43
|
+
*/
|
|
44
|
+
export declare function insertDispute(db: Database.Database, params: {
|
|
45
|
+
taskId: string;
|
|
46
|
+
type: DisputeType;
|
|
47
|
+
reason: string;
|
|
48
|
+
createdBy: string;
|
|
49
|
+
coderPosition?: string;
|
|
50
|
+
reviewerPosition?: string;
|
|
51
|
+
}): string;
|
|
52
|
+
/**
|
|
53
|
+
* Update coder position on a dispute
|
|
54
|
+
*/
|
|
55
|
+
export declare function updateCoderPosition(db: Database.Database, disputeId: string, position: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Update reviewer position on a dispute
|
|
58
|
+
*/
|
|
59
|
+
export declare function updateReviewerPosition(db: Database.Database, disputeId: string, position: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Resolve a dispute
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveDispute(db: Database.Database, disputeId: string, decision: ResolutionDecision, resolvedBy: string, notes?: string): void;
|
|
64
|
+
/**
|
|
65
|
+
* Dispute record with associated task title
|
|
66
|
+
*/
|
|
67
|
+
export interface DisputeWithTask extends Dispute {
|
|
68
|
+
task_title: string;
|
|
69
|
+
task_status: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* List disputes with associated task information
|
|
73
|
+
*/
|
|
74
|
+
export declare function listDisputesWithTasks(db: Database.Database, options?: {
|
|
75
|
+
status?: DisputeStatus | 'all';
|
|
76
|
+
stale?: boolean;
|
|
77
|
+
timeoutDays?: number;
|
|
78
|
+
}): DisputeWithTask[];
|
|
79
|
+
/**
|
|
80
|
+
* Calculate days open for a dispute
|
|
81
|
+
*/
|
|
82
|
+
export declare function calculateDaysOpen(createdAt: string): number;
|
|
83
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/disputes/queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,OAAO,GAAG,IAAI,CAchB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,EAAE,CAQX;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,GAAG,IAAI,CAShB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACZ,GACL,OAAO,EAAE,CAyBX;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CASX;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgBnD;AAID;;GAEG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACA,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAUN;AAID;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,eAAe,EAAE,CAuBnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK3D"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Database queries for disputes
|
|
4
|
+
*
|
|
5
|
+
* Provides CRUD operations for the disputes table and
|
|
6
|
+
* integration with the task system.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.getDispute = getDispute;
|
|
10
|
+
exports.getDisputesForTask = getDisputesForTask;
|
|
11
|
+
exports.getOpenDisputeForTask = getOpenDisputeForTask;
|
|
12
|
+
exports.listDisputes = listDisputes;
|
|
13
|
+
exports.getStaleDisputes = getStaleDisputes;
|
|
14
|
+
exports.countDisputesByStatus = countDisputesByStatus;
|
|
15
|
+
exports.insertDispute = insertDispute;
|
|
16
|
+
exports.updateCoderPosition = updateCoderPosition;
|
|
17
|
+
exports.updateReviewerPosition = updateReviewerPosition;
|
|
18
|
+
exports.resolveDispute = resolveDispute;
|
|
19
|
+
exports.listDisputesWithTasks = listDisputesWithTasks;
|
|
20
|
+
exports.calculateDaysOpen = calculateDaysOpen;
|
|
21
|
+
const uuid_1 = require("uuid");
|
|
22
|
+
// ============ Read Operations ============
|
|
23
|
+
/**
|
|
24
|
+
* Get a dispute by ID (supports short ID prefix match)
|
|
25
|
+
*/
|
|
26
|
+
function getDispute(db, id) {
|
|
27
|
+
// Try exact match first
|
|
28
|
+
let dispute = db
|
|
29
|
+
.prepare('SELECT * FROM disputes WHERE id = ?')
|
|
30
|
+
.get(id);
|
|
31
|
+
// If not found, try prefix match (for short IDs)
|
|
32
|
+
if (!dispute && id.length >= 6) {
|
|
33
|
+
dispute = db
|
|
34
|
+
.prepare('SELECT * FROM disputes WHERE id LIKE ?')
|
|
35
|
+
.get(`${id}%`);
|
|
36
|
+
}
|
|
37
|
+
return dispute;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get all disputes for a specific task
|
|
41
|
+
*/
|
|
42
|
+
function getDisputesForTask(db, taskId) {
|
|
43
|
+
return db
|
|
44
|
+
.prepare(`SELECT * FROM disputes
|
|
45
|
+
WHERE task_id = ?
|
|
46
|
+
ORDER BY created_at DESC`)
|
|
47
|
+
.all(taskId);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the most recent open dispute for a task (if any)
|
|
51
|
+
*/
|
|
52
|
+
function getOpenDisputeForTask(db, taskId) {
|
|
53
|
+
return db
|
|
54
|
+
.prepare(`SELECT * FROM disputes
|
|
55
|
+
WHERE task_id = ? AND status = 'open'
|
|
56
|
+
ORDER BY created_at DESC
|
|
57
|
+
LIMIT 1`)
|
|
58
|
+
.get(taskId);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* List disputes with optional filtering
|
|
62
|
+
*/
|
|
63
|
+
function listDisputes(db, options = {}) {
|
|
64
|
+
let sql = `
|
|
65
|
+
SELECT d.* FROM disputes d
|
|
66
|
+
WHERE 1=1
|
|
67
|
+
`;
|
|
68
|
+
const params = [];
|
|
69
|
+
if (options.status && options.status !== 'all') {
|
|
70
|
+
sql += ' AND d.status = ?';
|
|
71
|
+
params.push(options.status);
|
|
72
|
+
}
|
|
73
|
+
if (options.type) {
|
|
74
|
+
sql += ' AND d.type = ?';
|
|
75
|
+
params.push(options.type);
|
|
76
|
+
}
|
|
77
|
+
if (options.taskId) {
|
|
78
|
+
sql += ' AND d.task_id = ?';
|
|
79
|
+
params.push(options.taskId);
|
|
80
|
+
}
|
|
81
|
+
sql += ' ORDER BY d.created_at DESC';
|
|
82
|
+
return db.prepare(sql).all(...params);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get stale disputes (open longer than specified days)
|
|
86
|
+
*/
|
|
87
|
+
function getStaleDisputes(db, timeoutDays) {
|
|
88
|
+
return db
|
|
89
|
+
.prepare(`SELECT * FROM disputes
|
|
90
|
+
WHERE status = 'open'
|
|
91
|
+
AND datetime(created_at, '+' || ? || ' days') < datetime('now')
|
|
92
|
+
ORDER BY created_at ASC`)
|
|
93
|
+
.all(timeoutDays);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Count disputes by status
|
|
97
|
+
*/
|
|
98
|
+
function countDisputesByStatus(db) {
|
|
99
|
+
const result = db
|
|
100
|
+
.prepare(`SELECT
|
|
101
|
+
SUM(CASE WHEN status = 'open' THEN 1 ELSE 0 END) as open,
|
|
102
|
+
SUM(CASE WHEN status = 'resolved' THEN 1 ELSE 0 END) as resolved,
|
|
103
|
+
COUNT(*) as total
|
|
104
|
+
FROM disputes`)
|
|
105
|
+
.get();
|
|
106
|
+
return {
|
|
107
|
+
open: result.open ?? 0,
|
|
108
|
+
resolved: result.resolved ?? 0,
|
|
109
|
+
total: result.total ?? 0,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// ============ Write Operations ============
|
|
113
|
+
/**
|
|
114
|
+
* Insert a new dispute into the database
|
|
115
|
+
*/
|
|
116
|
+
function insertDispute(db, params) {
|
|
117
|
+
const id = (0, uuid_1.v4)();
|
|
118
|
+
db.prepare(`INSERT INTO disputes (
|
|
119
|
+
id, task_id, type, reason, created_by,
|
|
120
|
+
coder_position, reviewer_position
|
|
121
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)`).run(id, params.taskId, params.type, params.reason, params.createdBy, params.coderPosition ?? null, params.reviewerPosition ?? null);
|
|
122
|
+
return id;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Update coder position on a dispute
|
|
126
|
+
*/
|
|
127
|
+
function updateCoderPosition(db, disputeId, position) {
|
|
128
|
+
db.prepare(`UPDATE disputes SET coder_position = ? WHERE id = ?`).run(position, disputeId);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Update reviewer position on a dispute
|
|
132
|
+
*/
|
|
133
|
+
function updateReviewerPosition(db, disputeId, position) {
|
|
134
|
+
db.prepare(`UPDATE disputes SET reviewer_position = ? WHERE id = ?`).run(position, disputeId);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Resolve a dispute
|
|
138
|
+
*/
|
|
139
|
+
function resolveDispute(db, disputeId, decision, resolvedBy, notes) {
|
|
140
|
+
db.prepare(`UPDATE disputes
|
|
141
|
+
SET status = 'resolved',
|
|
142
|
+
resolution = ?,
|
|
143
|
+
resolution_notes = ?,
|
|
144
|
+
resolved_by = ?,
|
|
145
|
+
resolved_at = datetime('now')
|
|
146
|
+
WHERE id = ?`).run(decision, notes ?? null, resolvedBy, disputeId);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* List disputes with associated task information
|
|
150
|
+
*/
|
|
151
|
+
function listDisputesWithTasks(db, options = {}) {
|
|
152
|
+
let sql = `
|
|
153
|
+
SELECT d.*, t.title as task_title, t.status as task_status
|
|
154
|
+
FROM disputes d
|
|
155
|
+
JOIN tasks t ON d.task_id = t.id
|
|
156
|
+
WHERE 1=1
|
|
157
|
+
`;
|
|
158
|
+
const params = [];
|
|
159
|
+
if (options.status && options.status !== 'all') {
|
|
160
|
+
sql += ' AND d.status = ?';
|
|
161
|
+
params.push(options.status);
|
|
162
|
+
}
|
|
163
|
+
if (options.stale && options.timeoutDays) {
|
|
164
|
+
sql += ` AND d.status = 'open'
|
|
165
|
+
AND datetime(d.created_at, '+' || ? || ' days') < datetime('now')`;
|
|
166
|
+
params.push(options.timeoutDays);
|
|
167
|
+
}
|
|
168
|
+
sql += ' ORDER BY d.created_at DESC';
|
|
169
|
+
return db.prepare(sql).all(...params);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Calculate days open for a dispute
|
|
173
|
+
*/
|
|
174
|
+
function calculateDaysOpen(createdAt) {
|
|
175
|
+
const created = new Date(createdAt);
|
|
176
|
+
const now = new Date();
|
|
177
|
+
const diffMs = now.getTime() - created.getTime();
|
|
178
|
+
return Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/disputes/queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dispute resolution logic
|
|
3
|
+
*
|
|
4
|
+
* Handles resolving disputes with decisions (coder/reviewer/custom)
|
|
5
|
+
* and updates task status accordingly.
|
|
6
|
+
*/
|
|
7
|
+
import type Database from 'better-sqlite3';
|
|
8
|
+
import type { Dispute, ResolutionDecision, ResolveDisputeInput } from './types.js';
|
|
9
|
+
export interface ResolveDisputeResult {
|
|
10
|
+
success: true;
|
|
11
|
+
disputeId: string;
|
|
12
|
+
taskId: string;
|
|
13
|
+
decision: ResolutionDecision;
|
|
14
|
+
taskNewStatus: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ResolveDisputeError {
|
|
17
|
+
success: false;
|
|
18
|
+
error: string;
|
|
19
|
+
code: 'DISPUTE_NOT_FOUND' | 'ALREADY_RESOLVED' | 'TASK_NOT_FOUND' | 'INVALID_DECISION';
|
|
20
|
+
}
|
|
21
|
+
export type ResolveDisputeOutcome = ResolveDisputeResult | ResolveDisputeError;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve a dispute with a decision
|
|
24
|
+
*
|
|
25
|
+
* Effects based on decision:
|
|
26
|
+
* - coder: Task stays completed/disputed (dispute resolved, coder's implementation accepted)
|
|
27
|
+
* - reviewer: Task goes back to in_progress (coder must fix per reviewer feedback)
|
|
28
|
+
* - custom: Task goes back to in_progress (coder implements custom solution)
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolve(db: Database.Database, input: ResolveDisputeInput): ResolveDisputeOutcome;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve dispute in favor of coder
|
|
33
|
+
* Task is marked as completed.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveInFavorOfCoder(db: Database.Database, disputeId: string, resolvedBy: string, notes?: string): ResolveDisputeOutcome;
|
|
36
|
+
/**
|
|
37
|
+
* Resolve dispute in favor of reviewer
|
|
38
|
+
* Task goes back to in_progress for coder to fix.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveInFavorOfReviewer(db: Database.Database, disputeId: string, resolvedBy: string, notes?: string): ResolveDisputeOutcome;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve dispute with custom solution
|
|
43
|
+
* Task goes back to in_progress for coder to implement custom solution.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveWithCustomSolution(db: Database.Database, disputeId: string, resolvedBy: string, notes: string): ResolveDisputeOutcome;
|
|
46
|
+
/**
|
|
47
|
+
* Check if a dispute can be resolved
|
|
48
|
+
*/
|
|
49
|
+
export declare function canResolve(db: Database.Database, disputeId: string): {
|
|
50
|
+
canResolve: boolean;
|
|
51
|
+
reason?: string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Get resolution summary for a resolved dispute
|
|
55
|
+
*/
|
|
56
|
+
export declare function getResolutionSummary(dispute: Dispute): string | null;
|
|
57
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/disputes/resolve.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAU3C,OAAO,KAAK,EACV,OAAO,EACP,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EACA,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,CAAC;CACxB;AAED,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAsD/E;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,mBAAmB,GACzB,qBAAqB,CAoDvB;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,qBAAqB,CAOvB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,qBAAqB,CAOvB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,qBAAqB,CAOvB;AAID;;GAEG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,GAChB;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAiB1C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAiBpE"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dispute resolution logic
|
|
4
|
+
*
|
|
5
|
+
* Handles resolving disputes with decisions (coder/reviewer/custom)
|
|
6
|
+
* and updates task status accordingly.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.resolve = resolve;
|
|
10
|
+
exports.resolveInFavorOfCoder = resolveInFavorOfCoder;
|
|
11
|
+
exports.resolveInFavorOfReviewer = resolveInFavorOfReviewer;
|
|
12
|
+
exports.resolveWithCustomSolution = resolveWithCustomSolution;
|
|
13
|
+
exports.canResolve = canResolve;
|
|
14
|
+
exports.getResolutionSummary = getResolutionSummary;
|
|
15
|
+
const queries_js_1 = require("./queries.js");
|
|
16
|
+
const queries_js_2 = require("../database/queries.js");
|
|
17
|
+
const types_js_1 = require("./types.js");
|
|
18
|
+
// ============ Validation ============
|
|
19
|
+
/**
|
|
20
|
+
* Validate resolution input
|
|
21
|
+
*/
|
|
22
|
+
function validateInput(db, input) {
|
|
23
|
+
// Check dispute exists
|
|
24
|
+
const dispute = (0, queries_js_1.getDispute)(db, input.disputeId);
|
|
25
|
+
if (!dispute) {
|
|
26
|
+
return {
|
|
27
|
+
success: false,
|
|
28
|
+
error: `Dispute not found: ${input.disputeId}`,
|
|
29
|
+
code: 'DISPUTE_NOT_FOUND',
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// Check dispute is not already resolved
|
|
33
|
+
if (dispute.status === 'resolved') {
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
error: `Dispute already resolved: ${input.disputeId}`,
|
|
37
|
+
code: 'ALREADY_RESOLVED',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Check decision is valid
|
|
41
|
+
if (!(0, types_js_1.isResolutionDecision)(input.decision)) {
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
error: `Invalid decision: ${input.decision}. Must be coder, reviewer, or custom`,
|
|
45
|
+
code: 'INVALID_DECISION',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Check task exists
|
|
49
|
+
const task = (0, queries_js_2.getTask)(db, dispute.task_id);
|
|
50
|
+
if (!task) {
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
error: `Task not found for dispute: ${dispute.task_id}`,
|
|
54
|
+
code: 'TASK_NOT_FOUND',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
// ============ Main Resolve Function ============
|
|
60
|
+
/**
|
|
61
|
+
* Resolve a dispute with a decision
|
|
62
|
+
*
|
|
63
|
+
* Effects based on decision:
|
|
64
|
+
* - coder: Task stays completed/disputed (dispute resolved, coder's implementation accepted)
|
|
65
|
+
* - reviewer: Task goes back to in_progress (coder must fix per reviewer feedback)
|
|
66
|
+
* - custom: Task goes back to in_progress (coder implements custom solution)
|
|
67
|
+
*/
|
|
68
|
+
function resolve(db, input) {
|
|
69
|
+
// Validate input
|
|
70
|
+
const validationError = validateInput(db, input);
|
|
71
|
+
if (validationError) {
|
|
72
|
+
return validationError;
|
|
73
|
+
}
|
|
74
|
+
// Get dispute and task (we know they exist from validation)
|
|
75
|
+
const dispute = (0, queries_js_1.getDispute)(db, input.disputeId);
|
|
76
|
+
const task = (0, queries_js_2.getTask)(db, dispute.task_id);
|
|
77
|
+
// Update dispute to resolved
|
|
78
|
+
(0, queries_js_1.resolveDispute)(db, dispute.id, input.decision, input.resolvedBy, input.notes);
|
|
79
|
+
// Update task status based on decision
|
|
80
|
+
let taskNewStatus;
|
|
81
|
+
if (input.decision === 'coder') {
|
|
82
|
+
// Accept coder's implementation - mark as completed
|
|
83
|
+
taskNewStatus = 'completed';
|
|
84
|
+
(0, queries_js_2.updateTaskStatus)(db, task.id, 'completed', input.resolvedBy, `Dispute resolved in favor of coder. ${input.notes ?? ''}`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Reviewer or custom - task goes back to in_progress
|
|
88
|
+
taskNewStatus = 'in_progress';
|
|
89
|
+
(0, queries_js_2.updateTaskStatus)(db, task.id, 'in_progress', input.resolvedBy, `Dispute resolved in favor of ${input.decision}. Coder must implement changes. ${input.notes ?? ''}`);
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
success: true,
|
|
93
|
+
disputeId: dispute.id,
|
|
94
|
+
taskId: task.id,
|
|
95
|
+
decision: input.decision,
|
|
96
|
+
taskNewStatus,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// ============ Specialized Resolution Functions ============
|
|
100
|
+
/**
|
|
101
|
+
* Resolve dispute in favor of coder
|
|
102
|
+
* Task is marked as completed.
|
|
103
|
+
*/
|
|
104
|
+
function resolveInFavorOfCoder(db, disputeId, resolvedBy, notes) {
|
|
105
|
+
return resolve(db, {
|
|
106
|
+
disputeId,
|
|
107
|
+
decision: 'coder',
|
|
108
|
+
resolvedBy,
|
|
109
|
+
notes,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Resolve dispute in favor of reviewer
|
|
114
|
+
* Task goes back to in_progress for coder to fix.
|
|
115
|
+
*/
|
|
116
|
+
function resolveInFavorOfReviewer(db, disputeId, resolvedBy, notes) {
|
|
117
|
+
return resolve(db, {
|
|
118
|
+
disputeId,
|
|
119
|
+
decision: 'reviewer',
|
|
120
|
+
resolvedBy,
|
|
121
|
+
notes,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Resolve dispute with custom solution
|
|
126
|
+
* Task goes back to in_progress for coder to implement custom solution.
|
|
127
|
+
*/
|
|
128
|
+
function resolveWithCustomSolution(db, disputeId, resolvedBy, notes) {
|
|
129
|
+
return resolve(db, {
|
|
130
|
+
disputeId,
|
|
131
|
+
decision: 'custom',
|
|
132
|
+
resolvedBy,
|
|
133
|
+
notes,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// ============ Dispute State Helpers ============
|
|
137
|
+
/**
|
|
138
|
+
* Check if a dispute can be resolved
|
|
139
|
+
*/
|
|
140
|
+
function canResolve(db, disputeId) {
|
|
141
|
+
const dispute = (0, queries_js_1.getDispute)(db, disputeId);
|
|
142
|
+
if (!dispute) {
|
|
143
|
+
return { canResolve: false, reason: 'Dispute not found' };
|
|
144
|
+
}
|
|
145
|
+
if (dispute.status === 'resolved') {
|
|
146
|
+
return { canResolve: false, reason: 'Dispute already resolved' };
|
|
147
|
+
}
|
|
148
|
+
const task = (0, queries_js_2.getTask)(db, dispute.task_id);
|
|
149
|
+
if (!task) {
|
|
150
|
+
return { canResolve: false, reason: 'Associated task not found' };
|
|
151
|
+
}
|
|
152
|
+
return { canResolve: true };
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get resolution summary for a resolved dispute
|
|
156
|
+
*/
|
|
157
|
+
function getResolutionSummary(dispute) {
|
|
158
|
+
if (dispute.status !== 'resolved' || !dispute.resolution) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const decisionText = dispute.resolution === 'coder'
|
|
162
|
+
? "Coder's implementation accepted"
|
|
163
|
+
: dispute.resolution === 'reviewer'
|
|
164
|
+
? 'Reviewer position accepted, coder must fix'
|
|
165
|
+
: 'Custom solution required';
|
|
166
|
+
const resolvedDate = dispute.resolved_at
|
|
167
|
+
? new Date(dispute.resolved_at).toLocaleDateString()
|
|
168
|
+
: 'unknown date';
|
|
169
|
+
return `Resolved: ${decisionText} on ${resolvedDate}. ${dispute.resolution_notes ?? ''}`;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/disputes/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stale dispute handling
|
|
3
|
+
*
|
|
4
|
+
* Tracks disputes that have been open longer than the configured timeout
|
|
5
|
+
* and provides alerting and listing functionality.
|
|
6
|
+
*/
|
|
7
|
+
import type Database from 'better-sqlite3';
|
|
8
|
+
import { type DisputeWithTask } from './queries.js';
|
|
9
|
+
import type { Dispute } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Default timeout in days before a dispute is considered stale
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEFAULT_TIMEOUT_DAYS = 7;
|
|
14
|
+
/**
|
|
15
|
+
* Alert types for stale disputes
|
|
16
|
+
*/
|
|
17
|
+
export type StaleAlertType = 'log' | 'webhook' | 'none';
|
|
18
|
+
/**
|
|
19
|
+
* Result of checking for stale disputes
|
|
20
|
+
*/
|
|
21
|
+
export interface StaleDisputesResult {
|
|
22
|
+
/** Number of stale disputes found */
|
|
23
|
+
count: number;
|
|
24
|
+
/** The stale disputes with task info */
|
|
25
|
+
disputes: StaleDisputeInfo[];
|
|
26
|
+
/** Timeout days used for detection */
|
|
27
|
+
timeoutDays: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Stale dispute with additional computed info
|
|
31
|
+
*/
|
|
32
|
+
export interface StaleDisputeInfo {
|
|
33
|
+
/** The dispute record */
|
|
34
|
+
dispute: DisputeWithTask;
|
|
35
|
+
/** Number of days the dispute has been open */
|
|
36
|
+
daysOpen: number;
|
|
37
|
+
/** Days past the timeout threshold */
|
|
38
|
+
daysPastThreshold: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check for stale disputes
|
|
42
|
+
*/
|
|
43
|
+
export declare function checkStaleDisputes(db: Database.Database, timeoutDays?: number): StaleDisputesResult;
|
|
44
|
+
/**
|
|
45
|
+
* Get stale dispute summary for display
|
|
46
|
+
*/
|
|
47
|
+
export declare function getStaleDisputeSummary(db: Database.Database, timeoutDays?: number): string;
|
|
48
|
+
/**
|
|
49
|
+
* Alert configuration for stale disputes
|
|
50
|
+
*/
|
|
51
|
+
export interface StaleAlertConfig {
|
|
52
|
+
/** Type of alert to send */
|
|
53
|
+
type: StaleAlertType;
|
|
54
|
+
/** Webhook URL (required if type is 'webhook') */
|
|
55
|
+
webhookUrl?: string;
|
|
56
|
+
/** Custom message prefix */
|
|
57
|
+
messagePrefix?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Alert result
|
|
61
|
+
*/
|
|
62
|
+
export interface AlertResult {
|
|
63
|
+
success: boolean;
|
|
64
|
+
alertType: StaleAlertType;
|
|
65
|
+
message?: string;
|
|
66
|
+
error?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Send alert for stale disputes
|
|
70
|
+
*/
|
|
71
|
+
export declare function alertStaleDisputes(db: Database.Database, config: StaleAlertConfig, timeoutDays?: number): Promise<AlertResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Options for periodic stale checking
|
|
74
|
+
*/
|
|
75
|
+
export interface StaleCheckOptions {
|
|
76
|
+
/** Timeout in days */
|
|
77
|
+
timeoutDays: number;
|
|
78
|
+
/** Alert configuration */
|
|
79
|
+
alert: StaleAlertConfig;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Perform a stale check and alert if needed
|
|
83
|
+
* Called from daemon or cron job
|
|
84
|
+
*/
|
|
85
|
+
export declare function performStaleCheck(db: Database.Database, options: StaleCheckOptions): Promise<{
|
|
86
|
+
staleCount: number;
|
|
87
|
+
alertSent: boolean;
|
|
88
|
+
alertResult?: AlertResult;
|
|
89
|
+
}>;
|
|
90
|
+
/**
|
|
91
|
+
* List all open disputes sorted by age (oldest first)
|
|
92
|
+
*/
|
|
93
|
+
export declare function listOpenDisputesByAge(db: Database.Database): DisputeWithTask[];
|
|
94
|
+
/**
|
|
95
|
+
* Get dispute age in human-readable format
|
|
96
|
+
*/
|
|
97
|
+
export declare function formatDisputeAge(dispute: Dispute): string;
|
|
98
|
+
//# sourceMappingURL=stale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale.d.ts","sourceRoot":"","sources":["../../src/disputes/stale.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C;;GAEG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAIxD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,OAAO,EAAE,eAAe,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,GAAE,MAA6B,GACzC,mBAAmB,CAoBrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,GAAE,MAA6B,GACzC,MAAM,CAwBR;AAID;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,gBAAgB,EACxB,WAAW,GAAE,MAA6B,GACzC,OAAO,CAAC,WAAW,CAAC,CAsDtB;AAwCD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC,CAqBD;AAID;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GACpB,eAAe,EAAE,CAInB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAkBzD"}
|