@isaacriehm/cairn 0.1.0 → 0.1.3
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/cli/task.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `harness task` — terminal-native task submit.
|
|
3
|
-
*
|
|
4
|
-
* Drops a `task` inbox row to the running daemon's mirror checkout. The
|
|
5
|
-
* orchestrator picks it up via chokidar (or the periodic poll). No
|
|
6
|
-
* Discord interaction required.
|
|
7
|
-
*
|
|
8
|
-
* Project resolution order:
|
|
9
|
-
* 1. --project <slug> flag
|
|
10
|
-
* 2. `.harness/config.yaml` in the current working directory
|
|
11
|
-
* 3. error out
|
|
12
|
-
*
|
|
13
|
-
* Operator workflow:
|
|
14
|
-
* cd ~/myapp
|
|
15
|
-
* harness task "build feature X" --acceptance "must do Y" --acceptance "must not Z"
|
|
16
|
-
* # daemon picks up; status visible via /status in Discord
|
|
17
|
-
*/
|
|
18
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
19
|
-
import { resolve } from "node:path";
|
|
20
|
-
import { parse as parseYaml } from "yaml";
|
|
21
|
-
import { normalizeProjectName, readMirrorRecord, writeInboxRow, } from "@devplusllc/harness-core";
|
|
22
|
-
function parseArgs(argv) {
|
|
23
|
-
const positional = [];
|
|
24
|
-
const flags = {};
|
|
25
|
-
for (let i = 0; i < argv.length; i++) {
|
|
26
|
-
const arg = argv[i];
|
|
27
|
-
if (arg === undefined)
|
|
28
|
-
continue;
|
|
29
|
-
if (arg.startsWith("--")) {
|
|
30
|
-
const key = arg.slice(2);
|
|
31
|
-
const next = argv[i + 1];
|
|
32
|
-
if (next !== undefined && !next.startsWith("--")) {
|
|
33
|
-
const existing = flags[key];
|
|
34
|
-
if (Array.isArray(existing)) {
|
|
35
|
-
existing.push(next);
|
|
36
|
-
}
|
|
37
|
-
else if (typeof existing === "string") {
|
|
38
|
-
flags[key] = [existing, next];
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
flags[key] = next;
|
|
42
|
-
}
|
|
43
|
-
i += 1;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
flags[key] = true;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
positional.push(arg);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return { positional, flags };
|
|
54
|
-
}
|
|
55
|
-
function usage() {
|
|
56
|
-
console.error("Usage: harness task <body> [options]\n" +
|
|
57
|
-
" <body> task description (free text)\n" +
|
|
58
|
-
" --project <slug> project slug (default: read .harness/config.yaml in cwd)\n" +
|
|
59
|
-
" --title <s> override title (default: first 80 chars of body)\n" +
|
|
60
|
-
" --acceptance <s> acceptance criterion (repeat for multiple)\n" +
|
|
61
|
-
" --ship-anyway bypass spec-tightener gate (logged)\n" +
|
|
62
|
-
" --target <glob> target path glob (repeat for multiple)\n" +
|
|
63
|
-
"\n" +
|
|
64
|
-
"Drops a task inbox row to the daemon's mirror. Orchestrator picks it\n" +
|
|
65
|
-
"up automatically (no Discord required). Watch progress via Discord\n" +
|
|
66
|
-
"/status or `tail -F .harness/runs/active/<run-id>/log.jsonl`.");
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
69
|
-
function readProjectFromCwd() {
|
|
70
|
-
const configPath = resolve(process.cwd(), ".harness", "config.yaml");
|
|
71
|
-
if (!existsSync(configPath))
|
|
72
|
-
return undefined;
|
|
73
|
-
try {
|
|
74
|
-
const text = readFileSync(configPath, "utf8");
|
|
75
|
-
const parsed = parseYaml(text);
|
|
76
|
-
const slug = parsed["slug"];
|
|
77
|
-
return typeof slug === "string" ? slug : undefined;
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
function asStringArray(v) {
|
|
84
|
-
if (Array.isArray(v))
|
|
85
|
-
return v;
|
|
86
|
-
if (typeof v === "string")
|
|
87
|
-
return [v];
|
|
88
|
-
return [];
|
|
89
|
-
}
|
|
90
|
-
export async function taskCli(argv) {
|
|
91
|
-
const { positional, flags } = parseArgs(argv);
|
|
92
|
-
if (flags["help"] === true || flags["h"] === true)
|
|
93
|
-
usage();
|
|
94
|
-
const body = positional.join(" ").trim();
|
|
95
|
-
if (body.length === 0) {
|
|
96
|
-
console.error("harness task: <body> is required\n");
|
|
97
|
-
usage();
|
|
98
|
-
}
|
|
99
|
-
const slugRaw = typeof flags["project"] === "string"
|
|
100
|
-
? flags["project"]
|
|
101
|
-
: readProjectFromCwd();
|
|
102
|
-
if (slugRaw === undefined || slugRaw.length === 0) {
|
|
103
|
-
console.error("harness task: --project required (no .harness/config.yaml in cwd)");
|
|
104
|
-
process.exit(2);
|
|
105
|
-
}
|
|
106
|
-
const project = normalizeProjectName(slugRaw);
|
|
107
|
-
const record = readMirrorRecord(project);
|
|
108
|
-
if (record === null) {
|
|
109
|
-
console.error(`harness task: no mirror record for project "${project}". Run "harness init" + "harness mirror init --project ${project}" first.`);
|
|
110
|
-
process.exit(2);
|
|
111
|
-
}
|
|
112
|
-
const titleRaw = typeof flags["title"] === "string" ? flags["title"] : undefined;
|
|
113
|
-
const title = titleRaw ?? body.slice(0, 80);
|
|
114
|
-
const acceptance = asStringArray(flags["acceptance"]);
|
|
115
|
-
const targetGlobs = asStringArray(flags["target"]);
|
|
116
|
-
const shipAnyway = flags["ship-anyway"] === true;
|
|
117
|
-
const taskPayload = {
|
|
118
|
-
task: {
|
|
119
|
-
rawText: body,
|
|
120
|
-
intent: "code_task",
|
|
121
|
-
authorId: "cli",
|
|
122
|
-
receivedAt: new Date().toISOString(),
|
|
123
|
-
},
|
|
124
|
-
title,
|
|
125
|
-
...(acceptance.length > 0 ? { acceptance_criteria: acceptance } : {}),
|
|
126
|
-
...(targetGlobs.length > 0 ? { target_path_globs: targetGlobs } : {}),
|
|
127
|
-
...(shipAnyway ? { ship_anyway: true } : {}),
|
|
128
|
-
};
|
|
129
|
-
const file = await writeInboxRow({
|
|
130
|
-
repoRoot: record.mirrorPath,
|
|
131
|
-
source: "cli",
|
|
132
|
-
kind: "task",
|
|
133
|
-
payload: taskPayload,
|
|
134
|
-
});
|
|
135
|
-
process.stdout.write(`task queued for project "${project}"\n inbox: ${file}\n title: ${title}\n body: ${body.slice(0, 200)}${body.length > 200 ? "…" : ""}\n acceptance: ${acceptance.length}\n ship-anyway: ${shipAnyway}\n`);
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=task.js.map
|
package/dist/cli/task.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/cli/task.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/watch.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function watchCli(argv: string[]): Promise<void>;
|
package/dist/cli/watch.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { resolve } from "node:path";
|
|
2
|
-
import { logger, normalizeProjectName, readMirrorRecord } from "@devplusllc/harness-core";
|
|
3
|
-
import { startDaemon } from "@devplusllc/harness-runtime";
|
|
4
|
-
const log = logger("cli.watch");
|
|
5
|
-
function parseArgs(argv) {
|
|
6
|
-
const positional = [];
|
|
7
|
-
const flags = {};
|
|
8
|
-
for (let i = 0; i < argv.length; i++) {
|
|
9
|
-
const arg = argv[i];
|
|
10
|
-
if (arg === undefined)
|
|
11
|
-
continue;
|
|
12
|
-
if (arg.startsWith("--")) {
|
|
13
|
-
const key = arg.slice(2);
|
|
14
|
-
const next = argv[i + 1];
|
|
15
|
-
if (next !== undefined && !next.startsWith("--")) {
|
|
16
|
-
flags[key] = next;
|
|
17
|
-
i += 1;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
flags[key] = true;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
positional.push(arg);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return { positional, flags };
|
|
28
|
-
}
|
|
29
|
-
function usage() {
|
|
30
|
-
console.error("Usage: harness watch --project <name> [--repo-root <path>] [--debounce-ms <n>]\n" +
|
|
31
|
-
" --project project slug (matches `harness mirror init --project ...`)\n" +
|
|
32
|
-
" --repo-root target dir to watch (default: mirror path from state)\n" +
|
|
33
|
-
" --debounce-ms debounce window before regen fires (default: 500)");
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
export async function watchCli(argv) {
|
|
37
|
-
const { flags } = parseArgs(argv);
|
|
38
|
-
const project = typeof flags["project"] === "string" ? flags["project"] : undefined;
|
|
39
|
-
if (project === undefined)
|
|
40
|
-
usage();
|
|
41
|
-
const projectName = normalizeProjectName(project);
|
|
42
|
-
const debounceMs = typeof flags["debounce-ms"] === "string" ? Number.parseInt(flags["debounce-ms"], 10) : 500;
|
|
43
|
-
let repoRoot;
|
|
44
|
-
if (typeof flags["repo-root"] === "string") {
|
|
45
|
-
repoRoot = resolve(flags["repo-root"]);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
const record = readMirrorRecord(projectName);
|
|
49
|
-
if (!record) {
|
|
50
|
-
console.error(`No mirror record for "${projectName}". Run \`harness mirror init\` first or pass --repo-root explicitly.`);
|
|
51
|
-
process.exit(1);
|
|
52
|
-
}
|
|
53
|
-
repoRoot = record.mirrorPath;
|
|
54
|
-
}
|
|
55
|
-
const handle = await startDaemon({
|
|
56
|
-
projectName,
|
|
57
|
-
repoRoot,
|
|
58
|
-
debounceMs: Number.isFinite(debounceMs) ? debounceMs : 500,
|
|
59
|
-
});
|
|
60
|
-
const shutdown = async (signal) => {
|
|
61
|
-
log.info({ signal }, "shutdown signal received");
|
|
62
|
-
await handle.stop();
|
|
63
|
-
process.exit(0);
|
|
64
|
-
};
|
|
65
|
-
process.on("SIGINT", () => void shutdown("SIGINT"));
|
|
66
|
-
process.on("SIGTERM", () => void shutdown("SIGTERM"));
|
|
67
|
-
console.log(`harness watch: project=${projectName} root=${repoRoot} (Ctrl-C to stop)`);
|
|
68
|
-
// Keep the event loop alive until a signal arrives.
|
|
69
|
-
await new Promise(() => {
|
|
70
|
-
/* never resolves */
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=watch.js.map
|
package/dist/cli/watch.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAOhC,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBAClB,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,CAAC,KAAK,CACX,kFAAkF;QAChF,+EAA+E;QAC/E,0EAA0E;QAC1E,oEAAoE,CACvE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,IAAI,OAAO,KAAK,SAAS;QAAE,KAAK,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GACd,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE7F,IAAI,QAA4B,CAAC;IACjC,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3C,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CACX,yBAAyB,WAAW,sEAAsE,CAC3G,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,WAAW;QACX,QAAQ;QACR,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;KAC3D,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAsB,EAAiB,EAAE;QAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC;QACjD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEtD,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,SAAS,QAAQ,mBAAmB,CAAC,CAAC;IACvF,oDAAoD;IACpD,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE;QAC3B,oBAAoB;IACtB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* runDecisionCapture — orchestrates the full flow:
|
|
3
|
-
*
|
|
4
|
-
* raw_text → extract → write draft → adapter dialog 🟢/🟡/🔴
|
|
5
|
-
* ├── 🟢 commit → acceptDraft → ledger
|
|
6
|
-
* ├── 🟡 edit → leave draft + return correction text
|
|
7
|
-
* └── 🔴 reject → rejectDraft → no record
|
|
8
|
-
*
|
|
9
|
-
* The dialog is supplied by the caller (typically a FrontendAdapter's
|
|
10
|
-
* requestDialog) so this entry point works equally well in tests with the
|
|
11
|
-
* stub adapter, in CLI with a TTY prompt, and in Discord with the real
|
|
12
|
-
* adapter.
|
|
13
|
-
*/
|
|
14
|
-
import type { FrontendAdapter } from "../frontend/index.js";
|
|
15
|
-
import type { ClaudeTier } from "../claude/index.js";
|
|
16
|
-
import { runDecisionExtractor } from "./extractor.js";
|
|
17
|
-
import { proposeStrictAssertions } from "./refinement.js";
|
|
18
|
-
import type { DecisionCaptureResult } from "./types.js";
|
|
19
|
-
export interface RunDecisionCaptureArgs {
|
|
20
|
-
/** Repo root for the mirror checkout. */
|
|
21
|
-
repoRoot: string;
|
|
22
|
-
/** Raw operator text. */
|
|
23
|
-
rawText: string;
|
|
24
|
-
/** Operator id. */
|
|
25
|
-
authorId: string;
|
|
26
|
-
/** Source — `discord:slash:/direction` or `discord:free_text` etc. */
|
|
27
|
-
source: string;
|
|
28
|
-
/** ISO timestamp the message was received. Default = now. */
|
|
29
|
-
receivedAt?: string;
|
|
30
|
-
/** Tier for the extractor. Default = haiku. */
|
|
31
|
-
tier?: ClaudeTier;
|
|
32
|
-
/** Channel id to thread the confirm dialog through. */
|
|
33
|
-
channelId?: string;
|
|
34
|
-
/** Adapter that owns the confirm dialog. */
|
|
35
|
-
adapter: FrontendAdapter;
|
|
36
|
-
/** Confirm-dialog timeout. Default 60_000 ms. */
|
|
37
|
-
confirmTimeoutMs?: number;
|
|
38
|
-
/**
|
|
39
|
-
* Optional: override the extractor entry point. Smokes inject a stub so
|
|
40
|
-
* the smoke runs without burning claude quota when only the
|
|
41
|
-
* draft/confirm/ledger flow needs verifying.
|
|
42
|
-
*/
|
|
43
|
-
extractorOverride?: typeof runDecisionExtractor;
|
|
44
|
-
/**
|
|
45
|
-
* Skip the post-commit refinement step. Defaults to false. The
|
|
46
|
-
* orchestrator's `bypassRefinement` mirrors this for production runs;
|
|
47
|
-
* smokes that don't care about refinement can flip it on.
|
|
48
|
-
*/
|
|
49
|
-
bypassRefinement?: boolean;
|
|
50
|
-
/** Tier for the refinement proposer. Default = haiku. */
|
|
51
|
-
refinementTier?: ClaudeTier;
|
|
52
|
-
/** Refinement dialog timeout. Default 60_000 ms. */
|
|
53
|
-
refinementDialogTimeoutMs?: number;
|
|
54
|
-
/** Smokes inject a stub proposer to avoid burning claude quota. */
|
|
55
|
-
refinementProposerOverride?: typeof proposeStrictAssertions;
|
|
56
|
-
}
|
|
57
|
-
export declare function runDecisionCapture(args: RunDecisionCaptureArgs): Promise<DecisionCaptureResult>;
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* runDecisionCapture — orchestrates the full flow:
|
|
3
|
-
*
|
|
4
|
-
* raw_text → extract → write draft → adapter dialog 🟢/🟡/🔴
|
|
5
|
-
* ├── 🟢 commit → acceptDraft → ledger
|
|
6
|
-
* ├── 🟡 edit → leave draft + return correction text
|
|
7
|
-
* └── 🔴 reject → rejectDraft → no record
|
|
8
|
-
*
|
|
9
|
-
* The dialog is supplied by the caller (typically a FrontendAdapter's
|
|
10
|
-
* requestDialog) so this entry point works equally well in tests with the
|
|
11
|
-
* stub adapter, in CLI with a TTY prompt, and in Discord with the real
|
|
12
|
-
* adapter.
|
|
13
|
-
*/
|
|
14
|
-
import { logger } from "../logger.js";
|
|
15
|
-
import { runDecisionExtractor } from "./extractor.js";
|
|
16
|
-
import { allocateDecisionId } from "./id.js";
|
|
17
|
-
import { acceptDraft, rejectDraft, writeDecisionDraft, } from "./writer.js";
|
|
18
|
-
import { runDecisionRefinement, } from "./refinement.js";
|
|
19
|
-
const log = logger("decision-capture");
|
|
20
|
-
const CHOICE_COMMIT = "a";
|
|
21
|
-
const CHOICE_EDIT = "b";
|
|
22
|
-
const CHOICE_REJECT = "c";
|
|
23
|
-
export async function runDecisionCapture(args) {
|
|
24
|
-
const startedAt = Date.now();
|
|
25
|
-
const tier = args.tier ?? "haiku";
|
|
26
|
-
const receivedAt = args.receivedAt ?? new Date().toISOString();
|
|
27
|
-
const extract = args.extractorOverride ?? runDecisionExtractor;
|
|
28
|
-
const extractorResult = await extract({
|
|
29
|
-
raw_text: args.rawText,
|
|
30
|
-
author_id: args.authorId,
|
|
31
|
-
received_at: receivedAt,
|
|
32
|
-
source: args.source,
|
|
33
|
-
tier,
|
|
34
|
-
});
|
|
35
|
-
if (extractorResult.output.not_a_decision) {
|
|
36
|
-
log.info({ source: args.source, author: args.authorId }, "decision-extractor flagged not_a_decision — short-circuiting");
|
|
37
|
-
return {
|
|
38
|
-
short_circuited: true,
|
|
39
|
-
duration_ms: Date.now() - startedAt,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const id = allocateDecisionId(args.repoRoot);
|
|
43
|
-
const draft = writeDecisionDraft({
|
|
44
|
-
repoRoot: args.repoRoot,
|
|
45
|
-
id,
|
|
46
|
-
output: extractorResult.output,
|
|
47
|
-
rawText: args.rawText,
|
|
48
|
-
authorId: args.authorId,
|
|
49
|
-
receivedAt,
|
|
50
|
-
source: args.source,
|
|
51
|
-
});
|
|
52
|
-
log.info({ id, draft_path: draft.draft_path, confidence: extractorResult.output.confidence_signal }, "draft written; awaiting confirm");
|
|
53
|
-
const decision = await promptConfirm({
|
|
54
|
-
adapter: args.adapter,
|
|
55
|
-
draft,
|
|
56
|
-
...(args.channelId !== undefined ? { channelId: args.channelId } : {}),
|
|
57
|
-
timeoutMs: args.confirmTimeoutMs ?? 60_000,
|
|
58
|
-
});
|
|
59
|
-
if (decision.decision === "commit") {
|
|
60
|
-
const accepted = acceptDraft({ repoRoot: args.repoRoot, draft });
|
|
61
|
-
log.info({ id, accepted_path: accepted.acceptedPath, ledger_size: accepted.ledgerSize }, "draft accepted; ledger regenerated");
|
|
62
|
-
let refinement;
|
|
63
|
-
const hasCandidates = extractorResult.output.candidate_assertions.length > 0;
|
|
64
|
-
if (!args.bypassRefinement && hasCandidates) {
|
|
65
|
-
try {
|
|
66
|
-
refinement = await runDecisionRefinement({
|
|
67
|
-
repoRoot: args.repoRoot,
|
|
68
|
-
decisionId: id,
|
|
69
|
-
adapter: args.adapter,
|
|
70
|
-
...(args.channelId !== undefined ? { channelId: args.channelId } : {}),
|
|
71
|
-
tier: args.refinementTier ?? tier,
|
|
72
|
-
...(args.refinementDialogTimeoutMs !== undefined
|
|
73
|
-
? { dialogTimeoutMs: args.refinementDialogTimeoutMs }
|
|
74
|
-
: {}),
|
|
75
|
-
...(args.refinementProposerOverride !== undefined
|
|
76
|
-
? { proposerOverride: args.refinementProposerOverride }
|
|
77
|
-
: {}),
|
|
78
|
-
});
|
|
79
|
-
log.info({
|
|
80
|
-
id,
|
|
81
|
-
operator_choice: refinement.operator_choice,
|
|
82
|
-
lifted: refinement.lifted_count,
|
|
83
|
-
demoted: refinement.demoted_count,
|
|
84
|
-
kept_candidate: refinement.skipped_count,
|
|
85
|
-
}, "refinement complete");
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
// Refinement failure must NEVER roll back the accept. Log and move
|
|
89
|
-
// on; candidates stay loose under candidate_assertions: for the
|
|
90
|
-
// operator's next refine pass.
|
|
91
|
-
log.error({ err: String(err), id }, "refinement threw — accept stands; candidates remain loose");
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return {
|
|
95
|
-
short_circuited: false,
|
|
96
|
-
draft,
|
|
97
|
-
confirm: {
|
|
98
|
-
decision: "commit",
|
|
99
|
-
accepted_path: accepted.acceptedPath,
|
|
100
|
-
ledger_size: accepted.ledgerSize,
|
|
101
|
-
draft,
|
|
102
|
-
confidence: extractorResult.output.confidence_signal,
|
|
103
|
-
},
|
|
104
|
-
...(refinement !== undefined ? { refinement } : {}),
|
|
105
|
-
duration_ms: Date.now() - startedAt,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
if (decision.decision === "edit") {
|
|
109
|
-
log.info({ id, correction: decision.correction?.slice(0, 120) }, "draft edit requested");
|
|
110
|
-
return {
|
|
111
|
-
short_circuited: false,
|
|
112
|
-
draft,
|
|
113
|
-
confirm: {
|
|
114
|
-
decision: "edit",
|
|
115
|
-
draft,
|
|
116
|
-
...(decision.correction !== undefined ? { correction: decision.correction } : {}),
|
|
117
|
-
confidence: extractorResult.output.confidence_signal,
|
|
118
|
-
},
|
|
119
|
-
duration_ms: Date.now() - startedAt,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
// reject
|
|
123
|
-
rejectDraft({ repoRoot: args.repoRoot, draft });
|
|
124
|
-
log.info({ id }, "draft rejected; file removed");
|
|
125
|
-
return {
|
|
126
|
-
short_circuited: false,
|
|
127
|
-
draft,
|
|
128
|
-
confirm: {
|
|
129
|
-
decision: "reject",
|
|
130
|
-
draft,
|
|
131
|
-
confidence: extractorResult.output.confidence_signal,
|
|
132
|
-
},
|
|
133
|
-
duration_ms: Date.now() - startedAt,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
async function promptConfirm(args) {
|
|
137
|
-
const summary = args.draft.output.summary.split(/\r?\n/).slice(0, 3).join(" ").trim();
|
|
138
|
-
const scope = args.draft.output.scope_globs.length > 0
|
|
139
|
-
? args.draft.output.scope_globs.join(", ")
|
|
140
|
-
: "(no scope captured)";
|
|
141
|
-
const supersedes = args.draft.output.supersedes
|
|
142
|
-
? `Supersedes ${args.draft.output.supersedes}. `
|
|
143
|
-
: "";
|
|
144
|
-
const assertions = args.draft.output.candidate_assertions.length;
|
|
145
|
-
const prompt = [
|
|
146
|
-
`Confirm ${args.draft.id}? "${args.draft.output.subject}"`,
|
|
147
|
-
summary,
|
|
148
|
-
`Scope: ${scope}`,
|
|
149
|
-
`${supersedes}Candidate assertions: ${assertions}`,
|
|
150
|
-
].join("\n");
|
|
151
|
-
const dialogSpec = {
|
|
152
|
-
bundleId: args.draft.id,
|
|
153
|
-
prompt,
|
|
154
|
-
choices: [
|
|
155
|
-
{ id: CHOICE_COMMIT, label: "🟢 commit" },
|
|
156
|
-
{ id: CHOICE_EDIT, label: "🟡 edit" },
|
|
157
|
-
{ id: CHOICE_REJECT, label: "🔴 not a decision" },
|
|
158
|
-
{ id: "e_other", label: "E) Other" },
|
|
159
|
-
],
|
|
160
|
-
timeoutMs: args.timeoutMs,
|
|
161
|
-
};
|
|
162
|
-
if (args.channelId !== undefined)
|
|
163
|
-
dialogSpec.channelId = args.channelId;
|
|
164
|
-
const response = await args.adapter.requestDialog(dialogSpec);
|
|
165
|
-
if (response.timedOut) {
|
|
166
|
-
// Timeout = treat as edit-with-no-correction so the draft survives in
|
|
167
|
-
// _inbox/ and the operator can come back to it. This avoids losing the
|
|
168
|
-
// capture on a transient inattentiveness.
|
|
169
|
-
return { decision: "edit" };
|
|
170
|
-
}
|
|
171
|
-
if (response.choiceId === CHOICE_COMMIT) {
|
|
172
|
-
return { decision: "commit" };
|
|
173
|
-
}
|
|
174
|
-
if (response.choiceId === CHOICE_REJECT) {
|
|
175
|
-
return { decision: "reject" };
|
|
176
|
-
}
|
|
177
|
-
if (response.choiceId === CHOICE_EDIT || response.choiceId === "e_other") {
|
|
178
|
-
return {
|
|
179
|
-
decision: "edit",
|
|
180
|
-
...(response.freeText !== undefined ? { correction: response.freeText } : {}),
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
// Unknown id — fall back to edit (preserve the draft).
|
|
184
|
-
return { decision: "edit" };
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=capture.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/decision-capture/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Decision-extractor runner.
|
|
3
|
-
*
|
|
4
|
-
* Single Tier-1 (Haiku) call by default per workflow.md
|
|
5
|
-
* `decision_extractor: 1`. Output is gated by `--json-schema`. The wrapper
|
|
6
|
-
* validates shape via a runtime guard and returns the typed payload.
|
|
7
|
-
*
|
|
8
|
-
* The runner does NOT touch the filesystem. It returns the extractor's
|
|
9
|
-
* structured output; the writer + confirm flow handle persistence.
|
|
10
|
-
*/
|
|
11
|
-
import type { DecisionExtractorInput, DecisionExtractorOutput } from "./types.js";
|
|
12
|
-
export interface ExtractorResult {
|
|
13
|
-
output: DecisionExtractorOutput;
|
|
14
|
-
duration_ms: number;
|
|
15
|
-
usage?: {
|
|
16
|
-
input_tokens?: number;
|
|
17
|
-
output_tokens?: number;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export declare function runDecisionExtractor(input: DecisionExtractorInput): Promise<ExtractorResult>;
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Decision-extractor runner.
|
|
3
|
-
*
|
|
4
|
-
* Single Tier-1 (Haiku) call by default per workflow.md
|
|
5
|
-
* `decision_extractor: 1`. Output is gated by `--json-schema`. The wrapper
|
|
6
|
-
* validates shape via a runtime guard and returns the typed payload.
|
|
7
|
-
*
|
|
8
|
-
* The runner does NOT touch the filesystem. It returns the extractor's
|
|
9
|
-
* structured output; the writer + confirm flow handle persistence.
|
|
10
|
-
*/
|
|
11
|
-
import { runClaude } from "../claude/index.js";
|
|
12
|
-
import { logger } from "../logger.js";
|
|
13
|
-
import { DECISION_EXTRACTOR_SYSTEM_PROMPT, buildDecisionExtractorUserPrompt, } from "./prompt.js";
|
|
14
|
-
import { DECISION_EXTRACTOR_OUTPUT_SCHEMA } from "./schema.js";
|
|
15
|
-
const log = logger("decision-capture.extractor");
|
|
16
|
-
export async function runDecisionExtractor(input) {
|
|
17
|
-
const userPrompt = buildDecisionExtractorUserPrompt(input);
|
|
18
|
-
log.info({
|
|
19
|
-
tier: input.tier,
|
|
20
|
-
raw_text_len: input.raw_text.length,
|
|
21
|
-
accepted_decisions: input.accepted_decisions?.length ?? 0,
|
|
22
|
-
}, "decision-extractor dispatch");
|
|
23
|
-
const result = await runClaude({
|
|
24
|
-
tier: input.tier,
|
|
25
|
-
prompt: userPrompt,
|
|
26
|
-
system: DECISION_EXTRACTOR_SYSTEM_PROMPT,
|
|
27
|
-
jsonSchema: DECISION_EXTRACTOR_OUTPUT_SCHEMA,
|
|
28
|
-
timeoutMs: input.timeout_ms ?? 120_000,
|
|
29
|
-
});
|
|
30
|
-
if (!isOutput(result.parsed)) {
|
|
31
|
-
throw new Error(`decision-extractor returned malformed output. preview: ${result.text.slice(0, 200)}`);
|
|
32
|
-
}
|
|
33
|
-
const output = result.parsed;
|
|
34
|
-
log.info({
|
|
35
|
-
not_a_decision: output.not_a_decision,
|
|
36
|
-
subject_preview: output.subject.slice(0, 80),
|
|
37
|
-
assertions: output.candidate_assertions.length,
|
|
38
|
-
confidence: output.confidence_signal,
|
|
39
|
-
duration_ms: result.durationMs,
|
|
40
|
-
}, "decision-extractor complete");
|
|
41
|
-
return {
|
|
42
|
-
output,
|
|
43
|
-
duration_ms: result.durationMs,
|
|
44
|
-
...(result.usage !== undefined
|
|
45
|
-
? {
|
|
46
|
-
usage: {
|
|
47
|
-
...(result.usage["input_tokens"] !== undefined
|
|
48
|
-
? { input_tokens: result.usage["input_tokens"] }
|
|
49
|
-
: {}),
|
|
50
|
-
...(result.usage["output_tokens"] !== undefined
|
|
51
|
-
? { output_tokens: result.usage["output_tokens"] }
|
|
52
|
-
: {}),
|
|
53
|
-
},
|
|
54
|
-
}
|
|
55
|
-
: {}),
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
function isOutput(value) {
|
|
59
|
-
if (typeof value !== "object" || value === null)
|
|
60
|
-
return false;
|
|
61
|
-
const v = value;
|
|
62
|
-
if (typeof v["subject"] !== "string")
|
|
63
|
-
return false;
|
|
64
|
-
if (typeof v["summary"] !== "string")
|
|
65
|
-
return false;
|
|
66
|
-
if (!Array.isArray(v["scope_globs"]))
|
|
67
|
-
return false;
|
|
68
|
-
for (const g of v["scope_globs"]) {
|
|
69
|
-
if (typeof g !== "string")
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
const supersedes = v["supersedes"];
|
|
73
|
-
if (supersedes !== undefined &&
|
|
74
|
-
supersedes !== null &&
|
|
75
|
-
typeof supersedes !== "string") {
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
if (!Array.isArray(v["candidate_assertions"]))
|
|
79
|
-
return false;
|
|
80
|
-
for (const a of v["candidate_assertions"]) {
|
|
81
|
-
if (!isCandidateAssertion(a))
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
if (v["confidence_signal"] !== "high" &&
|
|
85
|
-
v["confidence_signal"] !== "medium" &&
|
|
86
|
-
v["confidence_signal"] !== "low") {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
if (typeof v["not_a_decision"] !== "boolean")
|
|
90
|
-
return false;
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
function isCandidateAssertion(value) {
|
|
94
|
-
if (typeof value !== "object" || value === null)
|
|
95
|
-
return false;
|
|
96
|
-
const v = value;
|
|
97
|
-
if (typeof v["kind"] !== "string")
|
|
98
|
-
return false;
|
|
99
|
-
if (typeof v["description"] !== "string")
|
|
100
|
-
return false;
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=extractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/decision-capture/extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Decision id allocator. DEC-NNNN, monotonic, never reused.
|
|
3
|
-
*
|
|
4
|
-
* Scans `.harness/ground/decisions/` for accepted decisions AND
|
|
5
|
-
* `.harness/ground/decisions/_inbox/` for outstanding drafts. Either counts
|
|
6
|
-
* toward the high-water mark — a draft that's pending operator confirmation
|
|
7
|
-
* still owns its id; rejecting a draft does NOT recycle the id.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Return the next free `DEC-<NNNN>` id. The scan is liberal — any DEC-prefixed
|
|
11
|
-
* file (`.md` or `.draft.md`) counts toward the mark, including superseded
|
|
12
|
-
* decisions and rejected drafts that the harness chose to leave on disk.
|
|
13
|
-
*/
|
|
14
|
-
export declare function allocateDecisionId(repoRoot: string): string;
|