@isaacriehm/cairn 0.1.0 → 0.1.4
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/.tsbuildinfo +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/backprop/id.d.ts +0 -14
- package/dist/backprop/id.js +0 -40
- package/dist/backprop/id.js.map +0 -1
- package/dist/backprop/index.d.ts +0 -23
- package/dist/backprop/index.js +0 -21
- package/dist/backprop/index.js.map +0 -1
- package/dist/backprop/prompt.d.ts +0 -16
- package/dist/backprop/prompt.js +0 -101
- package/dist/backprop/prompt.js.map +0 -1
- package/dist/backprop/runner.d.ts +0 -18
- package/dist/backprop/runner.js +0 -95
- package/dist/backprop/runner.js.map +0 -1
- package/dist/backprop/schema.d.ts +0 -61
- package/dist/backprop/schema.js +0 -55
- package/dist/backprop/schema.js.map +0 -1
- package/dist/backprop/types.d.ts +0 -101
- package/dist/backprop/types.js +0 -24
- package/dist/backprop/types.js.map +0 -1
- package/dist/backprop/writer.d.ts +0 -27
- package/dist/backprop/writer.js +0 -301
- package/dist/backprop/writer.js.map +0 -1
- package/dist/claude/error.d.ts +0 -33
- package/dist/claude/error.js +0 -58
- package/dist/claude/error.js.map +0 -1
- package/dist/claude/index.d.ts +0 -3
- package/dist/claude/index.js +0 -3
- package/dist/claude/index.js.map +0 -1
- package/dist/claude/runner.d.ts +0 -11
- package/dist/claude/runner.js +0 -132
- package/dist/claude/runner.js.map +0 -1
- package/dist/claude/types.d.ts +0 -52
- package/dist/claude/types.js +0 -14
- package/dist/claude/types.js.map +0 -1
- package/dist/cli/daemon.d.ts +0 -54
- package/dist/cli/daemon.js +0 -351
- package/dist/cli/daemon.js.map +0 -1
- package/dist/cli/install.d.ts +0 -52
- package/dist/cli/install.js +0 -308
- package/dist/cli/install.js.map +0 -1
- package/dist/cli/mirror.d.ts +0 -1
- package/dist/cli/mirror.js +0 -97
- package/dist/cli/mirror.js.map +0 -1
- package/dist/cli/run.d.ts +0 -1
- package/dist/cli/run.js +0 -174
- package/dist/cli/run.js.map +0 -1
- package/dist/cli/task.d.ts +0 -18
- package/dist/cli/task.js +0 -137
- package/dist/cli/task.js.map +0 -1
- package/dist/cli/watch.d.ts +0 -1
- package/dist/cli/watch.js +0 -73
- package/dist/cli/watch.js.map +0 -1
- package/dist/decision-capture/capture.d.ts +0 -57
- package/dist/decision-capture/capture.js +0 -186
- package/dist/decision-capture/capture.js.map +0 -1
- package/dist/decision-capture/extractor.d.ts +0 -20
- package/dist/decision-capture/extractor.js +0 -103
- package/dist/decision-capture/extractor.js.map +0 -1
- package/dist/decision-capture/id.d.ts +0 -14
- package/dist/decision-capture/id.js +0 -44
- package/dist/decision-capture/id.js.map +0 -1
- package/dist/decision-capture/index.d.ts +0 -25
- package/dist/decision-capture/index.js +0 -21
- package/dist/decision-capture/index.js.map +0 -1
- package/dist/decision-capture/prompt.d.ts +0 -15
- package/dist/decision-capture/prompt.js +0 -68
- package/dist/decision-capture/prompt.js.map +0 -1
- package/dist/decision-capture/refinement-prompt.d.ts +0 -25
- package/dist/decision-capture/refinement-prompt.js +0 -146
- package/dist/decision-capture/refinement-prompt.js.map +0 -1
- package/dist/decision-capture/refinement-schema.d.ts +0 -52
- package/dist/decision-capture/refinement-schema.js +0 -61
- package/dist/decision-capture/refinement-schema.js.map +0 -1
- package/dist/decision-capture/refinement.d.ts +0 -60
- package/dist/decision-capture/refinement.js +0 -439
- package/dist/decision-capture/refinement.js.map +0 -1
- package/dist/decision-capture/schema.d.ts +0 -70
- package/dist/decision-capture/schema.js +0 -71
- package/dist/decision-capture/schema.js.map +0 -1
- package/dist/decision-capture/types.d.ts +0 -201
- package/dist/decision-capture/types.js +0 -20
- package/dist/decision-capture/types.js.map +0 -1
- package/dist/decision-capture/writer.d.ts +0 -90
- package/dist/decision-capture/writer.js +0 -267
- package/dist/decision-capture/writer.js.map +0 -1
- package/dist/frontend/discord/acl.d.ts +0 -6
- package/dist/frontend/discord/acl.js +0 -19
- package/dist/frontend/discord/acl.js.map +0 -1
- package/dist/frontend/discord/channels.d.ts +0 -29
- package/dist/frontend/discord/channels.js +0 -58
- package/dist/frontend/discord/channels.js.map +0 -1
- package/dist/frontend/discord/classifier.d.ts +0 -16
- package/dist/frontend/discord/classifier.js +0 -29
- package/dist/frontend/discord/classifier.js.map +0 -1
- package/dist/frontend/discord/index.d.ts +0 -118
- package/dist/frontend/discord/index.js +0 -1104
- package/dist/frontend/discord/index.js.map +0 -1
- package/dist/frontend/discord/slash.d.ts +0 -18
- package/dist/frontend/discord/slash.js +0 -90
- package/dist/frontend/discord/slash.js.map +0 -1
- package/dist/frontend/inbox.d.ts +0 -17
- package/dist/frontend/inbox.js +0 -30
- package/dist/frontend/inbox.js.map +0 -1
- package/dist/frontend/index.d.ts +0 -8
- package/dist/frontend/index.js +0 -6
- package/dist/frontend/index.js.map +0 -1
- package/dist/frontend/stub/index.d.ts +0 -58
- package/dist/frontend/stub/index.js +0 -144
- package/dist/frontend/stub/index.js.map +0 -1
- package/dist/frontend/types.d.ts +0 -247
- package/dist/frontend/types.js +0 -15
- package/dist/frontend/types.js.map +0 -1
- package/dist/gc/apply.d.ts +0 -26
- package/dist/gc/apply.js +0 -48
- package/dist/gc/apply.js.map +0 -1
- package/dist/gc/canary.d.ts +0 -42
- package/dist/gc/canary.js +0 -134
- package/dist/gc/canary.js.map +0 -1
- package/dist/gc/classify.d.ts +0 -25
- package/dist/gc/classify.js +0 -89
- package/dist/gc/classify.js.map +0 -1
- package/dist/gc/doc-gardening.d.ts +0 -29
- package/dist/gc/doc-gardening.js +0 -146
- package/dist/gc/doc-gardening.js.map +0 -1
- package/dist/gc/frontmatter.d.ts +0 -35
- package/dist/gc/frontmatter.js +0 -111
- package/dist/gc/frontmatter.js.map +0 -1
- package/dist/gc/generator-drift.d.ts +0 -28
- package/dist/gc/generator-drift.js +0 -53
- package/dist/gc/generator-drift.js.map +0 -1
- package/dist/gc/index.d.ts +0 -35
- package/dist/gc/index.js +0 -26
- package/dist/gc/index.js.map +0 -1
- package/dist/gc/quality-update.d.ts +0 -23
- package/dist/gc/quality-update.js +0 -69
- package/dist/gc/quality-update.js.map +0 -1
- package/dist/gc/stub-hits.d.ts +0 -31
- package/dist/gc/stub-hits.js +0 -125
- package/dist/gc/stub-hits.js.map +0 -1
- package/dist/gc/sweep.d.ts +0 -56
- package/dist/gc/sweep.js +0 -178
- package/dist/gc/sweep.js.map +0 -1
- package/dist/gc/types.d.ts +0 -129
- package/dist/gc/types.js +0 -26
- package/dist/gc/types.js.map +0 -1
- package/dist/ground/drift.d.ts +0 -8
- package/dist/ground/drift.js +0 -23
- package/dist/ground/drift.js.map +0 -1
- package/dist/ground/frontmatter.d.ts +0 -20
- package/dist/ground/frontmatter.js +0 -49
- package/dist/ground/frontmatter.js.map +0 -1
- package/dist/ground/glob.d.ts +0 -10
- package/dist/ground/glob.js +0 -46
- package/dist/ground/glob.js.map +0 -1
- package/dist/ground/index.d.ts +0 -14
- package/dist/ground/index.js +0 -10
- package/dist/ground/index.js.map +0 -1
- package/dist/ground/ledgers.d.ts +0 -18
- package/dist/ground/ledgers.js +0 -103
- package/dist/ground/ledgers.js.map +0 -1
- package/dist/ground/manifest.d.ts +0 -10
- package/dist/ground/manifest.js +0 -88
- package/dist/ground/manifest.js.map +0 -1
- package/dist/ground/paths.d.ts +0 -20
- package/dist/ground/paths.js +0 -61
- package/dist/ground/paths.js.map +0 -1
- package/dist/ground/quality-grades.d.ts +0 -11
- package/dist/ground/quality-grades.js +0 -98
- package/dist/ground/quality-grades.js.map +0 -1
- package/dist/ground/schemas.d.ts +0 -306
- package/dist/ground/schemas.js +0 -188
- package/dist/ground/schemas.js.map +0 -1
- package/dist/ground/walk.d.ts +0 -7
- package/dist/ground/walk.js +0 -53
- package/dist/ground/walk.js.map +0 -1
- package/dist/init/detect.d.ts +0 -25
- package/dist/init/detect.js +0 -336
- package/dist/init/detect.js.map +0 -1
- package/dist/init/index.d.ts +0 -14
- package/dist/init/index.js +0 -9
- package/dist/init/index.js.map +0 -1
- package/dist/init/init.d.ts +0 -68
- package/dist/init/init.js +0 -673
- package/dist/init/init.js.map +0 -1
- package/dist/init/mapper.d.ts +0 -160
- package/dist/init/mapper.js +0 -248
- package/dist/init/mapper.js.map +0 -1
- package/dist/init/prompts.d.ts +0 -70
- package/dist/init/prompts.js +0 -80
- package/dist/init/prompts.js.map +0 -1
- package/dist/init/secrets.d.ts +0 -18
- package/dist/init/secrets.js +0 -76
- package/dist/init/secrets.js.map +0 -1
- package/dist/init/seed.d.ts +0 -21
- package/dist/init/seed.js +0 -75
- package/dist/init/seed.js.map +0 -1
- package/dist/init/setup-runners.d.ts +0 -17
- package/dist/init/setup-runners.js +0 -70
- package/dist/init/setup-runners.js.map +0 -1
- package/dist/init/types.d.ts +0 -59
- package/dist/init/types.js +0 -10
- package/dist/init/types.js.map +0 -1
- package/dist/init/walker.d.ts +0 -53
- package/dist/init/walker.js +0 -460
- package/dist/init/walker.js.map +0 -1
- package/dist/init/workflow-block.d.ts +0 -34
- package/dist/init/workflow-block.js +0 -110
- package/dist/init/workflow-block.js.map +0 -1
- package/dist/logger.d.ts +0 -3
- package/dist/logger.js +0 -23
- package/dist/logger.js.map +0 -1
- package/dist/mcp/context.d.ts +0 -16
- package/dist/mcp/context.js +0 -8
- package/dist/mcp/context.js.map +0 -1
- package/dist/mcp/errors.d.ts +0 -17
- package/dist/mcp/errors.js +0 -23
- package/dist/mcp/errors.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -10
- package/dist/mcp/index.js +0 -7
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/path-allowlist.d.ts +0 -25
- package/dist/mcp/path-allowlist.js +0 -66
- package/dist/mcp/path-allowlist.js.map +0 -1
- package/dist/mcp/result.d.ts +0 -8
- package/dist/mcp/result.js +0 -18
- package/dist/mcp/result.js.map +0 -1
- package/dist/mcp/schemas.d.ts +0 -153
- package/dist/mcp/schemas.js +0 -135
- package/dist/mcp/schemas.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -11
- package/dist/mcp/server.js +0 -58
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/telemetry.d.ts +0 -15
- package/dist/mcp/telemetry.js +0 -13
- package/dist/mcp/telemetry.js.map +0 -1
- package/dist/mcp/tools/append.d.ts +0 -8
- package/dist/mcp/tools/append.js +0 -33
- package/dist/mcp/tools/append.js.map +0 -1
- package/dist/mcp/tools/archive.d.ts +0 -8
- package/dist/mcp/tools/archive.js +0 -49
- package/dist/mcp/tools/archive.js.map +0 -1
- package/dist/mcp/tools/ask-operator.d.ts +0 -34
- package/dist/mcp/tools/ask-operator.js +0 -93
- package/dist/mcp/tools/ask-operator.js.map +0 -1
- package/dist/mcp/tools/canonical-for-topic.d.ts +0 -6
- package/dist/mcp/tools/canonical-for-topic.js +0 -40
- package/dist/mcp/tools/canonical-for-topic.js.map +0 -1
- package/dist/mcp/tools/decision-get.d.ts +0 -6
- package/dist/mcp/tools/decision-get.js +0 -49
- package/dist/mcp/tools/decision-get.js.map +0 -1
- package/dist/mcp/tools/decisions-for-symbol.d.ts +0 -7
- package/dist/mcp/tools/decisions-for-symbol.js +0 -42
- package/dist/mcp/tools/decisions-for-symbol.js.map +0 -1
- package/dist/mcp/tools/decisions-in-scope.d.ts +0 -7
- package/dist/mcp/tools/decisions-in-scope.js +0 -47
- package/dist/mcp/tools/decisions-in-scope.js.map +0 -1
- package/dist/mcp/tools/drop-task.d.ts +0 -12
- package/dist/mcp/tools/drop-task.js +0 -47
- package/dist/mcp/tools/drop-task.js.map +0 -1
- package/dist/mcp/tools/get-full.d.ts +0 -7
- package/dist/mcp/tools/get-full.js +0 -46
- package/dist/mcp/tools/get-full.js.map +0 -1
- package/dist/mcp/tools/ground-get.d.ts +0 -7
- package/dist/mcp/tools/ground-get.js +0 -80
- package/dist/mcp/tools/ground-get.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -3
- package/dist/mcp/tools/index.js +0 -44
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/mcp/tools/invariant-get.d.ts +0 -6
- package/dist/mcp/tools/invariant-get.js +0 -49
- package/dist/mcp/tools/invariant-get.js.map +0 -1
- package/dist/mcp/tools/invariants-in-scope.d.ts +0 -7
- package/dist/mcp/tools/invariants-in-scope.js +0 -65
- package/dist/mcp/tools/invariants-in-scope.js.map +0 -1
- package/dist/mcp/tools/query-history.d.ts +0 -9
- package/dist/mcp/tools/query-history.js +0 -33
- package/dist/mcp/tools/query-history.js.map +0 -1
- package/dist/mcp/tools/record-decision.d.ts +0 -14
- package/dist/mcp/tools/record-decision.js +0 -101
- package/dist/mcp/tools/record-decision.js.map +0 -1
- package/dist/mcp/tools/record-run-event.d.ts +0 -10
- package/dist/mcp/tools/record-run-event.js +0 -28
- package/dist/mcp/tools/record-run-event.js.map +0 -1
- package/dist/mcp/tools/search.d.ts +0 -9
- package/dist/mcp/tools/search.js +0 -165
- package/dist/mcp/tools/search.js.map +0 -1
- package/dist/mcp/tools/supersedes-chain.d.ts +0 -6
- package/dist/mcp/tools/supersedes-chain.js +0 -66
- package/dist/mcp/tools/supersedes-chain.js.map +0 -1
- package/dist/mcp/tools/timeline.d.ts +0 -9
- package/dist/mcp/tools/timeline.js +0 -65
- package/dist/mcp/tools/timeline.js.map +0 -1
- package/dist/mcp/tools/types.d.ts +0 -9
- package/dist/mcp/tools/types.js +0 -2
- package/dist/mcp/tools/types.js.map +0 -1
- package/dist/mirror/clone.d.ts +0 -6
- package/dist/mirror/clone.js +0 -48
- package/dist/mirror/clone.js.map +0 -1
- package/dist/mirror/dirty-overlap.d.ts +0 -13
- package/dist/mirror/dirty-overlap.js +0 -77
- package/dist/mirror/dirty-overlap.js.map +0 -1
- package/dist/mirror/index.d.ts +0 -7
- package/dist/mirror/index.js +0 -7
- package/dist/mirror/index.js.map +0 -1
- package/dist/mirror/paths.d.ts +0 -18
- package/dist/mirror/paths.js +0 -45
- package/dist/mirror/paths.js.map +0 -1
- package/dist/mirror/push.d.ts +0 -9
- package/dist/mirror/push.js +0 -27
- package/dist/mirror/push.js.map +0 -1
- package/dist/mirror/state.d.ts +0 -4
- package/dist/mirror/state.js +0 -36
- package/dist/mirror/state.js.map +0 -1
- package/dist/mirror/sync.d.ts +0 -9
- package/dist/mirror/sync.js +0 -33
- package/dist/mirror/sync.js.map +0 -1
- package/dist/mirror/types.d.ts +0 -77
- package/dist/mirror/types.js +0 -2
- package/dist/mirror/types.js.map +0 -1
- package/dist/orchestrator/activity-summarizer.d.ts +0 -33
- package/dist/orchestrator/activity-summarizer.js +0 -120
- package/dist/orchestrator/activity-summarizer.js.map +0 -1
- package/dist/orchestrator/inbox.d.ts +0 -78
- package/dist/orchestrator/inbox.js +0 -115
- package/dist/orchestrator/inbox.js.map +0 -1
- package/dist/orchestrator/index.d.ts +0 -9
- package/dist/orchestrator/index.js +0 -7
- package/dist/orchestrator/index.js.map +0 -1
- package/dist/orchestrator/orchestrator.d.ts +0 -154
- package/dist/orchestrator/orchestrator.js +0 -2437
- package/dist/orchestrator/orchestrator.js.map +0 -1
- package/dist/orchestrator/prompt.d.ts +0 -19
- package/dist/orchestrator/prompt.js +0 -50
- package/dist/orchestrator/prompt.js.map +0 -1
- package/dist/orchestrator/queue.d.ts +0 -21
- package/dist/orchestrator/queue.js +0 -80
- package/dist/orchestrator/queue.js.map +0 -1
- package/dist/orchestrator/run-log.d.ts +0 -53
- package/dist/orchestrator/run-log.js +0 -92
- package/dist/orchestrator/run-log.js.map +0 -1
- package/dist/orchestrator/runner.d.ts +0 -56
- package/dist/orchestrator/runner.js +0 -172
- package/dist/orchestrator/runner.js.map +0 -1
- package/dist/orchestrator/tool-digest.d.ts +0 -35
- package/dist/orchestrator/tool-digest.js +0 -116
- package/dist/orchestrator/tool-digest.js.map +0 -1
- package/dist/orchestrator/types.d.ts +0 -263
- package/dist/orchestrator/types.js +0 -2
- package/dist/orchestrator/types.js.map +0 -1
- package/dist/orchestrator/workspace.d.ts +0 -21
- package/dist/orchestrator/workspace.js +0 -31
- package/dist/orchestrator/workspace.js.map +0 -1
- package/dist/profiles/index.d.ts +0 -3
- package/dist/profiles/index.js +0 -3
- package/dist/profiles/index.js.map +0 -1
- package/dist/profiles/registry.d.ts +0 -5
- package/dist/profiles/registry.js +0 -31
- package/dist/profiles/registry.js.map +0 -1
- package/dist/profiles/types.d.ts +0 -48
- package/dist/profiles/types.js +0 -11
- package/dist/profiles/types.js.map +0 -1
- package/dist/profiles/unknown.d.ts +0 -9
- package/dist/profiles/unknown.js +0 -17
- package/dist/profiles/unknown.js.map +0 -1
- package/dist/reviewer/index.d.ts +0 -6
- package/dist/reviewer/index.js +0 -5
- package/dist/reviewer/index.js.map +0 -1
- package/dist/reviewer/prompt.d.ts +0 -11
- package/dist/reviewer/prompt.js +0 -132
- package/dist/reviewer/prompt.js.map +0 -1
- package/dist/reviewer/remediation.d.ts +0 -15
- package/dist/reviewer/remediation.js +0 -61
- package/dist/reviewer/remediation.js.map +0 -1
- package/dist/reviewer/reviewer.d.ts +0 -9
- package/dist/reviewer/reviewer.js +0 -89
- package/dist/reviewer/reviewer.js.map +0 -1
- package/dist/reviewer/schema.d.ts +0 -45
- package/dist/reviewer/schema.js +0 -43
- package/dist/reviewer/schema.js.map +0 -1
- package/dist/reviewer/types.d.ts +0 -74
- package/dist/reviewer/types.js +0 -14
- package/dist/reviewer/types.js.map +0 -1
- package/dist/sensors/attestation.d.ts +0 -44
- package/dist/sensors/attestation.js +0 -262
- package/dist/sensors/attestation.js.map +0 -1
- package/dist/sensors/catalog.d.ts +0 -41
- package/dist/sensors/catalog.js +0 -123
- package/dist/sensors/catalog.js.map +0 -1
- package/dist/sensors/decisions.d.ts +0 -30
- package/dist/sensors/decisions.js +0 -393
- package/dist/sensors/decisions.js.map +0 -1
- package/dist/sensors/diff.d.ts +0 -27
- package/dist/sensors/diff.js +0 -148
- package/dist/sensors/diff.js.map +0 -1
- package/dist/sensors/index.d.ts +0 -13
- package/dist/sensors/index.js +0 -9
- package/dist/sensors/index.js.map +0 -1
- package/dist/sensors/remediation.d.ts +0 -20
- package/dist/sensors/remediation.js +0 -65
- package/dist/sensors/remediation.js.map +0 -1
- package/dist/sensors/runner.d.ts +0 -44
- package/dist/sensors/runner.js +0 -95
- package/dist/sensors/runner.js.map +0 -1
- package/dist/sensors/structural.d.ts +0 -30
- package/dist/sensors/structural.js +0 -204
- package/dist/sensors/structural.js.map +0 -1
- package/dist/sensors/stub-catalog.d.ts +0 -39
- package/dist/sensors/stub-catalog.js +0 -115
- package/dist/sensors/stub-catalog.js.map +0 -1
- package/dist/sensors/types.d.ts +0 -135
- package/dist/sensors/types.js +0 -14
- package/dist/sensors/types.js.map +0 -1
- package/dist/tier0/classify.d.ts +0 -5
- package/dist/tier0/classify.js +0 -91
- package/dist/tier0/classify.js.map +0 -1
- package/dist/tier0/index.d.ts +0 -3
- package/dist/tier0/index.js +0 -3
- package/dist/tier0/index.js.map +0 -1
- package/dist/tier0/ollama.d.ts +0 -22
- package/dist/tier0/ollama.js +0 -63
- package/dist/tier0/ollama.js.map +0 -1
- package/dist/tier0/types.d.ts +0 -24
- package/dist/tier0/types.js +0 -7
- package/dist/tier0/types.js.map +0 -1
- package/dist/tightener/index.d.ts +0 -4
- package/dist/tightener/index.js +0 -4
- package/dist/tightener/index.js.map +0 -1
- package/dist/tightener/prompt.d.ts +0 -3
- package/dist/tightener/prompt.js +0 -67
- package/dist/tightener/prompt.js.map +0 -1
- package/dist/tightener/schema.d.ts +0 -68
- package/dist/tightener/schema.js +0 -44
- package/dist/tightener/schema.js.map +0 -1
- package/dist/tightener/tighten.d.ts +0 -2
- package/dist/tightener/tighten.js +0 -66
- package/dist/tightener/tighten.js.map +0 -1
- package/dist/tightener/types.d.ts +0 -74
- package/dist/tightener/types.js +0 -6
- package/dist/tightener/types.js.map +0 -1
- package/dist/uat/bundle.d.ts +0 -68
- package/dist/uat/bundle.js +0 -168
- package/dist/uat/bundle.js.map +0 -1
- package/dist/uat/index.d.ts +0 -15
- package/dist/uat/index.js +0 -10
- package/dist/uat/index.js.map +0 -1
- package/dist/uat/persistent.d.ts +0 -64
- package/dist/uat/persistent.js +0 -206
- package/dist/uat/persistent.js.map +0 -1
- package/dist/uat/probes/cli.d.ts +0 -11
- package/dist/uat/probes/cli.js +0 -107
- package/dist/uat/probes/cli.js.map +0 -1
- package/dist/uat/probes/http.d.ts +0 -12
- package/dist/uat/probes/http.js +0 -139
- package/dist/uat/probes/http.js.map +0 -1
- package/dist/uat/probes/index.d.ts +0 -21
- package/dist/uat/probes/index.js +0 -30
- package/dist/uat/probes/index.js.map +0 -1
- package/dist/uat/probes/integration.d.ts +0 -18
- package/dist/uat/probes/integration.js +0 -188
- package/dist/uat/probes/integration.js.map +0 -1
- package/dist/uat/probes/sql/config.d.ts +0 -14
- package/dist/uat/probes/sql/config.js +0 -57
- package/dist/uat/probes/sql/config.js.map +0 -1
- package/dist/uat/probes/sql/index.d.ts +0 -29
- package/dist/uat/probes/sql/index.js +0 -43
- package/dist/uat/probes/sql/index.js.map +0 -1
- package/dist/uat/probes/sql/mysql.d.ts +0 -12
- package/dist/uat/probes/sql/mysql.js +0 -96
- package/dist/uat/probes/sql/mysql.js.map +0 -1
- package/dist/uat/probes/sql/pg.d.ts +0 -20
- package/dist/uat/probes/sql/pg.js +0 -102
- package/dist/uat/probes/sql/pg.js.map +0 -1
- package/dist/uat/probes/sql/sqlite.d.ts +0 -9
- package/dist/uat/probes/sql/sqlite.js +0 -58
- package/dist/uat/probes/sql/sqlite.js.map +0 -1
- package/dist/uat/probes/sql/types.d.ts +0 -46
- package/dist/uat/probes/sql/types.js +0 -10
- package/dist/uat/probes/sql/types.js.map +0 -1
- package/dist/uat/probes/sql.d.ts +0 -9
- package/dist/uat/probes/sql.js +0 -119
- package/dist/uat/probes/sql.js.map +0 -1
- package/dist/uat/probes/ui.d.ts +0 -19
- package/dist/uat/probes/ui.js +0 -244
- package/dist/uat/probes/ui.js.map +0 -1
- package/dist/uat/prompt.d.ts +0 -10
- package/dist/uat/prompt.js +0 -85
- package/dist/uat/prompt.js.map +0 -1
- package/dist/uat/question.d.ts +0 -50
- package/dist/uat/question.js +0 -139
- package/dist/uat/question.js.map +0 -1
- package/dist/uat/rejection.d.ts +0 -58
- package/dist/uat/rejection.js +0 -163
- package/dist/uat/rejection.js.map +0 -1
- package/dist/uat/runner.d.ts +0 -6
- package/dist/uat/runner.js +0 -96
- package/dist/uat/runner.js.map +0 -1
- package/dist/uat/schema.d.ts +0 -322
- package/dist/uat/schema.js +0 -189
- package/dist/uat/schema.js.map +0 -1
- package/dist/uat/types.d.ts +0 -268
- package/dist/uat/types.js +0 -18
- package/dist/uat/types.js.map +0 -1
- package/dist/uat/uat.d.ts +0 -89
- package/dist/uat/uat.js +0 -256
- package/dist/uat/uat.js.map +0 -1
- package/dist/voice/index.d.ts +0 -4
- package/dist/voice/index.js +0 -4
- package/dist/voice/index.js.map +0 -1
- package/dist/voice/model.d.ts +0 -23
- package/dist/voice/model.js +0 -46
- package/dist/voice/model.js.map +0 -1
- package/dist/voice/pipe.d.ts +0 -9
- package/dist/voice/pipe.js +0 -47
- package/dist/voice/pipe.js.map +0 -1
- package/dist/voice/transcribe.d.ts +0 -3
- package/dist/voice/transcribe.js +0 -43
- package/dist/voice/transcribe.js.map +0 -1
- package/dist/voice/types.d.ts +0 -26
- package/dist/voice/types.js +0 -9
- package/dist/voice/types.js.map +0 -1
- package/dist/watch/daemon.d.ts +0 -21
- package/dist/watch/daemon.js +0 -143
- package/dist/watch/daemon.js.map +0 -1
- package/dist/watch/index.d.ts +0 -4
- package/dist/watch/index.js +0 -3
- package/dist/watch/index.js.map +0 -1
- package/dist/watch/regenerate.d.ts +0 -25
- package/dist/watch/regenerate.js +0 -51
- package/dist/watch/regenerate.js.map +0 -1
package/dist/claude/types.d.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subprocess wrapper for the `claude` CLI.
|
|
3
|
-
*
|
|
4
|
-
* Per L42 + operator answer T1: every Tier-1/2/3 LLM call goes through the
|
|
5
|
-
* operator's Claude Code coding-plan subscription via `claude --print
|
|
6
|
-
* --model <tier> --output-format json`. No direct Anthropic SDK calls.
|
|
7
|
-
*
|
|
8
|
-
* Tier mapping is hardcoded (no env vars per operator profile). The CLI's
|
|
9
|
-
* model alias resolution maps `haiku|sonnet|opus` to the latest model id
|
|
10
|
-
* for that family — we don't pin specific snapshots here so the wrapper
|
|
11
|
-
* keeps tracking newer models as Anthropic ships them.
|
|
12
|
-
*/
|
|
13
|
-
export type ClaudeTier = "haiku" | "sonnet" | "opus";
|
|
14
|
-
export interface RunClaudeOptions {
|
|
15
|
-
tier: ClaudeTier;
|
|
16
|
-
/** User prompt — sent on stdin so it can be arbitrary length. */
|
|
17
|
-
prompt: string;
|
|
18
|
-
/** Optional system prompt override (replaces default Claude Code system). */
|
|
19
|
-
system?: string;
|
|
20
|
-
/**
|
|
21
|
-
* Optional JSON Schema for structured output. When provided, the CLI
|
|
22
|
-
* enforces the shape and the wrapper parses + returns under `parsed`.
|
|
23
|
-
*/
|
|
24
|
-
jsonSchema?: object;
|
|
25
|
-
/** Working directory for the subprocess. Default = process.cwd(). */
|
|
26
|
-
cwd?: string;
|
|
27
|
-
/** Hard timeout in ms. Default 120000. */
|
|
28
|
-
timeoutMs?: number;
|
|
29
|
-
/**
|
|
30
|
-
* Extra CLI flags. Useful for `--add-dir`, `--disable-slash-commands`,
|
|
31
|
-
* etc. when the caller knows what they want.
|
|
32
|
-
*/
|
|
33
|
-
extraArgs?: string[];
|
|
34
|
-
}
|
|
35
|
-
export interface ClaudeUsage {
|
|
36
|
-
input_tokens?: number;
|
|
37
|
-
output_tokens?: number;
|
|
38
|
-
cache_creation_input_tokens?: number;
|
|
39
|
-
cache_read_input_tokens?: number;
|
|
40
|
-
}
|
|
41
|
-
export interface RunClaudeResult {
|
|
42
|
-
text: string;
|
|
43
|
-
/** Parsed JSON when `jsonSchema` was set. */
|
|
44
|
-
parsed?: unknown;
|
|
45
|
-
durationMs: number;
|
|
46
|
-
tier: ClaudeTier;
|
|
47
|
-
model: string;
|
|
48
|
-
/** Raw JSON envelope from `--output-format json`. */
|
|
49
|
-
envelope?: Record<string, unknown>;
|
|
50
|
-
/** Usage stats lifted from the envelope when present. */
|
|
51
|
-
usage?: ClaudeUsage;
|
|
52
|
-
}
|
package/dist/claude/types.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subprocess wrapper for the `claude` CLI.
|
|
3
|
-
*
|
|
4
|
-
* Per L42 + operator answer T1: every Tier-1/2/3 LLM call goes through the
|
|
5
|
-
* operator's Claude Code coding-plan subscription via `claude --print
|
|
6
|
-
* --model <tier> --output-format json`. No direct Anthropic SDK calls.
|
|
7
|
-
*
|
|
8
|
-
* Tier mapping is hardcoded (no env vars per operator profile). The CLI's
|
|
9
|
-
* model alias resolution maps `haiku|sonnet|opus` to the latest model id
|
|
10
|
-
* for that family — we don't pin specific snapshots here so the wrapper
|
|
11
|
-
* keeps tracking newer models as Anthropic ships them.
|
|
12
|
-
*/
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=types.js.map
|
package/dist/claude/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/claude/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
package/dist/cli/daemon.d.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `harness daemon` — single supervisor process.
|
|
3
|
-
*
|
|
4
|
-
* Spawns and supervises three things in one cohesive long-lived process:
|
|
5
|
-
* 1. `harness watch --project <slug>` — grounding daemon (chokidar)
|
|
6
|
-
* 2. `harness run --project <slug> --frontend <adapters>` — orchestrator
|
|
7
|
-
* + frontend adapters (Discord by default)
|
|
8
|
-
* 3. periodic `harness gc run --apply-classes safe` — nightly cleanup
|
|
9
|
-
* (runs once on start + every 24h)
|
|
10
|
-
*
|
|
11
|
-
* Both child processes restart on crash with exponential backoff
|
|
12
|
-
* (1s → 2s → 4s, capped at 60s; reset on a clean run > 30s). All output
|
|
13
|
-
* tees into ~/.local/harness/logs/<slug>.{watch,run,gc}.log so launchd /
|
|
14
|
-
* journalctl users have a single tail target.
|
|
15
|
-
*
|
|
16
|
-
* SIGINT / SIGTERM cleanly stop both children + the gc cron, then exit.
|
|
17
|
-
*
|
|
18
|
-
* Used by `harness install` (launchd plist) so a friend can `harness
|
|
19
|
-
* install --project myapp` once and have everything come up on every
|
|
20
|
-
* reboot under one supervised process — no tmux / two-terminal dance.
|
|
21
|
-
*/
|
|
22
|
-
export type SupervisorEvent = {
|
|
23
|
-
kind: "started";
|
|
24
|
-
child: "watch" | "run";
|
|
25
|
-
} | {
|
|
26
|
-
kind: "exited";
|
|
27
|
-
child: "watch" | "run";
|
|
28
|
-
code: number | null;
|
|
29
|
-
signal: NodeJS.Signals | null;
|
|
30
|
-
} | {
|
|
31
|
-
kind: "restart-scheduled";
|
|
32
|
-
child: "watch" | "run";
|
|
33
|
-
delayMs: number;
|
|
34
|
-
} | {
|
|
35
|
-
kind: "gc-tick";
|
|
36
|
-
ok: boolean;
|
|
37
|
-
durationMs: number;
|
|
38
|
-
} | {
|
|
39
|
-
kind: "stopped";
|
|
40
|
-
};
|
|
41
|
-
export declare function daemonCli(argv: string[]): Promise<void>;
|
|
42
|
-
/** Test seam — start a supervisor with custom event hook + return stop fn. */
|
|
43
|
-
export declare function startSupervisorForTest(args: {
|
|
44
|
-
project: string;
|
|
45
|
-
frontends: string;
|
|
46
|
-
logDir: string;
|
|
47
|
-
harnessBin: string;
|
|
48
|
-
nodeBin: string;
|
|
49
|
-
onEvent: (event: SupervisorEvent) => void;
|
|
50
|
-
gcIntervalSec?: number | null;
|
|
51
|
-
once?: boolean;
|
|
52
|
-
}): Promise<{
|
|
53
|
-
stop: () => Promise<void>;
|
|
54
|
-
}>;
|
package/dist/cli/daemon.js
DELETED
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `harness daemon` — single supervisor process.
|
|
3
|
-
*
|
|
4
|
-
* Spawns and supervises three things in one cohesive long-lived process:
|
|
5
|
-
* 1. `harness watch --project <slug>` — grounding daemon (chokidar)
|
|
6
|
-
* 2. `harness run --project <slug> --frontend <adapters>` — orchestrator
|
|
7
|
-
* + frontend adapters (Discord by default)
|
|
8
|
-
* 3. periodic `harness gc run --apply-classes safe` — nightly cleanup
|
|
9
|
-
* (runs once on start + every 24h)
|
|
10
|
-
*
|
|
11
|
-
* Both child processes restart on crash with exponential backoff
|
|
12
|
-
* (1s → 2s → 4s, capped at 60s; reset on a clean run > 30s). All output
|
|
13
|
-
* tees into ~/.local/harness/logs/<slug>.{watch,run,gc}.log so launchd /
|
|
14
|
-
* journalctl users have a single tail target.
|
|
15
|
-
*
|
|
16
|
-
* SIGINT / SIGTERM cleanly stop both children + the gc cron, then exit.
|
|
17
|
-
*
|
|
18
|
-
* Used by `harness install` (launchd plist) so a friend can `harness
|
|
19
|
-
* install --project myapp` once and have everything come up on every
|
|
20
|
-
* reboot under one supervised process — no tmux / two-terminal dance.
|
|
21
|
-
*/
|
|
22
|
-
import { spawn } from "node:child_process";
|
|
23
|
-
import { mkdirSync, openSync, writeSync, closeSync } from "node:fs";
|
|
24
|
-
import { homedir } from "node:os";
|
|
25
|
-
import { resolve } from "node:path";
|
|
26
|
-
import { defaultStatusJson, logger, normalizeProjectName, writeStatusJsonForSlug, } from "@devplusllc/harness-core";
|
|
27
|
-
const log = logger("cli.daemon");
|
|
28
|
-
function parseArgs(argv) {
|
|
29
|
-
const positional = [];
|
|
30
|
-
const flags = {};
|
|
31
|
-
for (let i = 0; i < argv.length; i++) {
|
|
32
|
-
const arg = argv[i];
|
|
33
|
-
if (arg === undefined)
|
|
34
|
-
continue;
|
|
35
|
-
if (arg.startsWith("--")) {
|
|
36
|
-
const key = arg.slice(2);
|
|
37
|
-
const next = argv[i + 1];
|
|
38
|
-
if (next !== undefined && !next.startsWith("--")) {
|
|
39
|
-
flags[key] = next;
|
|
40
|
-
i += 1;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
flags[key] = true;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
positional.push(arg);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return { positional, flags };
|
|
51
|
-
}
|
|
52
|
-
function usage() {
|
|
53
|
-
console.error("Usage: harness daemon --project <slug> [options]\n" +
|
|
54
|
-
" --project project slug (required)\n" +
|
|
55
|
-
" --frontend adapter list for `harness run` (default: discord)\n" +
|
|
56
|
-
" --gc-interval seconds between gc passes (default: 86400 = 24h)\n" +
|
|
57
|
-
" --no-gc disable the periodic gc tick\n" +
|
|
58
|
-
" --log-dir override log dir (default: ~/.local/harness/logs)\n" +
|
|
59
|
-
" --once run children once + exit when both die (no restart)\n" +
|
|
60
|
-
"\n" +
|
|
61
|
-
"Single supervised process running watch + run + nightly gc. Logs to\n" +
|
|
62
|
-
"<log-dir>/<slug>.{watch,run,gc}.log. SIGINT/SIGTERM stops everything.");
|
|
63
|
-
process.exit(1);
|
|
64
|
-
}
|
|
65
|
-
const RESET_BACKOFF_AFTER_MS = 30_000;
|
|
66
|
-
const MAX_BACKOFF_MS = 60_000;
|
|
67
|
-
function openLog(dir, slug, label) {
|
|
68
|
-
mkdirSync(dir, { recursive: true });
|
|
69
|
-
return openSync(resolve(dir, `${slug}.${label}.log`), "a");
|
|
70
|
-
}
|
|
71
|
-
function writeLine(fd, line) {
|
|
72
|
-
try {
|
|
73
|
-
writeSync(fd, `${line}\n`);
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
// best-effort
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function spawnChild(child, shared) {
|
|
80
|
-
const proc = spawn(shared.nodeBin, [shared.harnessBin, ...child.args], {
|
|
81
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
82
|
-
env: process.env,
|
|
83
|
-
});
|
|
84
|
-
child.proc = proc;
|
|
85
|
-
child.startedAt = Date.now();
|
|
86
|
-
proc.stdout.on("data", (chunk) => {
|
|
87
|
-
writeSync(child.logFd, chunk);
|
|
88
|
-
});
|
|
89
|
-
proc.stderr.on("data", (chunk) => {
|
|
90
|
-
writeSync(child.logFd, chunk);
|
|
91
|
-
});
|
|
92
|
-
writeLine(child.logFd, `\n── [supervisor] ${new Date().toISOString()} spawned ${child.name} (pid ${proc.pid})`);
|
|
93
|
-
}
|
|
94
|
-
async function supervise(args) {
|
|
95
|
-
const watchLogFd = openLog(args.logDir, args.project, "watch");
|
|
96
|
-
const runLogFd = openLog(args.logDir, args.project, "run");
|
|
97
|
-
const gcLogFd = openLog(args.logDir, args.project, "gc");
|
|
98
|
-
const supervisorLogFd = openLog(args.logDir, args.project, "supervisor");
|
|
99
|
-
writeLine(supervisorLogFd, `── ${new Date().toISOString()} supervisor start · project=${args.project} · frontends=${args.frontends}`);
|
|
100
|
-
// Initialise status.json with a complete default — Claude Code's
|
|
101
|
-
// `harness status-line` reader does strict shape validation, so a partial
|
|
102
|
-
// patch on first start would render as the placeholder "daemon:down".
|
|
103
|
-
// Best-effort write; status line is cosmetic.
|
|
104
|
-
try {
|
|
105
|
-
writeStatusJsonForSlug(args.project, defaultStatusJson(true));
|
|
106
|
-
}
|
|
107
|
-
catch (err) {
|
|
108
|
-
log.warn({ err: String(err) }, "initial status.json write failed");
|
|
109
|
-
}
|
|
110
|
-
const children = [
|
|
111
|
-
{
|
|
112
|
-
name: "watch",
|
|
113
|
-
args: ["watch", "--project", args.project],
|
|
114
|
-
proc: undefined,
|
|
115
|
-
backoffMs: 1000,
|
|
116
|
-
startedAt: 0,
|
|
117
|
-
stopped: false,
|
|
118
|
-
logFd: watchLogFd,
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
name: "run",
|
|
122
|
-
args: [
|
|
123
|
-
"run",
|
|
124
|
-
"--project",
|
|
125
|
-
args.project,
|
|
126
|
-
"--frontend",
|
|
127
|
-
args.frontends,
|
|
128
|
-
],
|
|
129
|
-
proc: undefined,
|
|
130
|
-
backoffMs: 1000,
|
|
131
|
-
startedAt: 0,
|
|
132
|
-
stopped: false,
|
|
133
|
-
logFd: runLogFd,
|
|
134
|
-
},
|
|
135
|
-
];
|
|
136
|
-
let stopRequested = false;
|
|
137
|
-
let gcTimer;
|
|
138
|
-
let heartbeat;
|
|
139
|
-
const stopChild = async (child) => {
|
|
140
|
-
child.stopped = true;
|
|
141
|
-
if (child.proc !== undefined && child.proc.exitCode === null) {
|
|
142
|
-
try {
|
|
143
|
-
child.proc.kill("SIGTERM");
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
// best-effort
|
|
147
|
-
}
|
|
148
|
-
// Give it 10s grace then SIGKILL.
|
|
149
|
-
await new Promise((res) => {
|
|
150
|
-
const grace = setTimeout(() => {
|
|
151
|
-
if (child.proc !== undefined && child.proc.exitCode === null) {
|
|
152
|
-
try {
|
|
153
|
-
child.proc.kill("SIGKILL");
|
|
154
|
-
}
|
|
155
|
-
catch {
|
|
156
|
-
// best-effort
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
res();
|
|
160
|
-
}, 10_000);
|
|
161
|
-
child.proc?.once("exit", () => {
|
|
162
|
-
clearTimeout(grace);
|
|
163
|
-
res();
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
const stopAll = async () => {
|
|
169
|
-
if (stopRequested)
|
|
170
|
-
return;
|
|
171
|
-
stopRequested = true;
|
|
172
|
-
if (gcTimer !== undefined)
|
|
173
|
-
clearInterval(gcTimer);
|
|
174
|
-
if (heartbeat !== undefined)
|
|
175
|
-
clearInterval(heartbeat);
|
|
176
|
-
writeLine(supervisorLogFd, `── ${new Date().toISOString()} stop signal received`);
|
|
177
|
-
await Promise.all(children.map((c) => stopChild(c)));
|
|
178
|
-
// Mark the status file so Claude Code's status line shows "down" before
|
|
179
|
-
// the LaunchAgent (or operator) restarts us.
|
|
180
|
-
try {
|
|
181
|
-
writeStatusJsonForSlug(args.project, {
|
|
182
|
-
daemon_alive: false,
|
|
183
|
-
updated_at: new Date().toISOString(),
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
catch {
|
|
187
|
-
// best-effort
|
|
188
|
-
}
|
|
189
|
-
writeLine(supervisorLogFd, `── ${new Date().toISOString()} supervisor exit`);
|
|
190
|
-
args.onEvent?.({ kind: "stopped" });
|
|
191
|
-
closeSync(watchLogFd);
|
|
192
|
-
closeSync(runLogFd);
|
|
193
|
-
closeSync(gcLogFd);
|
|
194
|
-
closeSync(supervisorLogFd);
|
|
195
|
-
};
|
|
196
|
-
process.on("SIGINT", () => {
|
|
197
|
-
void stopAll().then(() => process.exit(0));
|
|
198
|
-
});
|
|
199
|
-
process.on("SIGTERM", () => {
|
|
200
|
-
void stopAll().then(() => process.exit(0));
|
|
201
|
-
});
|
|
202
|
-
const launch = (child) => {
|
|
203
|
-
if (child.stopped || stopRequested)
|
|
204
|
-
return;
|
|
205
|
-
spawnChild(child, { nodeBin: args.nodeBin, harnessBin: args.harnessBin });
|
|
206
|
-
args.onEvent?.({ kind: "started", child: child.name });
|
|
207
|
-
log.info({ child: child.name, pid: child.proc?.pid, args: child.args }, "child spawned");
|
|
208
|
-
child.proc?.once("exit", (code, signal) => {
|
|
209
|
-
writeLine(child.logFd, `── [supervisor] ${new Date().toISOString()} ${child.name} exited code=${code ?? "null"} signal=${signal ?? "null"}`);
|
|
210
|
-
args.onEvent?.({
|
|
211
|
-
kind: "exited",
|
|
212
|
-
child: child.name,
|
|
213
|
-
code,
|
|
214
|
-
signal,
|
|
215
|
-
});
|
|
216
|
-
log.warn({ child: child.name, code, signal }, "child exited");
|
|
217
|
-
if (child.stopped || stopRequested)
|
|
218
|
-
return;
|
|
219
|
-
if (args.once)
|
|
220
|
-
return;
|
|
221
|
-
const ranLong = Date.now() - child.startedAt > RESET_BACKOFF_AFTER_MS;
|
|
222
|
-
if (ranLong)
|
|
223
|
-
child.backoffMs = 1000;
|
|
224
|
-
const delay = child.backoffMs;
|
|
225
|
-
child.backoffMs = Math.min(child.backoffMs * 2, MAX_BACKOFF_MS);
|
|
226
|
-
args.onEvent?.({
|
|
227
|
-
kind: "restart-scheduled",
|
|
228
|
-
child: child.name,
|
|
229
|
-
delayMs: delay,
|
|
230
|
-
});
|
|
231
|
-
writeLine(child.logFd, `── [supervisor] ${new Date().toISOString()} ${child.name} restart in ${delay}ms`);
|
|
232
|
-
setTimeout(() => launch(child), delay);
|
|
233
|
-
});
|
|
234
|
-
};
|
|
235
|
-
for (const c of children)
|
|
236
|
-
launch(c);
|
|
237
|
-
// Heartbeat — refresh `updated_at` every 30s so a crashed-without-shutdown
|
|
238
|
-
// daemon eventually appears stale to readers that check timestamp drift.
|
|
239
|
-
heartbeat = setInterval(() => {
|
|
240
|
-
try {
|
|
241
|
-
writeStatusJsonForSlug(args.project, {
|
|
242
|
-
daemon_alive: true,
|
|
243
|
-
updated_at: new Date().toISOString(),
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
catch {
|
|
247
|
-
// best-effort
|
|
248
|
-
}
|
|
249
|
-
}, 30_000);
|
|
250
|
-
// Allow process to exit if everything else is done — heartbeat shouldn't
|
|
251
|
-
// hold the event loop open on its own.
|
|
252
|
-
heartbeat.unref();
|
|
253
|
-
// Periodic GC tick.
|
|
254
|
-
if (args.gcIntervalSec !== null) {
|
|
255
|
-
const runGc = async () => {
|
|
256
|
-
const startedAt = Date.now();
|
|
257
|
-
writeLine(gcLogFd, `── ${new Date().toISOString()} gc tick start`);
|
|
258
|
-
try {
|
|
259
|
-
await new Promise((res, rej) => {
|
|
260
|
-
const proc = spawn(args.nodeBin, [
|
|
261
|
-
args.harnessBin,
|
|
262
|
-
"gc",
|
|
263
|
-
"run",
|
|
264
|
-
"--apply-classes",
|
|
265
|
-
"safe",
|
|
266
|
-
"--repo-root",
|
|
267
|
-
process.cwd(),
|
|
268
|
-
], { stdio: ["ignore", "pipe", "pipe"], env: process.env });
|
|
269
|
-
proc.stdout.on("data", (chunk) => writeSync(gcLogFd, chunk));
|
|
270
|
-
proc.stderr.on("data", (chunk) => writeSync(gcLogFd, chunk));
|
|
271
|
-
proc.on("exit", (code) => {
|
|
272
|
-
if (code === 0)
|
|
273
|
-
res();
|
|
274
|
-
else
|
|
275
|
-
rej(new Error(`gc exited ${code}`));
|
|
276
|
-
});
|
|
277
|
-
proc.on("error", rej);
|
|
278
|
-
});
|
|
279
|
-
const dur = Date.now() - startedAt;
|
|
280
|
-
writeLine(gcLogFd, `── gc tick OK (${dur}ms)`);
|
|
281
|
-
args.onEvent?.({ kind: "gc-tick", ok: true, durationMs: dur });
|
|
282
|
-
}
|
|
283
|
-
catch (err) {
|
|
284
|
-
const dur = Date.now() - startedAt;
|
|
285
|
-
writeLine(gcLogFd, `── gc tick FAIL (${dur}ms): ${String(err)}`);
|
|
286
|
-
args.onEvent?.({ kind: "gc-tick", ok: false, durationMs: dur });
|
|
287
|
-
}
|
|
288
|
-
};
|
|
289
|
-
// Fire once on start (after a 60s warmup so children are settled).
|
|
290
|
-
setTimeout(() => void runGc(), 60_000);
|
|
291
|
-
gcTimer = setInterval(() => void runGc(), args.gcIntervalSec * 1000);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
export async function daemonCli(argv) {
|
|
295
|
-
const { flags } = parseArgs(argv);
|
|
296
|
-
if (flags["help"] === true || flags["h"] === true)
|
|
297
|
-
usage();
|
|
298
|
-
const slugRaw = typeof flags["project"] === "string" ? flags["project"] : "";
|
|
299
|
-
if (slugRaw.length === 0) {
|
|
300
|
-
console.error("harness daemon: --project required\n");
|
|
301
|
-
usage();
|
|
302
|
-
}
|
|
303
|
-
const project = normalizeProjectName(slugRaw);
|
|
304
|
-
const frontends = typeof flags["frontend"] === "string" ? flags["frontend"] : "discord";
|
|
305
|
-
const logDir = typeof flags["log-dir"] === "string"
|
|
306
|
-
? resolve(flags["log-dir"])
|
|
307
|
-
: resolve(homedir(), ".local", "harness", "logs");
|
|
308
|
-
const once = flags["once"] === true;
|
|
309
|
-
const gcIntervalSec = flags["no-gc"] === true
|
|
310
|
-
? null
|
|
311
|
-
: typeof flags["gc-interval"] === "string"
|
|
312
|
-
? Math.max(60, Number.parseInt(flags["gc-interval"], 10) || 86400)
|
|
313
|
-
: 86400;
|
|
314
|
-
// Resolve the harness CLI binary path. In normal operation argv[1] is the
|
|
315
|
-
// dist/cli/index.js file or a node_modules/.bin shim. We re-invoke it with
|
|
316
|
-
// the same node binary for cross-platform consistency.
|
|
317
|
-
const harnessBin = resolve(process.argv[1] ?? "");
|
|
318
|
-
const nodeBin = process.execPath;
|
|
319
|
-
await supervise({
|
|
320
|
-
project,
|
|
321
|
-
frontends,
|
|
322
|
-
logDir,
|
|
323
|
-
once,
|
|
324
|
-
gcIntervalSec,
|
|
325
|
-
harnessBin,
|
|
326
|
-
nodeBin,
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
/** Test seam — start a supervisor with custom event hook + return stop fn. */
|
|
330
|
-
export async function startSupervisorForTest(args) {
|
|
331
|
-
let stopFn = async () => { };
|
|
332
|
-
await supervise({
|
|
333
|
-
...args,
|
|
334
|
-
once: args.once ?? false,
|
|
335
|
-
gcIntervalSec: args.gcIntervalSec ?? null,
|
|
336
|
-
onEvent: (e) => {
|
|
337
|
-
args.onEvent(e);
|
|
338
|
-
if (e.kind === "stopped") {
|
|
339
|
-
// noop — actual stop fn drives this
|
|
340
|
-
}
|
|
341
|
-
},
|
|
342
|
-
});
|
|
343
|
-
// We can't easily expose the real stop without restructuring supervise.
|
|
344
|
-
// For test-time, send SIGTERM to ourselves is not appropriate. Instead,
|
|
345
|
-
// surface a kill helper via process events.
|
|
346
|
-
stopFn = async () => {
|
|
347
|
-
process.emit("SIGTERM");
|
|
348
|
-
};
|
|
349
|
-
return { stop: stopFn };
|
|
350
|
-
}
|
|
351
|
-
//# sourceMappingURL=daemon.js.map
|
package/dist/cli/daemon.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/install.d.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `harness install` — register the daemon as a launchd LaunchAgent (macOS).
|
|
3
|
-
*
|
|
4
|
-
* Generates `~/Library/LaunchAgents/com.devplusllc.harness.<slug>.plist`
|
|
5
|
-
* pointing at `harness daemon --project <slug>`, then `launchctl load`s it.
|
|
6
|
-
* After install, the daemon survives reboot, restarts on crash (RunAtLoad
|
|
7
|
-
* + KeepAlive), and tees stdout/stderr into
|
|
8
|
-
* `~/.local/harness/logs/<slug>.supervisor.log`.
|
|
9
|
-
*
|
|
10
|
-
* Subcommands:
|
|
11
|
-
* install <slug> write plist + launchctl load
|
|
12
|
-
* uninstall <slug> launchctl unload + remove plist
|
|
13
|
-
* status <slug> launchctl list status + plist path
|
|
14
|
-
* restart <slug> unload + load
|
|
15
|
-
*
|
|
16
|
-
* Linux operators: use systemd unit instead (not bundled here yet — the
|
|
17
|
-
* operator's stated workflow is macOS Claude Code + Discord).
|
|
18
|
-
*
|
|
19
|
-
* Friends adopting the harness via private GitHub install:
|
|
20
|
-
* npm install github:<you>/harness#<sha>
|
|
21
|
-
* cd ~/their-app
|
|
22
|
-
* npx harness init . --force
|
|
23
|
-
* npx harness install
|
|
24
|
-
* # done — survives reboot
|
|
25
|
-
*/
|
|
26
|
-
interface PlistOptions {
|
|
27
|
-
project: string;
|
|
28
|
-
/** Working directory the daemon runs in — usually the adopted project root. */
|
|
29
|
-
workingDirectory: string;
|
|
30
|
-
/** Adapter list. Default "discord". */
|
|
31
|
-
frontends: string;
|
|
32
|
-
/** When true, pass --no-gc to the daemon. */
|
|
33
|
-
noGc: boolean;
|
|
34
|
-
/** Override log dir. Default ~/.local/harness/logs. */
|
|
35
|
-
logDir: string;
|
|
36
|
-
/** Resolved absolute path to harness CLI script. */
|
|
37
|
-
harnessBin: string;
|
|
38
|
-
/** Node binary path. */
|
|
39
|
-
nodeBin: string;
|
|
40
|
-
/** Override PATH the daemon inherits. Default: process.env.PATH. */
|
|
41
|
-
pathEnv: string;
|
|
42
|
-
}
|
|
43
|
-
export interface PlistResult {
|
|
44
|
-
label: string;
|
|
45
|
-
plistPath: string;
|
|
46
|
-
/** XML body that was written. */
|
|
47
|
-
body: string;
|
|
48
|
-
}
|
|
49
|
-
export declare function buildLaunchdPlist(opts: PlistOptions): PlistResult;
|
|
50
|
-
export declare function launchdPlistPathFor(label: string): string;
|
|
51
|
-
export declare function installCli(argv: string[]): Promise<void>;
|
|
52
|
-
export {};
|