@jamesaphoenix/tx-core 0.8.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db.d.ts +6 -6
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +29 -2
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/cycle-scan-service-impl.d.ts +28 -0
- package/dist/internal/cycle-scan-service-impl.d.ts.map +1 -0
- package/dist/internal/cycle-scan-service-impl.js +877 -0
- package/dist/internal/cycle-scan-service-impl.js.map +1 -0
- package/dist/internal/doc-service-impl.d.ts +42 -0
- package/dist/internal/doc-service-impl.d.ts.map +1 -0
- package/dist/internal/doc-service-impl.js +812 -0
- package/dist/internal/doc-service-impl.js.map +1 -0
- package/dist/internal/embedding-service-impl.d.ts +202 -0
- package/dist/internal/embedding-service-impl.d.ts.map +1 -0
- package/dist/internal/embedding-service-impl.js +466 -0
- package/dist/internal/embedding-service-impl.js.map +1 -0
- package/dist/internal/memory-service-impl.d.ts +49 -0
- package/dist/internal/memory-service-impl.d.ts.map +1 -0
- package/dist/internal/memory-service-impl.js +1061 -0
- package/dist/internal/memory-service-impl.js.map +1 -0
- package/dist/internal/spec-trace-service-impl.d.ts +50 -0
- package/dist/internal/spec-trace-service-impl.d.ts.map +1 -0
- package/dist/internal/spec-trace-service-impl.js +707 -0
- package/dist/internal/spec-trace-service-impl.js.map +1 -0
- package/dist/internal/sync/service-impl.d.ts +41 -0
- package/dist/internal/sync/service-impl.d.ts.map +1 -0
- package/dist/{services/sync-service.js → internal/sync/service-impl.js} +954 -499
- package/dist/internal/sync/service-impl.js.map +1 -0
- package/dist/layer.d.ts +8 -5
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +22 -10
- package/dist/layer.js.map +1 -1
- package/dist/mappers/anchor.d.ts.map +1 -1
- package/dist/mappers/anchor.js +5 -4
- package/dist/mappers/anchor.js.map +1 -1
- package/dist/mappers/attempt.d.ts.map +1 -1
- package/dist/mappers/attempt.js +2 -1
- package/dist/mappers/attempt.js.map +1 -1
- package/dist/mappers/candidate.d.ts.map +1 -1
- package/dist/mappers/candidate.js +2 -1
- package/dist/mappers/candidate.js.map +1 -1
- package/dist/mappers/claim.d.ts.map +1 -1
- package/dist/mappers/claim.js +2 -1
- package/dist/mappers/claim.js.map +1 -1
- package/dist/mappers/doc.d.ts.map +1 -1
- package/dist/mappers/doc.js +9 -8
- package/dist/mappers/doc.js.map +1 -1
- package/dist/mappers/edge.d.ts.map +1 -1
- package/dist/mappers/edge.js +4 -3
- package/dist/mappers/edge.js.map +1 -1
- package/dist/mappers/file-learning.d.ts.map +1 -1
- package/dist/mappers/file-learning.js +2 -1
- package/dist/mappers/file-learning.js.map +1 -1
- package/dist/mappers/index.d.ts +1 -0
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +2 -0
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/learning.d.ts.map +1 -1
- package/dist/mappers/learning.js +4 -3
- package/dist/mappers/learning.js.map +1 -1
- package/dist/mappers/memory.d.ts.map +1 -1
- package/dist/mappers/memory.js +7 -6
- package/dist/mappers/memory.js.map +1 -1
- package/dist/mappers/orchestrator-state.d.ts.map +1 -1
- package/dist/mappers/orchestrator-state.js +2 -1
- package/dist/mappers/orchestrator-state.js.map +1 -1
- package/dist/mappers/pin.d.ts.map +1 -1
- package/dist/mappers/pin.js +2 -1
- package/dist/mappers/pin.js.map +1 -1
- package/dist/mappers/run.d.ts.map +1 -1
- package/dist/mappers/run.js +4 -3
- package/dist/mappers/run.js.map +1 -1
- package/dist/mappers/spec-trace.d.ts +11 -0
- package/dist/mappers/spec-trace.d.ts.map +1 -0
- package/dist/mappers/spec-trace.js +59 -0
- package/dist/mappers/spec-trace.js.map +1 -0
- package/dist/mappers/task.d.ts.map +1 -1
- package/dist/mappers/task.js +4 -4
- package/dist/mappers/task.js.map +1 -1
- package/dist/mappers/worker.d.ts.map +1 -1
- package/dist/mappers/worker.js +2 -1
- package/dist/mappers/worker.js.map +1 -1
- package/dist/migrations-embedded.d.ts.map +1 -1
- package/dist/migrations-embedded.js +15 -0
- package/dist/migrations-embedded.js.map +1 -1
- package/dist/repo/anchor-repo.d.ts +2 -2
- package/dist/repo/anchor-repo.d.ts.map +1 -1
- package/dist/repo/anchor-repo.js +18 -17
- package/dist/repo/anchor-repo.js.map +1 -1
- package/dist/repo/attempt-repo.d.ts.map +1 -1
- package/dist/repo/attempt-repo.js +11 -10
- package/dist/repo/attempt-repo.js.map +1 -1
- package/dist/repo/candidate-repo.d.ts.map +1 -1
- package/dist/repo/candidate-repo.js +8 -7
- package/dist/repo/candidate-repo.js.map +1 -1
- package/dist/repo/claim-repo.d.ts +4 -4
- package/dist/repo/claim-repo.d.ts.map +1 -1
- package/dist/repo/claim-repo.js +14 -13
- package/dist/repo/claim-repo.js.map +1 -1
- package/dist/repo/compaction-repo.d.ts +4 -4
- package/dist/repo/compaction-repo.d.ts.map +1 -1
- package/dist/repo/compaction-repo.js +7 -6
- package/dist/repo/compaction-repo.js.map +1 -1
- package/dist/repo/deduplication-repo.d.ts.map +1 -1
- package/dist/repo/deduplication-repo.js +80 -57
- package/dist/repo/deduplication-repo.js.map +1 -1
- package/dist/repo/dep-repo.d.ts.map +1 -1
- package/dist/repo/dep-repo.js +90 -88
- package/dist/repo/dep-repo.js.map +1 -1
- package/dist/repo/doc-repo.d.ts +2 -63
- package/dist/repo/doc-repo.d.ts.map +1 -1
- package/dist/repo/doc-repo.js +6 -4
- package/dist/repo/doc-repo.js.map +1 -1
- package/dist/repo/doc-repo.types.d.ts +64 -0
- package/dist/repo/doc-repo.types.d.ts.map +1 -0
- package/dist/repo/doc-repo.types.js +2 -0
- package/dist/repo/doc-repo.types.js.map +1 -0
- package/dist/repo/edge-repo.d.ts.map +1 -1
- package/dist/repo/edge-repo.js +91 -81
- package/dist/repo/edge-repo.js.map +1 -1
- package/dist/repo/file-learning-repo.d.ts.map +1 -1
- package/dist/repo/file-learning-repo.js +7 -6
- package/dist/repo/file-learning-repo.js.map +1 -1
- package/dist/repo/guard-repo.d.ts +4 -4
- package/dist/repo/guard-repo.d.ts.map +1 -1
- package/dist/repo/guard-repo.js +8 -7
- package/dist/repo/guard-repo.js.map +1 -1
- package/dist/repo/index.d.ts +1 -0
- package/dist/repo/index.d.ts.map +1 -1
- package/dist/repo/index.js +1 -0
- package/dist/repo/index.js.map +1 -1
- package/dist/repo/label-repo.d.ts +4 -4
- package/dist/repo/label-repo.d.ts.map +1 -1
- package/dist/repo/label-repo.js +9 -8
- package/dist/repo/label-repo.js.map +1 -1
- package/dist/repo/learning-repo.d.ts +2 -2
- package/dist/repo/learning-repo.d.ts.map +1 -1
- package/dist/repo/learning-repo.js +37 -31
- package/dist/repo/learning-repo.js.map +1 -1
- package/dist/repo/memory-repo/document.d.ts +4 -0
- package/dist/repo/memory-repo/document.d.ts.map +1 -0
- package/dist/repo/memory-repo/document.js +205 -0
- package/dist/repo/memory-repo/document.js.map +1 -0
- package/dist/repo/memory-repo/link.d.ts +4 -0
- package/dist/repo/memory-repo/link.d.ts.map +1 -0
- package/dist/repo/memory-repo/link.js +124 -0
- package/dist/repo/memory-repo/link.js.map +1 -0
- package/dist/repo/memory-repo/property.d.ts +4 -0
- package/dist/repo/memory-repo/property.d.ts.map +1 -0
- package/dist/repo/memory-repo/property.js +56 -0
- package/dist/repo/memory-repo/property.js.map +1 -0
- package/dist/repo/memory-repo/shared.d.ts +28 -0
- package/dist/repo/memory-repo/shared.d.ts.map +1 -0
- package/dist/repo/memory-repo/shared.js +63 -0
- package/dist/repo/memory-repo/shared.js.map +1 -0
- package/dist/repo/memory-repo/source.d.ts +4 -0
- package/dist/repo/memory-repo/source.d.ts.map +1 -0
- package/dist/repo/memory-repo/source.js +58 -0
- package/dist/repo/memory-repo/source.js.map +1 -0
- package/dist/repo/memory-repo.d.ts +14 -10
- package/dist/repo/memory-repo.d.ts.map +1 -1
- package/dist/repo/memory-repo.js +8 -527
- package/dist/repo/memory-repo.js.map +1 -1
- package/dist/repo/message-repo.d.ts.map +1 -1
- package/dist/repo/message-repo.js +9 -8
- package/dist/repo/message-repo.js.map +1 -1
- package/dist/repo/orchestrator-state-repo.d.ts.map +1 -1
- package/dist/repo/orchestrator-state-repo.js +2 -1
- package/dist/repo/orchestrator-state-repo.js.map +1 -1
- package/dist/repo/pin-repo.d.ts.map +1 -1
- package/dist/repo/pin-repo.js +5 -4
- package/dist/repo/pin-repo.js.map +1 -1
- package/dist/repo/run-repo.d.ts.map +1 -1
- package/dist/repo/run-repo.js +11 -10
- package/dist/repo/run-repo.js.map +1 -1
- package/dist/repo/spec-trace-repo.d.ts +9 -0
- package/dist/repo/spec-trace-repo.d.ts.map +1 -0
- package/dist/repo/spec-trace-repo.filter.d.ts +3 -0
- package/dist/repo/spec-trace-repo.filter.d.ts.map +1 -0
- package/dist/repo/spec-trace-repo.filter.js +13 -0
- package/dist/repo/spec-trace-repo.filter.js.map +1 -0
- package/dist/repo/spec-trace-repo.js +323 -0
- package/dist/repo/spec-trace-repo.js.map +1 -0
- package/dist/repo/spec-trace-repo.types.d.ts +60 -0
- package/dist/repo/spec-trace-repo.types.d.ts.map +1 -0
- package/dist/repo/spec-trace-repo.types.js +2 -0
- package/dist/repo/spec-trace-repo.types.js.map +1 -0
- package/dist/repo/task-repo/factory.d.ts +4 -0
- package/dist/repo/task-repo/factory.d.ts.map +1 -0
- package/dist/repo/task-repo/factory.js +7 -0
- package/dist/repo/task-repo/factory.js.map +1 -0
- package/dist/repo/task-repo/read.d.ts +6 -0
- package/dist/repo/task-repo/read.d.ts.map +1 -0
- package/dist/repo/task-repo/read.js +332 -0
- package/dist/repo/task-repo/read.js.map +1 -0
- package/dist/repo/task-repo/shared.d.ts +10 -0
- package/dist/repo/task-repo/shared.d.ts.map +1 -0
- package/dist/repo/task-repo/shared.js +29 -0
- package/dist/repo/task-repo/shared.js.map +1 -0
- package/dist/repo/task-repo/write.d.ts +6 -0
- package/dist/repo/task-repo/write.d.ts.map +1 -0
- package/dist/repo/task-repo/write.js +182 -0
- package/dist/repo/task-repo/write.js.map +1 -0
- package/dist/repo/task-repo.d.ts +5 -4
- package/dist/repo/task-repo.d.ts.map +1 -1
- package/dist/repo/task-repo.js +2 -520
- package/dist/repo/task-repo.js.map +1 -1
- package/dist/repo/tracked-project-repo.d.ts.map +1 -1
- package/dist/repo/tracked-project-repo.js +6 -5
- package/dist/repo/tracked-project-repo.js.map +1 -1
- package/dist/repo/worker-repo.d.ts.map +1 -1
- package/dist/repo/worker-repo.js +60 -47
- package/dist/repo/worker-repo.js.map +1 -1
- package/dist/schemas/index.d.ts +4 -2
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +2 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/sync-events.d.ts +25 -0
- package/dist/schemas/sync-events.d.ts.map +1 -0
- package/dist/schemas/sync-events.js +23 -0
- package/dist/schemas/sync-events.js.map +1 -0
- package/dist/schemas/sync.d.ts +20 -10
- package/dist/schemas/sync.d.ts.map +1 -1
- package/dist/schemas/sync.js +10 -4
- package/dist/schemas/sync.js.map +1 -1
- package/dist/services/agent-service.d.ts +4 -4
- package/dist/services/agent-service.d.ts.map +1 -1
- package/dist/services/agent-service.js.map +1 -1
- package/dist/services/anchor/anchor-service-core-ops.d.ts +125 -0
- package/dist/services/anchor/anchor-service-core-ops.d.ts.map +1 -0
- package/dist/services/anchor/anchor-service-core-ops.js +41 -0
- package/dist/services/anchor/anchor-service-core-ops.js.map +1 -0
- package/dist/services/anchor/anchor-service-deps.d.ts +10 -0
- package/dist/services/anchor/anchor-service-deps.d.ts.map +1 -0
- package/dist/services/anchor/anchor-service-deps.js +2 -0
- package/dist/services/anchor/anchor-service-deps.js.map +1 -0
- package/dist/services/anchor/anchor-service-ops.d.ts +296 -0
- package/dist/services/anchor/anchor-service-ops.d.ts.map +1 -0
- package/dist/services/anchor/anchor-service-ops.js +9 -0
- package/dist/services/anchor/anchor-service-ops.js.map +1 -0
- package/dist/services/anchor/anchor-service-state-ops.d.ts +116 -0
- package/dist/services/anchor/anchor-service-state-ops.d.ts.map +1 -0
- package/dist/services/anchor/anchor-service-state-ops.js +150 -0
- package/dist/services/anchor/anchor-service-state-ops.js.map +1 -0
- package/dist/services/anchor/anchor-service-validation.d.ts +7 -0
- package/dist/services/anchor/anchor-service-validation.d.ts.map +1 -0
- package/dist/services/anchor/anchor-service-validation.js +114 -0
- package/dist/services/anchor/anchor-service-validation.js.map +1 -0
- package/dist/services/anchor/anchor-service-verification-ops.d.ts +71 -0
- package/dist/services/anchor/anchor-service-verification-ops.d.ts.map +1 -0
- package/dist/services/anchor/anchor-service-verification-ops.js +169 -0
- package/dist/services/anchor/anchor-service-verification-ops.js.map +1 -0
- package/dist/services/anchor/anchor-verification-batch.d.ts +12 -0
- package/dist/services/anchor/anchor-verification-batch.d.ts.map +1 -0
- package/dist/services/anchor/anchor-verification-batch.js +109 -0
- package/dist/services/anchor/anchor-verification-batch.js.map +1 -0
- package/dist/services/anchor/anchor-verification-single.d.ts +7 -0
- package/dist/services/anchor/anchor-verification-single.d.ts.map +1 -0
- package/dist/services/anchor/anchor-verification-single.js +407 -0
- package/dist/services/anchor/anchor-verification-single.js.map +1 -0
- package/dist/services/anchor/anchor-verification-utils.d.ts +19 -0
- package/dist/services/anchor/anchor-verification-utils.d.ts.map +1 -0
- package/dist/services/anchor/anchor-verification-utils.js +107 -0
- package/dist/services/anchor/anchor-verification-utils.js.map +1 -0
- package/dist/services/anchor-service.d.ts +12 -90
- package/dist/services/anchor-service.d.ts.map +1 -1
- package/dist/services/anchor-service.js +5 -530
- package/dist/services/anchor-service.js.map +1 -1
- package/dist/services/anchor-verification.d.ts +9 -60
- package/dist/services/anchor-verification.d.ts.map +1 -1
- package/dist/services/anchor-verification.js +5 -796
- package/dist/services/anchor-verification.js.map +1 -1
- package/dist/services/ast-grep-service/patterns.d.ts +90 -0
- package/dist/services/ast-grep-service/patterns.d.ts.map +1 -0
- package/dist/services/ast-grep-service/patterns.js +261 -0
- package/dist/services/ast-grep-service/patterns.js.map +1 -0
- package/dist/services/ast-grep-service.d.ts +2 -13
- package/dist/services/ast-grep-service.d.ts.map +1 -1
- package/dist/services/ast-grep-service.js +3 -261
- package/dist/services/ast-grep-service.js.map +1 -1
- package/dist/services/auto-sync-service.d.ts +3 -3
- package/dist/services/auto-sync-service.d.ts.map +1 -1
- package/dist/services/auto-sync-service.js +12 -13
- package/dist/services/auto-sync-service.js.map +1 -1
- package/dist/services/compaction-service.d.ts +6 -6
- package/dist/services/compaction-service.d.ts.map +1 -1
- package/dist/services/compaction-service.js +11 -7
- package/dist/services/compaction-service.js.map +1 -1
- package/dist/services/cycle-scan-service.d.ts +1 -27
- package/dist/services/cycle-scan-service.d.ts.map +1 -1
- package/dist/services/cycle-scan-service.js +1 -876
- package/dist/services/cycle-scan-service.js.map +1 -1
- package/dist/services/daemon-service/process.d.ts +93 -0
- package/dist/services/daemon-service/process.d.ts.map +1 -0
- package/dist/services/daemon-service/process.js +325 -0
- package/dist/services/daemon-service/process.js.map +1 -0
- package/dist/services/daemon-service/templates.d.ts +88 -0
- package/dist/services/daemon-service/templates.d.ts.map +1 -0
- package/dist/services/daemon-service/templates.js +119 -0
- package/dist/services/daemon-service/templates.js.map +1 -0
- package/dist/services/daemon-service.d.ts +8 -160
- package/dist/services/daemon-service.d.ts.map +1 -1
- package/dist/services/daemon-service.js +4 -440
- package/dist/services/daemon-service.js.map +1 -1
- package/dist/services/doc-service.d.ts +1 -41
- package/dist/services/doc-service.d.ts.map +1 -1
- package/dist/services/doc-service.js +1 -780
- package/dist/services/doc-service.js.map +1 -1
- package/dist/services/edge-service.d.ts +6 -6
- package/dist/services/edge-service.d.ts.map +1 -1
- package/dist/services/edge-service.js.map +1 -1
- package/dist/services/embedding-service.d.ts +1 -201
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +1 -465
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/feedback-tracker.d.ts +2 -2
- package/dist/services/feedback-tracker.d.ts.map +1 -1
- package/dist/services/feedback-tracker.js.map +1 -1
- package/dist/services/file-watcher-service/shared.d.ts +76 -0
- package/dist/services/file-watcher-service/shared.d.ts.map +1 -0
- package/dist/services/file-watcher-service/shared.js +43 -0
- package/dist/services/file-watcher-service/shared.js.map +1 -0
- package/dist/services/file-watcher-service.d.ts +2 -42
- package/dist/services/file-watcher-service.d.ts.map +1 -1
- package/dist/services/file-watcher-service.js +1 -46
- package/dist/services/file-watcher-service.js.map +1 -1
- package/dist/services/graph-expansion/from-files.d.ts +14 -0
- package/dist/services/graph-expansion/from-files.d.ts.map +1 -0
- package/dist/services/graph-expansion/from-files.js +187 -0
- package/dist/services/graph-expansion/from-files.js.map +1 -0
- package/dist/services/graph-expansion/live.d.ts +11 -0
- package/dist/services/graph-expansion/live.d.ts.map +1 -0
- package/dist/services/graph-expansion/live.js +263 -0
- package/dist/services/graph-expansion/live.js.map +1 -0
- package/dist/services/graph-expansion.d.ts +17 -20
- package/dist/services/graph-expansion.d.ts.map +1 -1
- package/dist/services/graph-expansion.js +2 -439
- package/dist/services/graph-expansion.js.map +1 -1
- package/dist/services/guard-service.d.ts +2 -2
- package/dist/services/guard-service.d.ts.map +1 -1
- package/dist/services/guard-service.js.map +1 -1
- package/dist/services/index.d.ts +3 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/learning-service.d.ts +4 -4
- package/dist/services/learning-service.d.ts.map +1 -1
- package/dist/services/learning-service.js.map +1 -1
- package/dist/services/llm-service.d.ts +4 -4
- package/dist/services/llm-service.d.ts.map +1 -1
- package/dist/services/llm-service.js.map +1 -1
- package/dist/services/memory-retriever-service.d.ts.map +1 -1
- package/dist/services/memory-retriever-service.js.map +1 -1
- package/dist/services/memory-service.d.ts +1 -48
- package/dist/services/memory-service.d.ts.map +1 -1
- package/dist/services/memory-service.js +1 -1060
- package/dist/services/memory-service.js.map +1 -1
- package/dist/services/migration-service.d.ts +6 -6
- package/dist/services/migration-service.d.ts.map +1 -1
- package/dist/services/migration-service.js +6 -2
- package/dist/services/migration-service.js.map +1 -1
- package/dist/services/orchestrator-service.d.ts +2 -2
- package/dist/services/orchestrator-service.d.ts.map +1 -1
- package/dist/services/orchestrator-service.js.map +1 -1
- package/dist/services/pin-service.d.ts.map +1 -1
- package/dist/services/pin-service.js +21 -28
- package/dist/services/pin-service.js.map +1 -1
- package/dist/services/promotion-service.d.ts +4 -4
- package/dist/services/promotion-service.d.ts.map +1 -1
- package/dist/services/promotion-service.js.map +1 -1
- package/dist/services/query-expansion-service.d.ts +2 -2
- package/dist/services/query-expansion-service.d.ts.map +1 -1
- package/dist/services/query-expansion-service.js.map +1 -1
- package/dist/services/reflect-service.d.ts +6 -6
- package/dist/services/reflect-service.d.ts.map +1 -1
- package/dist/services/reflect-service.js.map +1 -1
- package/dist/services/reranker-service.d.ts +2 -2
- package/dist/services/reranker-service.d.ts.map +1 -1
- package/dist/services/reranker-service.js.map +1 -1
- package/dist/services/retriever-scoring.d.ts +52 -0
- package/dist/services/retriever-scoring.d.ts.map +1 -0
- package/dist/services/retriever-scoring.js +146 -0
- package/dist/services/retriever-scoring.js.map +1 -0
- package/dist/services/retriever-service.d.ts.map +1 -1
- package/dist/services/retriever-service.js +1 -191
- package/dist/services/retriever-service.js.map +1 -1
- package/dist/services/run-heartbeat-service.d.ts +10 -10
- package/dist/services/run-heartbeat-service.d.ts.map +1 -1
- package/dist/services/run-heartbeat-service.js.map +1 -1
- package/dist/services/score-service.d.ts +2 -2
- package/dist/services/score-service.d.ts.map +1 -1
- package/dist/services/score-service.js.map +1 -1
- package/dist/services/spec-trace-service.d.ts +2 -0
- package/dist/services/spec-trace-service.d.ts.map +1 -0
- package/dist/services/spec-trace-service.js +2 -0
- package/dist/services/spec-trace-service.js.map +1 -0
- package/dist/services/stream-service.d.ts +31 -0
- package/dist/services/stream-service.d.ts.map +1 -0
- package/dist/services/stream-service.js +162 -0
- package/dist/services/stream-service.js.map +1 -0
- package/dist/services/swarm-verification/shared.d.ts +71 -0
- package/dist/services/swarm-verification/shared.d.ts.map +1 -0
- package/dist/services/swarm-verification/shared.js +108 -0
- package/dist/services/swarm-verification/shared.js.map +1 -0
- package/dist/services/swarm-verification.d.ts +4 -68
- package/dist/services/swarm-verification.d.ts.map +1 -1
- package/dist/services/swarm-verification.js +2 -122
- package/dist/services/swarm-verification.js.map +1 -1
- package/dist/services/sync/converters.d.ts +63 -0
- package/dist/services/sync/converters.d.ts.map +1 -0
- package/dist/services/sync/converters.js +253 -0
- package/dist/services/sync/converters.js.map +1 -0
- package/dist/services/sync/entity-export.d.ts +22 -0
- package/dist/services/sync/entity-export.d.ts.map +1 -0
- package/dist/services/sync/entity-export.js +15 -0
- package/dist/services/sync/entity-export.js.map +1 -0
- package/dist/services/sync/entity-import.d.ts +22 -0
- package/dist/services/sync/entity-import.d.ts.map +1 -0
- package/dist/services/sync/entity-import.js +15 -0
- package/dist/services/sync/entity-import.js.map +1 -0
- package/dist/services/sync/file-utils.d.ts +23 -0
- package/dist/services/sync/file-utils.d.ts.map +1 -0
- package/dist/services/sync/file-utils.js +97 -0
- package/dist/services/sync/file-utils.js.map +1 -0
- package/dist/services/sync/index.d.ts +3 -0
- package/dist/services/sync/index.d.ts.map +1 -0
- package/dist/services/sync/index.js +2 -0
- package/dist/services/sync/index.js.map +1 -0
- package/dist/services/sync/service.d.ts +2 -0
- package/dist/services/sync/service.d.ts.map +1 -0
- package/dist/services/sync/service.js +2 -0
- package/dist/services/sync/service.js.map +1 -0
- package/dist/services/sync/sync-helpers.d.ts +54 -0
- package/dist/services/sync/sync-helpers.d.ts.map +1 -0
- package/dist/services/sync/sync-helpers.js +245 -0
- package/dist/services/sync/sync-helpers.js.map +1 -0
- package/dist/services/sync/types.d.ts +104 -0
- package/dist/services/sync/types.d.ts.map +1 -0
- package/dist/services/sync/types.js +5 -0
- package/dist/services/sync/types.js.map +1 -0
- package/dist/services/task-service/internals.d.ts +36 -0
- package/dist/services/task-service/internals.d.ts.map +1 -0
- package/dist/services/task-service/internals.js +270 -0
- package/dist/services/task-service/internals.js.map +1 -0
- package/dist/services/task-service.d.ts +2 -1
- package/dist/services/task-service.d.ts.map +1 -1
- package/dist/services/task-service.js +28 -236
- package/dist/services/task-service.js.map +1 -1
- package/dist/services/tracing-service.d.ts +2 -2
- package/dist/services/tracing-service.d.ts.map +1 -1
- package/dist/services/tracing-service.js.map +1 -1
- package/dist/services/transcript-adapter.d.ts +6 -6
- package/dist/services/transcript-adapter.d.ts.map +1 -1
- package/dist/services/transcript-adapter.js +3 -8
- package/dist/services/transcript-adapter.js.map +1 -1
- package/dist/services/validation-service.d.ts +8 -8
- package/dist/services/validation-service.d.ts.map +1 -1
- package/dist/services/validation-service.js.map +1 -1
- package/dist/services/verify-service.d.ts +2 -2
- package/dist/services/verify-service.d.ts.map +1 -1
- package/dist/services/verify-service.js.map +1 -1
- package/dist/services/worker-process/runtime.d.ts +51 -0
- package/dist/services/worker-process/runtime.d.ts.map +1 -0
- package/dist/services/worker-process/runtime.js +150 -0
- package/dist/services/worker-process/runtime.js.map +1 -0
- package/dist/services/worker-process.d.ts +3 -18
- package/dist/services/worker-process.d.ts.map +1 -1
- package/dist/services/worker-process.js +3 -173
- package/dist/services/worker-process.js.map +1 -1
- package/dist/services/worker-service.d.ts +6 -6
- package/dist/services/worker-service.d.ts.map +1 -1
- package/dist/services/worker-service.js.map +1 -1
- package/dist/utils/db-result.d.ts +14 -0
- package/dist/utils/db-result.d.ts.map +1 -0
- package/dist/utils/db-result.js +37 -0
- package/dist/utils/db-result.js.map +1 -0
- package/dist/utils/doc-renderer.d.ts +10 -10
- package/dist/utils/doc-renderer.d.ts.map +1 -1
- package/dist/utils/doc-renderer.js.map +1 -1
- package/dist/utils/ears-validator.d.ts +2 -2
- package/dist/utils/ears-validator.d.ts.map +1 -1
- package/dist/utils/ears-validator.js.map +1 -1
- package/dist/utils/file-path.d.ts +27 -0
- package/dist/utils/file-path.d.ts.map +1 -0
- package/dist/utils/file-path.js +77 -0
- package/dist/utils/file-path.js.map +1 -0
- package/dist/utils/glob.d.ts +2 -11
- package/dist/utils/glob.d.ts.map +1 -1
- package/dist/utils/glob.js +22 -13
- package/dist/utils/glob.js.map +1 -1
- package/dist/utils/spec-discovery.d.ts +34 -0
- package/dist/utils/spec-discovery.d.ts.map +1 -0
- package/dist/utils/spec-discovery.js +344 -0
- package/dist/utils/spec-discovery.js.map +1 -0
- package/dist/utils/toml-config.d.ts +7 -2
- package/dist/utils/toml-config.d.ts.map +1 -1
- package/dist/utils/toml-config.js +106 -2
- package/dist/utils/toml-config.js.map +1 -1
- package/dist/utils/ulid.d.ts +8 -0
- package/dist/utils/ulid.d.ts.map +1 -0
- package/dist/utils/ulid.js +30 -0
- package/dist/utils/ulid.js.map +1 -0
- package/dist/worker/hooks.d.ts +10 -10
- package/dist/worker/hooks.d.ts.map +1 -1
- package/dist/worker/run-worker.d.ts.map +1 -1
- package/dist/worker/run-worker.js.map +1 -1
- package/migrations/033_sync_events.sql +33 -0
- package/migrations/034_spec_test_traceability.sql +51 -0
- package/migrations/035_anchor_schema_repair.sql +82 -0
- package/package.json +4 -3
- package/dist/services/sync-service.d.ts +0 -247
- package/dist/services/sync-service.d.ts.map +0 -1
- package/dist/services/sync-service.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cycle-scan-service.js","sourceRoot":"","sources":["../../src/services/cycle-scan-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cycle-scan-service.js","sourceRoot":"","sources":["../../src/services/cycle-scan-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,wCAAwC,CAAA"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { DaemonError } from "../../errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Default path for the daemon PID file.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PID_FILE_PATH = ".tx/daemon.pid";
|
|
7
|
+
/**
|
|
8
|
+
* Check if a process with the given PID is currently running.
|
|
9
|
+
* Uses kill signal 0 which doesn't actually send a signal but checks if the process exists.
|
|
10
|
+
*
|
|
11
|
+
* @param pid - The process ID to check
|
|
12
|
+
* @returns Effect that resolves to true if the process is running, false otherwise
|
|
13
|
+
*/
|
|
14
|
+
export declare const isProcessRunning: (pid: number) => Effect.Effect<boolean, DaemonError>;
|
|
15
|
+
/**
|
|
16
|
+
* Write a PID to the daemon PID file.
|
|
17
|
+
* Creates the .tx directory if it doesn't exist.
|
|
18
|
+
*
|
|
19
|
+
* @param pid - The process ID to write
|
|
20
|
+
* @returns Effect that resolves to void on success
|
|
21
|
+
*/
|
|
22
|
+
export declare const writePid: (pid: number) => Effect.Effect<void, DaemonError>;
|
|
23
|
+
/**
|
|
24
|
+
* Remove the PID file only if its current content matches the expected value.
|
|
25
|
+
*
|
|
26
|
+
* This is a compare-and-swap guard that prevents the TOCTOU race where
|
|
27
|
+
* readPid()'s stale cleanup could delete a freshly-written PID file created
|
|
28
|
+
* by a concurrent daemon start. Between isProcessRunning() returning false
|
|
29
|
+
* and removePid() executing, a new daemon may have written a fresh PID.
|
|
30
|
+
*
|
|
31
|
+
* If the file no longer exists or its content has changed, this is a no-op.
|
|
32
|
+
*
|
|
33
|
+
* @param expectedContent - The PID file content we originally read
|
|
34
|
+
* @returns Effect that resolves to void on success
|
|
35
|
+
*/
|
|
36
|
+
export declare const removePidIfContentMatches: (expectedContent: string) => Effect.Effect<void, DaemonError>;
|
|
37
|
+
/**
|
|
38
|
+
* Read the PID from the daemon PID file.
|
|
39
|
+
* Returns null if the file doesn't exist.
|
|
40
|
+
* Handles stale PID cleanup: if the PID file exists but the process is not running,
|
|
41
|
+
* the stale PID file is automatically removed and null is returned.
|
|
42
|
+
*
|
|
43
|
+
* @returns Effect that resolves to the PID number, or null if no valid PID file exists
|
|
44
|
+
*/
|
|
45
|
+
export declare const readPid: () => Effect.Effect<number | null, DaemonError>;
|
|
46
|
+
/**
|
|
47
|
+
* Remove the daemon PID file.
|
|
48
|
+
* Does nothing if the file doesn't exist.
|
|
49
|
+
*
|
|
50
|
+
* @returns Effect that resolves to void on success
|
|
51
|
+
*/
|
|
52
|
+
export declare const removePid: () => Effect.Effect<void, DaemonError>;
|
|
53
|
+
/**
|
|
54
|
+
* Write the daemon start timestamp to a file.
|
|
55
|
+
*/
|
|
56
|
+
export declare const writeStartedAt: (date: Date) => Effect.Effect<void, DaemonError>;
|
|
57
|
+
/**
|
|
58
|
+
* Read the daemon start timestamp from file.
|
|
59
|
+
*/
|
|
60
|
+
export declare const readStartedAt: () => Effect.Effect<Date | null, DaemonError>;
|
|
61
|
+
/**
|
|
62
|
+
* Remove the daemon start timestamp file.
|
|
63
|
+
*/
|
|
64
|
+
export declare const removeStartedAt: () => Effect.Effect<void, DaemonError>;
|
|
65
|
+
/**
|
|
66
|
+
* Send a signal to a process by PID.
|
|
67
|
+
* Returns true if the signal was sent successfully, false if the process doesn't exist.
|
|
68
|
+
*/
|
|
69
|
+
export declare const sendSignal: (pid: number, signal: NodeJS.Signals) => Effect.Effect<boolean, DaemonError>;
|
|
70
|
+
/**
|
|
71
|
+
* Wait for a process to exit with a timeout.
|
|
72
|
+
* Returns true if the process exited, false if timeout was reached.
|
|
73
|
+
*/
|
|
74
|
+
export declare const waitForExit: (pid: number, timeoutMs: number) => Effect.Effect<boolean, DaemonError>;
|
|
75
|
+
/**
|
|
76
|
+
* Try to atomically create the PID file using O_EXCL.
|
|
77
|
+
* Returns true if created successfully, false if the file already exists.
|
|
78
|
+
* This is the atomic primitive that prevents the TOCTOU race condition.
|
|
79
|
+
*/
|
|
80
|
+
export declare const tryAtomicPidCreate: () => Effect.Effect<boolean, DaemonError>;
|
|
81
|
+
/**
|
|
82
|
+
* Atomically acquire the daemon PID file lock.
|
|
83
|
+
*
|
|
84
|
+
* Uses O_EXCL flag to prevent the TOCTOU race condition where two concurrent
|
|
85
|
+
* `tx daemon start` commands both pass the existence check before either writes
|
|
86
|
+
* the PID file. With O_EXCL, the filesystem guarantees only one process can
|
|
87
|
+
* create the file — the loser gets EEXIST immediately.
|
|
88
|
+
*
|
|
89
|
+
* If the file already exists, checks whether the PID is stale (process dead).
|
|
90
|
+
* Stale files are removed and creation is retried once.
|
|
91
|
+
*/
|
|
92
|
+
export declare const acquirePidLock: () => Effect.Effect<void, DaemonError>;
|
|
93
|
+
//# sourceMappingURL=process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/services/daemon-service/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,aAAa,mBAAmB,CAAA;AAO7C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CA4B9E,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAelE,CAAA;AAEJ;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB,GAAI,iBAAiB,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAkB/F,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,QAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,WAAW,CAqC/D,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAaxD,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAevE,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,WAAW,CAgBnE,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAa9D,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,CAAC,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAsBhG,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAc3F,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CA0BrE,CAAA;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAwD7D,CAAA"}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync, writeSync } from "node:fs";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { DaemonError } from "../../errors.js";
|
|
5
|
+
/**
|
|
6
|
+
* Default path for the daemon PID file.
|
|
7
|
+
*/
|
|
8
|
+
export const PID_FILE_PATH = ".tx/daemon.pid";
|
|
9
|
+
/**
|
|
10
|
+
* Path to store the daemon start timestamp for uptime calculation.
|
|
11
|
+
*/
|
|
12
|
+
const STARTED_AT_PATH = ".tx/daemon.started";
|
|
13
|
+
/**
|
|
14
|
+
* Check if a process with the given PID is currently running.
|
|
15
|
+
* Uses kill signal 0 which doesn't actually send a signal but checks if the process exists.
|
|
16
|
+
*
|
|
17
|
+
* @param pid - The process ID to check
|
|
18
|
+
* @returns Effect that resolves to true if the process is running, false otherwise
|
|
19
|
+
*/
|
|
20
|
+
export const isProcessRunning = (pid) => Effect.try({
|
|
21
|
+
try: () => {
|
|
22
|
+
// Signal 0 doesn't send anything but checks if process exists
|
|
23
|
+
process.kill(pid, 0);
|
|
24
|
+
return true;
|
|
25
|
+
},
|
|
26
|
+
catch: (error) => error
|
|
27
|
+
}).pipe(Effect.catchAll((error) => {
|
|
28
|
+
// ESRCH means no such process - return false (not running) as success value
|
|
29
|
+
if (error instanceof Error && "code" in error && error.code === "ESRCH") {
|
|
30
|
+
return Effect.succeed(false);
|
|
31
|
+
}
|
|
32
|
+
// EPERM means process exists but we don't have permission to signal it
|
|
33
|
+
// The process is still running, just owned by another user - return true as success value
|
|
34
|
+
if (error instanceof Error && "code" in error && error.code === "EPERM") {
|
|
35
|
+
return Effect.succeed(true);
|
|
36
|
+
}
|
|
37
|
+
// Any other error is unexpected - convert to DaemonError
|
|
38
|
+
return Effect.fail(new DaemonError({
|
|
39
|
+
code: "PROCESS_CHECK_FAILED",
|
|
40
|
+
reason: `Failed to check if process ${pid} is running: ${error}`,
|
|
41
|
+
pid
|
|
42
|
+
}));
|
|
43
|
+
}));
|
|
44
|
+
/**
|
|
45
|
+
* Write a PID to the daemon PID file.
|
|
46
|
+
* Creates the .tx directory if it doesn't exist.
|
|
47
|
+
*
|
|
48
|
+
* @param pid - The process ID to write
|
|
49
|
+
* @returns Effect that resolves to void on success
|
|
50
|
+
*/
|
|
51
|
+
export const writePid = (pid) => Effect.try({
|
|
52
|
+
try: () => {
|
|
53
|
+
const dir = dirname(PID_FILE_PATH);
|
|
54
|
+
if (!existsSync(dir)) {
|
|
55
|
+
mkdirSync(dir, { recursive: true });
|
|
56
|
+
}
|
|
57
|
+
writeFileSync(PID_FILE_PATH, String(pid), "utf-8");
|
|
58
|
+
},
|
|
59
|
+
catch: (error) => new DaemonError({
|
|
60
|
+
code: "PID_WRITE_FAILED",
|
|
61
|
+
reason: `Failed to write PID file: ${error}`,
|
|
62
|
+
pid
|
|
63
|
+
})
|
|
64
|
+
});
|
|
65
|
+
/**
|
|
66
|
+
* Remove the PID file only if its current content matches the expected value.
|
|
67
|
+
*
|
|
68
|
+
* This is a compare-and-swap guard that prevents the TOCTOU race where
|
|
69
|
+
* readPid()'s stale cleanup could delete a freshly-written PID file created
|
|
70
|
+
* by a concurrent daemon start. Between isProcessRunning() returning false
|
|
71
|
+
* and removePid() executing, a new daemon may have written a fresh PID.
|
|
72
|
+
*
|
|
73
|
+
* If the file no longer exists or its content has changed, this is a no-op.
|
|
74
|
+
*
|
|
75
|
+
* @param expectedContent - The PID file content we originally read
|
|
76
|
+
* @returns Effect that resolves to void on success
|
|
77
|
+
*/
|
|
78
|
+
export const removePidIfContentMatches = (expectedContent) => Effect.try({
|
|
79
|
+
try: () => {
|
|
80
|
+
if (!existsSync(PID_FILE_PATH)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const currentContent = readFileSync(PID_FILE_PATH, "utf-8").trim();
|
|
84
|
+
if (currentContent === expectedContent) {
|
|
85
|
+
unlinkSync(PID_FILE_PATH);
|
|
86
|
+
}
|
|
87
|
+
// Content changed — a concurrent start wrote a fresh PID. Do not delete.
|
|
88
|
+
},
|
|
89
|
+
catch: (error) => new DaemonError({
|
|
90
|
+
code: "PID_REMOVE_FAILED",
|
|
91
|
+
reason: `Failed to remove PID file: ${error}`,
|
|
92
|
+
pid: null
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* Read the PID from the daemon PID file.
|
|
97
|
+
* Returns null if the file doesn't exist.
|
|
98
|
+
* Handles stale PID cleanup: if the PID file exists but the process is not running,
|
|
99
|
+
* the stale PID file is automatically removed and null is returned.
|
|
100
|
+
*
|
|
101
|
+
* @returns Effect that resolves to the PID number, or null if no valid PID file exists
|
|
102
|
+
*/
|
|
103
|
+
export const readPid = () => Effect.gen(function* () {
|
|
104
|
+
// Check if file exists
|
|
105
|
+
if (!existsSync(PID_FILE_PATH)) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
// Read the PID file
|
|
109
|
+
const content = yield* Effect.try({
|
|
110
|
+
try: () => readFileSync(PID_FILE_PATH, "utf-8").trim(),
|
|
111
|
+
catch: (error) => new DaemonError({
|
|
112
|
+
code: "PID_READ_FAILED",
|
|
113
|
+
reason: `Failed to read PID file: ${error}`,
|
|
114
|
+
pid: null
|
|
115
|
+
})
|
|
116
|
+
});
|
|
117
|
+
// Parse the PID
|
|
118
|
+
const pid = parseInt(content, 10);
|
|
119
|
+
if (isNaN(pid) || pid <= 0) {
|
|
120
|
+
// Invalid PID content — use CAS removal so we don't delete a fresh PID
|
|
121
|
+
// written by a concurrent daemon start between our read and this removal.
|
|
122
|
+
yield* removePidIfContentMatches(content);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
// Check if the process is still running
|
|
126
|
+
const running = yield* isProcessRunning(pid);
|
|
127
|
+
if (!running) {
|
|
128
|
+
// Stale PID — use CAS removal so we don't delete a fresh PID written
|
|
129
|
+
// by a concurrent daemon start between isProcessRunning() and here.
|
|
130
|
+
yield* removePidIfContentMatches(content);
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
return pid;
|
|
134
|
+
});
|
|
135
|
+
/**
|
|
136
|
+
* Remove the daemon PID file.
|
|
137
|
+
* Does nothing if the file doesn't exist.
|
|
138
|
+
*
|
|
139
|
+
* @returns Effect that resolves to void on success
|
|
140
|
+
*/
|
|
141
|
+
export const removePid = () => Effect.try({
|
|
142
|
+
try: () => {
|
|
143
|
+
if (existsSync(PID_FILE_PATH)) {
|
|
144
|
+
unlinkSync(PID_FILE_PATH);
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
catch: (error) => new DaemonError({
|
|
148
|
+
code: "PID_REMOVE_FAILED",
|
|
149
|
+
reason: `Failed to remove PID file: ${error}`,
|
|
150
|
+
pid: null
|
|
151
|
+
})
|
|
152
|
+
});
|
|
153
|
+
/**
|
|
154
|
+
* Write the daemon start timestamp to a file.
|
|
155
|
+
*/
|
|
156
|
+
export const writeStartedAt = (date) => Effect.try({
|
|
157
|
+
try: () => {
|
|
158
|
+
const dir = dirname(STARTED_AT_PATH);
|
|
159
|
+
if (!existsSync(dir)) {
|
|
160
|
+
mkdirSync(dir, { recursive: true });
|
|
161
|
+
}
|
|
162
|
+
writeFileSync(STARTED_AT_PATH, date.toISOString(), "utf-8");
|
|
163
|
+
},
|
|
164
|
+
catch: (error) => new DaemonError({
|
|
165
|
+
code: "STARTED_AT_WRITE_FAILED",
|
|
166
|
+
reason: `Failed to write started_at file: ${error}`,
|
|
167
|
+
pid: null
|
|
168
|
+
})
|
|
169
|
+
});
|
|
170
|
+
/**
|
|
171
|
+
* Read the daemon start timestamp from file.
|
|
172
|
+
*/
|
|
173
|
+
export const readStartedAt = () => Effect.try({
|
|
174
|
+
try: () => {
|
|
175
|
+
if (!existsSync(STARTED_AT_PATH)) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
const content = readFileSync(STARTED_AT_PATH, "utf-8").trim();
|
|
179
|
+
const date = new Date(content);
|
|
180
|
+
return isNaN(date.getTime()) ? null : date;
|
|
181
|
+
},
|
|
182
|
+
catch: (error) => new DaemonError({
|
|
183
|
+
code: "STARTED_AT_READ_FAILED",
|
|
184
|
+
reason: `Failed to read started_at file: ${error}`,
|
|
185
|
+
pid: null
|
|
186
|
+
})
|
|
187
|
+
});
|
|
188
|
+
/**
|
|
189
|
+
* Remove the daemon start timestamp file.
|
|
190
|
+
*/
|
|
191
|
+
export const removeStartedAt = () => Effect.try({
|
|
192
|
+
try: () => {
|
|
193
|
+
if (existsSync(STARTED_AT_PATH)) {
|
|
194
|
+
unlinkSync(STARTED_AT_PATH);
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
catch: (error) => new DaemonError({
|
|
198
|
+
code: "STARTED_AT_REMOVE_FAILED",
|
|
199
|
+
reason: `Failed to remove started_at file: ${error}`,
|
|
200
|
+
pid: null
|
|
201
|
+
})
|
|
202
|
+
});
|
|
203
|
+
/**
|
|
204
|
+
* Send a signal to a process by PID.
|
|
205
|
+
* Returns true if the signal was sent successfully, false if the process doesn't exist.
|
|
206
|
+
*/
|
|
207
|
+
export const sendSignal = (pid, signal) => Effect.try({
|
|
208
|
+
try: () => {
|
|
209
|
+
process.kill(pid, signal);
|
|
210
|
+
return true;
|
|
211
|
+
},
|
|
212
|
+
catch: (error) => error
|
|
213
|
+
}).pipe(Effect.catchAll((error) => {
|
|
214
|
+
// ESRCH means no such process - return false (not running) as success value
|
|
215
|
+
if (error instanceof Error && "code" in error && error.code === "ESRCH") {
|
|
216
|
+
return Effect.succeed(false);
|
|
217
|
+
}
|
|
218
|
+
// Any other error is unexpected - convert to DaemonError
|
|
219
|
+
return Effect.fail(new DaemonError({
|
|
220
|
+
code: "SIGNAL_FAILED",
|
|
221
|
+
reason: `Failed to send signal ${signal} to process ${pid}: ${error}`,
|
|
222
|
+
pid
|
|
223
|
+
}));
|
|
224
|
+
}));
|
|
225
|
+
/**
|
|
226
|
+
* Wait for a process to exit with a timeout.
|
|
227
|
+
* Returns true if the process exited, false if timeout was reached.
|
|
228
|
+
*/
|
|
229
|
+
export const waitForExit = (pid, timeoutMs) => Effect.gen(function* () {
|
|
230
|
+
const startTime = Date.now();
|
|
231
|
+
const pollIntervalMs = 100;
|
|
232
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
233
|
+
const running = yield* isProcessRunning(pid);
|
|
234
|
+
if (!running) {
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
yield* Effect.sleep(`${pollIntervalMs} millis`);
|
|
238
|
+
}
|
|
239
|
+
return false;
|
|
240
|
+
});
|
|
241
|
+
/**
|
|
242
|
+
* Try to atomically create the PID file using O_EXCL.
|
|
243
|
+
* Returns true if created successfully, false if the file already exists.
|
|
244
|
+
* This is the atomic primitive that prevents the TOCTOU race condition.
|
|
245
|
+
*/
|
|
246
|
+
export const tryAtomicPidCreate = () => Effect.try({
|
|
247
|
+
try: () => {
|
|
248
|
+
// O_CREAT | O_EXCL | O_WRONLY — fails with EEXIST if file already exists
|
|
249
|
+
const fd = openSync(PID_FILE_PATH, "wx");
|
|
250
|
+
// Write the lock holder's PID so stale detection works.
|
|
251
|
+
// This is the `tx daemon start` process PID, not the daemon PID.
|
|
252
|
+
// After spawning, writePid() overwrites with the actual daemon PID.
|
|
253
|
+
writeSync(fd, String(process.pid));
|
|
254
|
+
closeSync(fd);
|
|
255
|
+
return true;
|
|
256
|
+
},
|
|
257
|
+
catch: (error) => error
|
|
258
|
+
}).pipe(Effect.catchAll((error) => {
|
|
259
|
+
if (error instanceof Error && "code" in error && error.code === "EEXIST") {
|
|
260
|
+
return Effect.succeed(false);
|
|
261
|
+
}
|
|
262
|
+
return Effect.fail(new DaemonError({
|
|
263
|
+
code: "PID_WRITE_FAILED",
|
|
264
|
+
reason: `Failed to create PID lock file: ${error}`,
|
|
265
|
+
pid: null
|
|
266
|
+
}));
|
|
267
|
+
}));
|
|
268
|
+
/**
|
|
269
|
+
* Atomically acquire the daemon PID file lock.
|
|
270
|
+
*
|
|
271
|
+
* Uses O_EXCL flag to prevent the TOCTOU race condition where two concurrent
|
|
272
|
+
* `tx daemon start` commands both pass the existence check before either writes
|
|
273
|
+
* the PID file. With O_EXCL, the filesystem guarantees only one process can
|
|
274
|
+
* create the file — the loser gets EEXIST immediately.
|
|
275
|
+
*
|
|
276
|
+
* If the file already exists, checks whether the PID is stale (process dead).
|
|
277
|
+
* Stale files are removed and creation is retried once.
|
|
278
|
+
*/
|
|
279
|
+
export const acquirePidLock = () => Effect.gen(function* () {
|
|
280
|
+
const dir = dirname(PID_FILE_PATH);
|
|
281
|
+
if (!existsSync(dir)) {
|
|
282
|
+
mkdirSync(dir, { recursive: true });
|
|
283
|
+
}
|
|
284
|
+
// First attempt: atomic file creation
|
|
285
|
+
const created = yield* tryAtomicPidCreate();
|
|
286
|
+
if (created)
|
|
287
|
+
return;
|
|
288
|
+
// File already exists — check if the PID inside is stale
|
|
289
|
+
const existingContent = yield* Effect.try({
|
|
290
|
+
try: () => existsSync(PID_FILE_PATH) ? readFileSync(PID_FILE_PATH, "utf-8").trim() : null,
|
|
291
|
+
catch: (error) => new DaemonError({
|
|
292
|
+
code: "PID_READ_FAILED",
|
|
293
|
+
reason: `Failed to read existing PID file: ${error}`,
|
|
294
|
+
pid: null
|
|
295
|
+
})
|
|
296
|
+
});
|
|
297
|
+
if (existingContent !== null && existingContent !== "") {
|
|
298
|
+
const pid = parseInt(existingContent, 10);
|
|
299
|
+
if (!isNaN(pid) && pid > 0) {
|
|
300
|
+
const running = yield* isProcessRunning(pid);
|
|
301
|
+
if (running) {
|
|
302
|
+
return yield* Effect.fail(new DaemonError({
|
|
303
|
+
code: "ALREADY_RUNNING",
|
|
304
|
+
reason: `Daemon is already running with PID ${pid}`,
|
|
305
|
+
pid
|
|
306
|
+
}));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// PID file is stale — CAS removal to avoid deleting a fresh PID written
|
|
311
|
+
// by a concurrent start that raced us between isProcessRunning() and here.
|
|
312
|
+
if (existingContent !== null) {
|
|
313
|
+
yield* removePidIfContentMatches(existingContent);
|
|
314
|
+
}
|
|
315
|
+
const retryCreated = yield* tryAtomicPidCreate();
|
|
316
|
+
if (!retryCreated) {
|
|
317
|
+
// Another process won the race after our stale cleanup
|
|
318
|
+
return yield* Effect.fail(new DaemonError({
|
|
319
|
+
code: "ALREADY_RUNNING",
|
|
320
|
+
reason: "Another daemon start is in progress",
|
|
321
|
+
pid: null
|
|
322
|
+
}));
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
//# sourceMappingURL=process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/services/daemon-service/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default install path for the launchd plist file.
|
|
3
|
+
* Located in the user's LaunchAgents directory for per-user daemons.
|
|
4
|
+
*/
|
|
5
|
+
export declare const LAUNCHD_PLIST_PATH = "~/Library/LaunchAgents/com.tx.daemon.plist";
|
|
6
|
+
/**
|
|
7
|
+
* Default install path for the systemd service file.
|
|
8
|
+
* Located in the user's systemd user directory for per-user services.
|
|
9
|
+
*/
|
|
10
|
+
export declare const SYSTEMD_SERVICE_PATH = "~/.config/systemd/user/tx-daemon.service";
|
|
11
|
+
/**
|
|
12
|
+
* Options for generating a launchd plist file.
|
|
13
|
+
*/
|
|
14
|
+
export type LaunchdPlistOptions = {
|
|
15
|
+
/**
|
|
16
|
+
* The label for the launchd job (e.g., "com.tx.daemon").
|
|
17
|
+
* This must be unique among all launchd jobs.
|
|
18
|
+
*/
|
|
19
|
+
readonly label: string;
|
|
20
|
+
/**
|
|
21
|
+
* The absolute path to the executable to run.
|
|
22
|
+
*/
|
|
23
|
+
readonly executablePath: string;
|
|
24
|
+
/**
|
|
25
|
+
* Optional path for log output (both stdout and stderr).
|
|
26
|
+
* If not provided, defaults to ~/Library/Logs/tx-daemon.log
|
|
27
|
+
*/
|
|
28
|
+
readonly logPath?: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Generate a macOS launchd plist file content.
|
|
32
|
+
* Creates a valid XML plist that can be used with launchctl to run the daemon.
|
|
33
|
+
*
|
|
34
|
+
* The generated plist configures the daemon to:
|
|
35
|
+
* - Run at load (start when user logs in)
|
|
36
|
+
* - Keep alive (restart if it crashes)
|
|
37
|
+
* - Log stdout and stderr to the specified log path
|
|
38
|
+
*
|
|
39
|
+
* @param options - Configuration options for the plist
|
|
40
|
+
* @returns The XML content for the launchd plist file
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const plist = generateLaunchdPlist({
|
|
45
|
+
* label: "com.tx.daemon",
|
|
46
|
+
* executablePath: "/usr/local/bin/tx",
|
|
47
|
+
* logPath: "~/Library/Logs/tx-daemon.log"
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare const generateLaunchdPlist: (options: LaunchdPlistOptions) => string;
|
|
52
|
+
/**
|
|
53
|
+
* Options for generating a systemd service file.
|
|
54
|
+
*/
|
|
55
|
+
export type SystemdServiceOptions = {
|
|
56
|
+
/**
|
|
57
|
+
* The absolute path to the executable to run.
|
|
58
|
+
*/
|
|
59
|
+
readonly executablePath: string;
|
|
60
|
+
/**
|
|
61
|
+
* Optional user to run the service as.
|
|
62
|
+
* If not provided, the service runs as the current user (for user services).
|
|
63
|
+
*/
|
|
64
|
+
readonly user?: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Generate a Linux systemd service file content.
|
|
68
|
+
* Creates a valid systemd unit file for a user service.
|
|
69
|
+
*
|
|
70
|
+
* The generated service file configures the daemon to:
|
|
71
|
+
* - Start after the network is available
|
|
72
|
+
* - Run as Type=simple (foreground process)
|
|
73
|
+
* - Restart always on failure with 5 second delay
|
|
74
|
+
* - Be enabled for multi-user target
|
|
75
|
+
*
|
|
76
|
+
* @param options - Configuration options for the service file
|
|
77
|
+
* @returns The content for the systemd service file
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const service = generateSystemdService({
|
|
82
|
+
* executablePath: "/usr/local/bin/tx",
|
|
83
|
+
* user: "myuser"
|
|
84
|
+
* })
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare const generateSystemdService: (options: SystemdServiceOptions) => string;
|
|
88
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/services/daemon-service/templates.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,+CAA+C,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,6CAA6C,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAaD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,mBAAmB,KAAG,MAgCnE,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,qBAAqB,KAAG,MA0BvE,CAAA"}
|