@lumenflow/core 4.24.0 → 5.0.1
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/arg-parser.d.ts.map +1 -1
- package/dist/arg-parser.js +16 -0
- package/dist/arg-parser.js.map +1 -1
- package/dist/atomic-merge.d.ts.map +1 -1
- package/dist/atomic-merge.js +25 -18
- package/dist/atomic-merge.js.map +1 -1
- package/dist/client-ids.d.ts +1 -15
- package/dist/client-ids.d.ts.map +1 -1
- package/dist/client-ids.js +4 -13
- package/dist/client-ids.js.map +1 -1
- package/dist/code-path-validator.d.ts.map +1 -1
- package/dist/code-path-validator.js +6 -3
- package/dist/code-path-validator.js.map +1 -1
- package/dist/config-contract.d.ts +1 -30
- package/dist/config-contract.d.ts.map +1 -1
- package/dist/config-contract.js +4 -60
- package/dist/config-contract.js.map +1 -1
- package/dist/constants/backlog-patterns.d.ts +1 -20
- package/dist/constants/backlog-patterns.d.ts.map +1 -1
- package/dist/constants/backlog-patterns.js +2 -23
- package/dist/constants/backlog-patterns.js.map +1 -1
- package/dist/constants/duration-constants.d.ts +1 -28
- package/dist/constants/duration-constants.d.ts.map +1 -1
- package/dist/constants/duration-constants.js +4 -28
- package/dist/constants/duration-constants.js.map +1 -1
- package/dist/constants/gate-constants.d.ts +1 -23
- package/dist/constants/gate-constants.d.ts.map +1 -1
- package/dist/constants/gate-constants.js +4 -23
- package/dist/constants/gate-constants.js.map +1 -1
- package/dist/constants/lock-constants.d.ts +1 -28
- package/dist/constants/lock-constants.d.ts.map +1 -1
- package/dist/constants/lock-constants.js +2 -28
- package/dist/constants/lock-constants.js.map +1 -1
- package/dist/core/tool.schemas.d.ts +11 -11
- package/dist/core/worktree-guard.js +2 -2
- package/dist/core/worktree-guard.js.map +1 -1
- package/dist/cycle-detector.d.ts +4 -48
- package/dist/cycle-detector.d.ts.map +1 -1
- package/dist/cycle-detector.js +4 -78
- package/dist/cycle-detector.js.map +1 -1
- package/dist/date-utils.d.ts +1 -65
- package/dist/date-utils.d.ts.map +1 -1
- package/dist/date-utils.js +4 -140
- package/dist/date-utils.js.map +1 -1
- package/dist/delegation-monitor.d.ts +2 -0
- package/dist/delegation-monitor.d.ts.map +1 -1
- package/dist/delegation-monitor.js +29 -2
- package/dist/delegation-monitor.js.map +1 -1
- package/dist/delegation-recovery.d.ts +36 -17
- package/dist/delegation-recovery.d.ts.map +1 -1
- package/dist/delegation-recovery.js +285 -82
- package/dist/delegation-recovery.js.map +1 -1
- package/dist/delegation-registry-schema.d.ts +257 -31
- package/dist/delegation-registry-schema.d.ts.map +1 -1
- package/dist/delegation-registry-schema.js +43 -34
- package/dist/delegation-registry-schema.js.map +1 -1
- package/dist/delegation-registry-store.d.ts +4 -128
- package/dist/delegation-registry-store.d.ts.map +1 -1
- package/dist/delegation-registry-store.js +39 -178
- package/dist/delegation-registry-store.js.map +1 -1
- package/dist/delegation-tree.d.ts +12 -20
- package/dist/delegation-tree.d.ts.map +1 -1
- package/dist/delegation-tree.js +40 -29
- package/dist/delegation-tree.js.map +1 -1
- package/dist/delivery-review-contract.d.ts +1 -1
- package/dist/delivery-review-contract.d.ts.map +1 -1
- package/dist/docs-layout-presets.d.ts +1 -30
- package/dist/docs-layout-presets.d.ts.map +1 -1
- package/dist/docs-layout-presets.js +4 -38
- package/dist/docs-layout-presets.js.map +1 -1
- package/dist/domain/context.schemas.d.ts +3 -3
- package/dist/domain/orchestration.constants.d.ts +1 -110
- package/dist/domain/orchestration.constants.d.ts.map +1 -1
- package/dist/domain/orchestration.constants.js +2 -127
- package/dist/domain/orchestration.constants.js.map +1 -1
- package/dist/domain/orchestration.schemas.d.ts +1 -306
- package/dist/domain/orchestration.schemas.d.ts.map +1 -1
- package/dist/domain/orchestration.schemas.js +2 -211
- package/dist/domain/orchestration.schemas.js.map +1 -1
- package/dist/domain/orchestration.types.d.ts +1 -133
- package/dist/domain/orchestration.types.d.ts.map +1 -1
- package/dist/domain/orchestration.types.js +2 -2
- package/dist/domain/orchestration.types.js.map +1 -1
- package/dist/domain/recovery.schemas.d.ts +3 -3
- package/dist/domain/validation.schemas.d.ts +4 -4
- package/dist/error-handler.d.ts +4 -173
- package/dist/error-handler.d.ts.map +1 -1
- package/dist/error-handler.js +4 -244
- package/dist/error-handler.js.map +1 -1
- package/dist/file-classifiers.d.ts.map +1 -1
- package/dist/file-classifiers.js +26 -0
- package/dist/file-classifiers.js.map +1 -1
- package/dist/git-adapter.d.ts +4 -448
- package/dist/git-adapter.d.ts.map +1 -1
- package/dist/git-adapter.js +4 -772
- package/dist/git-adapter.js.map +1 -1
- package/dist/git-context-extractor.d.ts +4 -98
- package/dist/git-context-extractor.d.ts.map +1 -1
- package/dist/git-context-extractor.js +4 -563
- package/dist/git-context-extractor.js.map +1 -1
- package/dist/git-staged-validator.d.ts +4 -29
- package/dist/git-staged-validator.d.ts.map +1 -1
- package/dist/git-staged-validator.js +4 -46
- package/dist/git-staged-validator.js.map +1 -1
- package/dist/incremental-lint.d.ts.map +1 -1
- package/dist/incremental-lint.js +3 -2
- package/dist/incremental-lint.js.map +1 -1
- package/dist/incremental-test.d.ts +1 -32
- package/dist/incremental-test.d.ts.map +1 -1
- package/dist/incremental-test.js +4 -61
- package/dist/incremental-test.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/integration-target.d.ts +30 -0
- package/dist/integration-target.d.ts.map +1 -0
- package/dist/integration-target.js +51 -0
- package/dist/integration-target.js.map +1 -0
- package/dist/lane-checker.d.ts.map +1 -1
- package/dist/lane-checker.js +8 -0
- package/dist/lane-checker.js.map +1 -1
- package/dist/lumenflow-config-schema.d.ts +73 -29
- package/dist/lumenflow-config-schema.d.ts.map +1 -1
- package/dist/lumenflow-config-schema.js +1 -1
- package/dist/lumenflow-config-schema.js.map +1 -1
- package/dist/lumenflow-config.d.ts +10 -34
- package/dist/lumenflow-config.d.ts.map +1 -1
- package/dist/lumenflow-config.js +32 -142
- package/dist/lumenflow-config.js.map +1 -1
- package/dist/manual-test-validator.d.ts +1 -96
- package/dist/manual-test-validator.d.ts.map +1 -1
- package/dist/manual-test-validator.js +4 -245
- package/dist/manual-test-validator.js.map +1 -1
- package/dist/micro-worktree-shared.d.ts.map +1 -1
- package/dist/micro-worktree-shared.js +10 -9
- package/dist/micro-worktree-shared.js.map +1 -1
- package/dist/micro-worktree.d.ts.map +1 -1
- package/dist/micro-worktree.js +26 -23
- package/dist/micro-worktree.js.map +1 -1
- package/dist/normalize-config-keys.d.ts +1 -10
- package/dist/normalize-config-keys.d.ts.map +1 -1
- package/dist/normalize-config-keys.js +7 -73
- package/dist/normalize-config-keys.js.map +1 -1
- package/dist/object-guards.d.ts +1 -10
- package/dist/object-guards.d.ts.map +1 -1
- package/dist/object-guards.js +7 -20
- package/dist/object-guards.js.map +1 -1
- package/dist/ports/config.ports.d.ts +1 -82
- package/dist/ports/config.ports.d.ts.map +1 -1
- package/dist/ports/config.ports.js +2 -1
- package/dist/ports/config.ports.js.map +1 -1
- package/dist/ports/dashboard-renderer.port.d.ts +1 -112
- package/dist/ports/dashboard-renderer.port.d.ts.map +1 -1
- package/dist/ports/dashboard-renderer.port.js +2 -1
- package/dist/ports/dashboard-renderer.port.js.map +1 -1
- package/dist/ports/git-validator.ports.d.ts +5 -110
- package/dist/ports/git-validator.ports.d.ts.map +1 -1
- package/dist/ports/git-validator.ports.js +8 -1
- package/dist/ports/git-validator.ports.js.map +1 -1
- package/dist/ports/sync-validator.ports.d.ts +1 -51
- package/dist/ports/sync-validator.ports.d.ts.map +1 -1
- package/dist/ports/sync-validator.ports.js +2 -1
- package/dist/ports/sync-validator.ports.js.map +1 -1
- package/dist/ports/wu-helpers.ports.d.ts +1 -156
- package/dist/ports/wu-helpers.ports.d.ts.map +1 -1
- package/dist/ports/wu-helpers.ports.js +2 -1
- package/dist/ports/wu-helpers.ports.js.map +1 -1
- package/dist/ports/wu-state.ports.d.ts +1 -208
- package/dist/ports/wu-state.ports.d.ts.map +1 -1
- package/dist/ports/wu-state.ports.js +2 -1
- package/dist/ports/wu-state.ports.js.map +1 -1
- package/dist/rebase-artifact-cleanup.d.ts.map +1 -1
- package/dist/rebase-artifact-cleanup.js +6 -3
- package/dist/rebase-artifact-cleanup.js.map +1 -1
- package/dist/sandbox-allowlist.d.ts +1 -15
- package/dist/sandbox-allowlist.d.ts.map +1 -1
- package/dist/sandbox-allowlist.js +4 -74
- package/dist/sandbox-allowlist.js.map +1 -1
- package/dist/sandbox-backend-linux.d.ts +1 -5
- package/dist/sandbox-backend-linux.d.ts.map +1 -1
- package/dist/sandbox-backend-linux.js +4 -64
- package/dist/sandbox-backend-linux.js.map +1 -1
- package/dist/sandbox-backend-macos.d.ts +1 -5
- package/dist/sandbox-backend-macos.d.ts.map +1 -1
- package/dist/sandbox-backend-macos.js +4 -109
- package/dist/sandbox-backend-macos.js.map +1 -1
- package/dist/sandbox-backend-windows.d.ts +1 -5
- package/dist/sandbox-backend-windows.d.ts.map +1 -1
- package/dist/sandbox-backend-windows.js +4 -27
- package/dist/sandbox-backend-windows.js.map +1 -1
- package/dist/sandbox-profile.d.ts +1 -57
- package/dist/sandbox-profile.d.ts.map +1 -1
- package/dist/sandbox-profile.js +4 -65
- package/dist/sandbox-profile.js.map +1 -1
- package/dist/schemas/agents-config.d.ts +47 -0
- package/dist/schemas/agents-config.d.ts.map +1 -1
- package/dist/schemas/agents-config.js +59 -0
- package/dist/schemas/agents-config.js.map +1 -1
- package/dist/schemas/command-schemas.d.ts +4 -4
- package/dist/schemas/flow-arg-validators.d.ts +2 -2
- package/dist/schemas/flow-schemas.d.ts +4 -4
- package/dist/schemas/gates-section-config.d.ts +32 -13
- package/dist/schemas/gates-section-config.d.ts.map +1 -1
- package/dist/schemas/gates-section-config.js +16 -1
- package/dist/schemas/gates-section-config.js.map +1 -1
- package/dist/schemas/initiative-arg-validators.d.ts +2 -2
- package/dist/schemas/initiative-schemas.d.ts +12 -12
- package/dist/schemas/lanes-config.d.ts +5 -5
- package/dist/schemas/memory-arg-validators.d.ts +6 -0
- package/dist/schemas/memory-arg-validators.d.ts.map +1 -1
- package/dist/schemas/memory-config.d.ts +4 -4
- package/dist/schemas/memory-schemas.d.ts +12 -0
- package/dist/schemas/memory-schemas.d.ts.map +1 -1
- package/dist/schemas/memory-schemas.js +12 -0
- package/dist/schemas/memory-schemas.js.map +1 -1
- package/dist/schemas/operational-config.d.ts +4 -4
- package/dist/schemas/setup-arg-validators.d.ts +3 -3
- package/dist/schemas/setup-schemas.d.ts +8 -8
- package/dist/schemas/wu-config.d.ts +3 -3
- package/dist/schemas/wu-lifecycle-arg-validators.d.ts +2 -2
- package/dist/schemas/wu-lifecycle-schemas.d.ts +4 -4
- package/dist/section-headings.d.ts +1 -34
- package/dist/section-headings.d.ts.map +1 -1
- package/dist/section-headings.js +2 -51
- package/dist/section-headings.js.map +1 -1
- package/dist/spawn-constraints-generator.js +3 -3
- package/dist/spawn-constraints-generator.js.map +1 -1
- package/dist/spawn-guidance-generators.d.ts +1 -1
- package/dist/spawn-guidance-generators.d.ts.map +1 -1
- package/dist/spawn-policy-resolver.d.ts +1 -1
- package/dist/spawn-policy-resolver.d.ts.map +1 -1
- package/dist/spawn-task-builder.d.ts +17 -1
- package/dist/spawn-task-builder.d.ts.map +1 -1
- package/dist/spawn-task-builder.js +63 -1
- package/dist/spawn-task-builder.js.map +1 -1
- package/dist/spawn-template-assembler.d.ts +1 -1
- package/dist/spawn-template-assembler.d.ts.map +1 -1
- package/dist/state-machine.d.ts +1 -9
- package/dist/state-machine.d.ts.map +1 -1
- package/dist/state-machine.js +2 -86
- package/dist/state-machine.js.map +1 -1
- package/dist/sync-validator.d.ts.map +1 -1
- package/dist/sync-validator.js +15 -12
- package/dist/sync-validator.js.map +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +3 -2
- package/dist/telemetry.js.map +1 -1
- package/dist/work-classifier.d.ts +1 -102
- package/dist/work-classifier.d.ts.map +1 -1
- package/dist/work-classifier.js +2 -424
- package/dist/work-classifier.js.map +1 -1
- package/dist/worktree-symlink.d.ts +2 -2
- package/dist/worktree-symlink.d.ts.map +1 -1
- package/dist/worktree-symlink.js +37 -12
- package/dist/worktree-symlink.js.map +1 -1
- package/dist/wu-cli-constants.d.ts +1 -433
- package/dist/wu-cli-constants.d.ts.map +1 -1
- package/dist/wu-cli-constants.js +4 -436
- package/dist/wu-cli-constants.js.map +1 -1
- package/dist/wu-consistency-file-repairs.d.ts.map +1 -1
- package/dist/wu-consistency-file-repairs.js +5 -3
- package/dist/wu-consistency-file-repairs.js.map +1 -1
- package/dist/wu-context-constants.d.ts +22 -0
- package/dist/wu-context-constants.d.ts.map +1 -1
- package/dist/wu-context-constants.js +22 -0
- package/dist/wu-context-constants.js.map +1 -1
- package/dist/wu-doc-types.d.ts +1 -47
- package/dist/wu-doc-types.d.ts.map +1 -1
- package/dist/wu-domain-constants.d.ts +1 -295
- package/dist/wu-domain-constants.d.ts.map +1 -1
- package/dist/wu-domain-constants.js +4 -397
- package/dist/wu-domain-constants.js.map +1 -1
- package/dist/wu-done-branch-only.d.ts +1 -1
- package/dist/wu-done-branch-only.d.ts.map +1 -1
- package/dist/wu-done-branch-only.js +22 -13
- package/dist/wu-done-branch-only.js.map +1 -1
- package/dist/wu-done-branch-utils.d.ts.map +1 -1
- package/dist/wu-done-branch-utils.js +5 -3
- package/dist/wu-done-branch-utils.js.map +1 -1
- package/dist/wu-done-cleanup.d.ts.map +1 -1
- package/dist/wu-done-cleanup.js +66 -22
- package/dist/wu-done-cleanup.js.map +1 -1
- package/dist/wu-done-concurrent-merge.d.ts.map +1 -1
- package/dist/wu-done-concurrent-merge.js +9 -6
- package/dist/wu-done-concurrent-merge.js.map +1 -1
- package/dist/wu-done-errors.d.ts +3 -3
- package/dist/wu-done-errors.d.ts.map +1 -1
- package/dist/wu-done-inputs.d.ts.map +1 -1
- package/dist/wu-done-inputs.js +3 -0
- package/dist/wu-done-inputs.js.map +1 -1
- package/dist/wu-done-merge-phase.d.ts.map +1 -1
- package/dist/wu-done-merge-phase.js +4 -2
- package/dist/wu-done-merge-phase.js.map +1 -1
- package/dist/wu-done-merge.d.ts.map +1 -1
- package/dist/wu-done-merge.js +16 -8
- package/dist/wu-done-merge.js.map +1 -1
- package/dist/wu-done-merged-worktree.d.ts.map +1 -1
- package/dist/wu-done-merged-worktree.js +7 -8
- package/dist/wu-done-merged-worktree.js.map +1 -1
- package/dist/wu-done-messages.d.ts.map +1 -1
- package/dist/wu-done-messages.js +12 -5
- package/dist/wu-done-messages.js.map +1 -1
- package/dist/wu-done-metadata.d.ts.map +1 -1
- package/dist/wu-done-metadata.js +3 -8
- package/dist/wu-done-metadata.js.map +1 -1
- package/dist/wu-done-preflight-checks.d.ts.map +1 -1
- package/dist/wu-done-preflight-checks.js +21 -15
- package/dist/wu-done-preflight-checks.js.map +1 -1
- package/dist/wu-done-rebase.d.ts.map +1 -1
- package/dist/wu-done-rebase.js +10 -8
- package/dist/wu-done-rebase.js.map +1 -1
- package/dist/wu-done-retry-helpers.d.ts.map +1 -1
- package/dist/wu-done-retry-helpers.js +13 -11
- package/dist/wu-done-retry-helpers.js.map +1 -1
- package/dist/wu-done-validation.d.ts.map +1 -1
- package/dist/wu-done-validation.js +4 -2
- package/dist/wu-done-validation.js.map +1 -1
- package/dist/wu-done-worktree-services.d.ts.map +1 -1
- package/dist/wu-done-worktree-services.js +4 -2
- package/dist/wu-done-worktree-services.js.map +1 -1
- package/dist/wu-done-worktree.d.ts.map +1 -1
- package/dist/wu-done-worktree.js +4 -2
- package/dist/wu-done-worktree.js.map +1 -1
- package/dist/wu-git-constants.d.ts +1 -175
- package/dist/wu-git-constants.d.ts.map +1 -1
- package/dist/wu-git-constants.js +4 -175
- package/dist/wu-git-constants.js.map +1 -1
- package/dist/wu-helpers.d.ts +24 -0
- package/dist/wu-helpers.d.ts.map +1 -1
- package/dist/wu-helpers.js +37 -4
- package/dist/wu-helpers.js.map +1 -1
- package/dist/wu-id-format.d.ts +1 -137
- package/dist/wu-id-format.d.ts.map +1 -1
- package/dist/wu-id-format.js +2 -249
- package/dist/wu-id-format.js.map +1 -1
- package/dist/wu-id-generator.d.ts.map +1 -1
- package/dist/wu-id-generator.js +8 -5
- package/dist/wu-id-generator.js.map +1 -1
- package/dist/wu-paths-constants.d.ts +1 -253
- package/dist/wu-paths-constants.d.ts.map +1 -1
- package/dist/wu-paths-constants.js +4 -273
- package/dist/wu-paths-constants.js.map +1 -1
- package/dist/wu-paths.d.ts +1 -274
- package/dist/wu-paths.d.ts.map +1 -1
- package/dist/wu-paths.js +4 -236
- package/dist/wu-paths.js.map +1 -1
- package/dist/wu-rules-resolvers.d.ts.map +1 -1
- package/dist/wu-rules-resolvers.js +11 -6
- package/dist/wu-rules-resolvers.js.map +1 -1
- package/dist/wu-schema.d.ts +1 -830
- package/dist/wu-schema.d.ts.map +1 -1
- package/dist/wu-schema.js +4 -929
- package/dist/wu-schema.js.map +1 -1
- package/dist/wu-spawn-helpers.d.ts.map +1 -1
- package/dist/wu-spawn-helpers.js +5 -2
- package/dist/wu-spawn-helpers.js.map +1 -1
- package/dist/wu-spawn.d.ts +2 -2
- package/dist/wu-spawn.d.ts.map +1 -1
- package/dist/wu-spawn.js +2 -2
- package/dist/wu-spawn.js.map +1 -1
- package/dist/wu-state-schema.d.ts +1 -291
- package/dist/wu-state-schema.d.ts.map +1 -1
- package/dist/wu-state-schema.js +4 -212
- package/dist/wu-state-schema.js.map +1 -1
- package/dist/wu-status-transition.d.ts +3 -1
- package/dist/wu-status-transition.d.ts.map +1 -1
- package/dist/wu-status-transition.js +9 -24
- package/dist/wu-status-transition.js.map +1 -1
- package/dist/wu-statuses.d.ts +1 -208
- package/dist/wu-statuses.d.ts.map +1 -1
- package/dist/wu-statuses.js +4 -242
- package/dist/wu-statuses.js.map +1 -1
- package/dist/wu-transaction-collectors.d.ts +1 -0
- package/dist/wu-transaction-collectors.d.ts.map +1 -1
- package/dist/wu-transaction-collectors.js +13 -8
- package/dist/wu-transaction-collectors.js.map +1 -1
- package/dist/wu-type-helpers.d.ts +1 -27
- package/dist/wu-type-helpers.d.ts.map +1 -1
- package/dist/wu-type-helpers.js +4 -46
- package/dist/wu-type-helpers.js.map +1 -1
- package/dist/wu-ui-constants.d.ts +1 -235
- package/dist/wu-ui-constants.d.ts.map +1 -1
- package/dist/wu-ui-constants.js +5 -235
- package/dist/wu-ui-constants.js.map +1 -1
- package/dist/wu-validation-constants.d.ts +1 -60
- package/dist/wu-validation-constants.d.ts.map +1 -1
- package/dist/wu-validation-constants.js +4 -66
- package/dist/wu-validation-constants.js.map +1 -1
- package/dist/wu-yaml.d.ts +1 -112
- package/dist/wu-yaml.d.ts.map +1 -1
- package/dist/wu-yaml.js +4 -304
- package/dist/wu-yaml.js.map +1 -1
- package/package.json +12 -9
- package/dist/coverage-gate.d.ts +0 -128
- package/dist/coverage-gate.d.ts.map +0 -1
- package/dist/coverage-gate.js +0 -211
- package/dist/coverage-gate.js.map +0 -1
- package/dist/gates-agent-mode.d.ts +0 -108
- package/dist/gates-agent-mode.d.ts.map +0 -1
- package/dist/gates-agent-mode.js +0 -138
- package/dist/gates-agent-mode.js.map +0 -1
- package/dist/gates-config-internal.d.ts +0 -54
- package/dist/gates-config-internal.d.ts.map +0 -1
- package/dist/gates-config-internal.js +0 -107
- package/dist/gates-config-internal.js.map +0 -1
- package/dist/gates-config.d.ts +0 -68
- package/dist/gates-config.d.ts.map +0 -1
- package/dist/gates-config.js +0 -193
- package/dist/gates-config.js.map +0 -1
- package/dist/gates-coverage.d.ts +0 -42
- package/dist/gates-coverage.d.ts.map +0 -1
- package/dist/gates-coverage.js +0 -162
- package/dist/gates-coverage.js.map +0 -1
- package/dist/gates-presets.d.ts +0 -52
- package/dist/gates-presets.d.ts.map +0 -1
- package/dist/gates-presets.js +0 -117
- package/dist/gates-presets.js.map +0 -1
- package/dist/gates-schemas.d.ts +0 -143
- package/dist/gates-schemas.d.ts.map +0 -1
- package/dist/gates-schemas.js +0 -67
- package/dist/gates-schemas.js.map +0 -1
- package/dist/package-manager-resolver.d.ts +0 -80
- package/dist/package-manager-resolver.d.ts.map +0 -1
- package/dist/package-manager-resolver.js +0 -245
- package/dist/package-manager-resolver.js.map +0 -1
- package/dist/resolve-policy.d.ts +0 -293
- package/dist/resolve-policy.d.ts.map +0 -1
- package/dist/resolve-policy.js +0 -303
- package/dist/resolve-policy.js.map +0 -1
|
@@ -1,569 +1,10 @@
|
|
|
1
1
|
// Copyright (c) 2026 Hellmai Ltd
|
|
2
2
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
3
|
/**
|
|
4
|
-
* Git Context Extractor
|
|
4
|
+
* Git Context Extractor — Re-export shim (ADR-012, INIT-058 Layer 4b, WU-2682).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* - Ownership: primary contributors to file/directory
|
|
9
|
-
* - Churn: change frequency metrics (hotspots)
|
|
10
|
-
*
|
|
11
|
-
* These signals help the LLM understand codebase relationships
|
|
12
|
-
* without algorithmic clustering - the LLM interprets the patterns.
|
|
13
|
-
*/
|
|
14
|
-
import { execSync } from 'node:child_process';
|
|
15
|
-
import { SHA1_HEX_LENGTH, GIT_COMMAND_TIMEOUT_MS, GIT_MAX_BUFFER_BYTES, GIT_DEFAULT_MAX_COMMITS, GIT_DEFAULT_MAX_RESULTS, GIT_MIN_COMMIT_COUNT, GIT_MIN_CO_OCCURRENCE_COUNT, GIT_MAX_TOP_LEVEL_DIRS, GIT_SUMMARY_ITEM_LIMIT, CHARS_PER_TOKEN, GIT_DEFAULT_MAX_SUMMARY_TOKENS, GIT_TRUNCATION_PADDING, } from './constants/git-constants.js';
|
|
16
|
-
import { SECTION_HEADER_LINE_COUNT } from './constants/display-constants.js';
|
|
17
|
-
// Constants
|
|
18
|
-
const DEFAULT_EXCLUDE_PATTERNS = ['*.lock', '*.yaml', '*.yml', '*.json', '*.md', 'pnpm-lock.yaml'];
|
|
19
|
-
// Pre-compiled regex patterns for performance
|
|
20
|
-
// Note: Using atomic groups or possessive quantifiers isn't supported in JS,
|
|
21
|
-
// so some patterns are implemented as functions to avoid backtracking
|
|
22
|
-
const NUMSTAT_LINE_REGEX = /^(\d+|-)\t(\d+|-)\t(.+)$/;
|
|
23
|
-
const DANGEROUS_CHARS_REGEX = /[;&|`$]/;
|
|
24
|
-
/**
|
|
25
|
-
* Parse shortlog line: " 10\tName <email>"
|
|
26
|
-
* Manual parsing to avoid slow regex backtracking
|
|
27
|
-
*/
|
|
28
|
-
function parseShortlogFormat(line) {
|
|
29
|
-
// Skip leading whitespace
|
|
30
|
-
let i = 0;
|
|
31
|
-
while (i < line.length && (line.charAt(i) === ' ' || line.charAt(i) === '\t')) {
|
|
32
|
-
i++;
|
|
33
|
-
}
|
|
34
|
-
// Parse digits
|
|
35
|
-
const digitStart = i;
|
|
36
|
-
while (i < line.length && line.charAt(i) >= '0' && line.charAt(i) <= '9') {
|
|
37
|
-
i++;
|
|
38
|
-
}
|
|
39
|
-
if (i === digitStart)
|
|
40
|
-
return null; // No digits found
|
|
41
|
-
const count = parseInt(line.slice(digitStart, i), 10);
|
|
42
|
-
// Skip whitespace after digits
|
|
43
|
-
while (i < line.length && (line.charAt(i) === ' ' || line.charAt(i) === '\t')) {
|
|
44
|
-
i++;
|
|
45
|
-
}
|
|
46
|
-
// Rest is the name
|
|
47
|
-
const name = line.slice(i).trim();
|
|
48
|
-
if (!name)
|
|
49
|
-
return null;
|
|
50
|
-
return { count, name };
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Check if a string is a git commit hash (40 hex chars)
|
|
54
|
-
* Uses character-by-character check to avoid slow regex backtracking
|
|
55
|
-
*/
|
|
56
|
-
function isCommitHash(str) {
|
|
57
|
-
if (str.length !== SHA1_HEX_LENGTH)
|
|
58
|
-
return false;
|
|
59
|
-
for (const char of str) {
|
|
60
|
-
if (!((char >= '0' && char <= '9') || (char >= 'a' && char <= 'f'))) {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
const SOURCE_FILE_EXCLUDE_PATTERNS = [
|
|
67
|
-
/\.lock$/,
|
|
68
|
-
/lock\.ya?ml$/,
|
|
69
|
-
/package-lock\.json$/,
|
|
70
|
-
/yarn\.lock$/,
|
|
71
|
-
/\.gitignore$/,
|
|
72
|
-
/\.env/,
|
|
73
|
-
/node_modules/,
|
|
74
|
-
/dist\//,
|
|
75
|
-
/build\//,
|
|
76
|
-
/\.min\./,
|
|
77
|
-
];
|
|
78
|
-
/**
|
|
79
|
-
* Execute a git command safely, returning empty string on error.
|
|
80
|
-
*
|
|
81
|
-
* SECURITY: Commands are constructed from static arguments (no user input) to prevent injection.
|
|
82
|
-
* The args array is joined into a command string for execSync.
|
|
83
|
-
* All callers pass only internally-constructed arguments.
|
|
84
|
-
*/
|
|
85
|
-
function safeGitExec(args, cwd) {
|
|
86
|
-
try {
|
|
87
|
-
// Join args into a command string
|
|
88
|
-
// SECURITY: all args are constructed internally (no user input)
|
|
89
|
-
const cmd = ['git', ...args].join(' ');
|
|
90
|
-
// SECURITY: execSync is safe here because:
|
|
91
|
-
// 1. 'git' is a fixed command from PATH (trusted)
|
|
92
|
-
// 2. args are internally constructed, not from user input
|
|
93
|
-
// 3. cwd is validated by the caller (projectRoot from CLI)
|
|
94
|
-
const result = execSync(cmd, {
|
|
95
|
-
cwd,
|
|
96
|
-
encoding: 'utf-8',
|
|
97
|
-
maxBuffer: GIT_MAX_BUFFER_BYTES,
|
|
98
|
-
timeout: GIT_COMMAND_TIMEOUT_MS,
|
|
99
|
-
});
|
|
100
|
-
return result;
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
return '';
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Check if commit count indicates limited history
|
|
108
|
-
*/
|
|
109
|
-
function hasLimitedCommitCount(projectRoot) {
|
|
110
|
-
const commitCountStr = safeGitExec(['rev-list', '--count', 'HEAD'], projectRoot).trim();
|
|
111
|
-
const count = parseInt(commitCountStr, 10) || 0;
|
|
112
|
-
return { limited: count < GIT_MIN_COMMIT_COUNT, count };
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Extract complete git context from a repository
|
|
116
|
-
*/
|
|
117
|
-
export function extractGitContext(projectRoot, options = {}) {
|
|
118
|
-
const result = {
|
|
119
|
-
coOccurrences: [],
|
|
120
|
-
ownership: [],
|
|
121
|
-
churn: [],
|
|
122
|
-
hasLimitedHistory: false,
|
|
123
|
-
};
|
|
124
|
-
try {
|
|
125
|
-
// Check if this is a git repo using execSync directly
|
|
126
|
-
// SECURITY: This is a static command with no user input
|
|
127
|
-
// eslint-disable-next-line sonarjs/no-os-command-from-path -- git resolved from PATH; workflow tooling requires git
|
|
128
|
-
execSync('git rev-parse --is-inside-work-tree', {
|
|
129
|
-
cwd: projectRoot,
|
|
130
|
-
encoding: 'utf-8',
|
|
131
|
-
});
|
|
132
|
-
const { limited, count } = hasLimitedCommitCount(projectRoot);
|
|
133
|
-
if (limited) {
|
|
134
|
-
result.hasLimitedHistory = true;
|
|
135
|
-
result.error = `Repository has fewer than ${GIT_MIN_COMMIT_COUNT} commits (found ${count})`;
|
|
136
|
-
return result;
|
|
137
|
-
}
|
|
138
|
-
// Extract co-occurrences
|
|
139
|
-
result.coOccurrences = getFileCoOccurrence(projectRoot, {
|
|
140
|
-
maxCommits: options.maxCommits ?? GIT_DEFAULT_MAX_COMMITS,
|
|
141
|
-
since: options.since,
|
|
142
|
-
});
|
|
143
|
-
// Get top-level directories for ownership analysis
|
|
144
|
-
const topDirs = getTopLevelDirs(projectRoot);
|
|
145
|
-
result.ownership = getOwnershipSignals(projectRoot, topDirs);
|
|
146
|
-
// Extract churn metrics
|
|
147
|
-
result.churn = getChurnMetrics(projectRoot, {
|
|
148
|
-
maxCommits: options.maxCommits ?? GIT_DEFAULT_MAX_COMMITS,
|
|
149
|
-
since: options.since,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
handleExtractionError(result, error);
|
|
154
|
-
}
|
|
155
|
-
return result;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Handle extraction errors and set appropriate error messages
|
|
159
|
-
*/
|
|
160
|
-
function handleExtractionError(result, error) {
|
|
161
|
-
result.hasLimitedHistory = true;
|
|
162
|
-
if (error instanceof Error) {
|
|
163
|
-
if (error.message.includes('not a git repository')) {
|
|
164
|
-
result.error = 'not a git repository';
|
|
165
|
-
}
|
|
166
|
-
else if (error.message.includes('does not have UnsafeAny commits')) {
|
|
167
|
-
result.error = 'no commits in repository';
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
result.error = error.message;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Get top-level directories for ownership analysis
|
|
176
|
-
*/
|
|
177
|
-
function getTopLevelDirs(projectRoot) {
|
|
178
|
-
const output = safeGitExec(['ls-tree', '-d', '--name-only', 'HEAD'], projectRoot);
|
|
179
|
-
return output
|
|
180
|
-
.split('\n')
|
|
181
|
-
.filter((d) => d.trim() && !d.startsWith('.'))
|
|
182
|
-
.slice(0, GIT_MAX_TOP_LEVEL_DIRS);
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Parse git log output into commits with their files
|
|
186
|
-
*/
|
|
187
|
-
function parseCommitsFromLog(output) {
|
|
188
|
-
const commits = [];
|
|
189
|
-
let currentFiles = [];
|
|
190
|
-
for (const line of output.split('\n')) {
|
|
191
|
-
const trimmed = line.trim();
|
|
192
|
-
if (!trimmed) {
|
|
193
|
-
if (currentFiles.length > 0) {
|
|
194
|
-
commits.push([...currentFiles]);
|
|
195
|
-
currentFiles = [];
|
|
196
|
-
}
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
// Skip commit hashes (40 hex chars)
|
|
200
|
-
if (isCommitHash(trimmed)) {
|
|
201
|
-
if (currentFiles.length > 0) {
|
|
202
|
-
commits.push([...currentFiles]);
|
|
203
|
-
currentFiles = [];
|
|
204
|
-
}
|
|
205
|
-
continue;
|
|
206
|
-
}
|
|
207
|
-
// Only track source files
|
|
208
|
-
if (isSourceFile(trimmed)) {
|
|
209
|
-
currentFiles.push(trimmed);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
if (currentFiles.length > 0) {
|
|
213
|
-
commits.push(currentFiles);
|
|
214
|
-
}
|
|
215
|
-
return commits;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Count file pair co-occurrences from commits
|
|
219
|
-
*/
|
|
220
|
-
function countFilePairs(commits) {
|
|
221
|
-
const pairCounts = new Map();
|
|
222
|
-
for (const files of commits) {
|
|
223
|
-
if (files.length < 2)
|
|
224
|
-
continue;
|
|
225
|
-
// Generate all pairs
|
|
226
|
-
for (let i = 0; i < files.length; i++) {
|
|
227
|
-
for (let j = i + 1; j < files.length; j++) {
|
|
228
|
-
const fileA = files[i];
|
|
229
|
-
const fileB = files[j];
|
|
230
|
-
if (!fileA || !fileB)
|
|
231
|
-
continue;
|
|
232
|
-
const pair = [fileA, fileB]
|
|
233
|
-
.slice()
|
|
234
|
-
.sort((a, b) => a.localeCompare(b))
|
|
235
|
-
.join('::');
|
|
236
|
-
pairCounts.set(pair, (pairCounts.get(pair) ?? 0) + 1);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
return pairCounts;
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Extract file co-occurrence patterns from git history
|
|
244
|
-
*/
|
|
245
|
-
export function getFileCoOccurrence(projectRoot, options = {}) {
|
|
246
|
-
const maxCommits = options.maxCommits ?? GIT_DEFAULT_MAX_COMMITS;
|
|
247
|
-
const maxResults = options.maxResults ?? GIT_DEFAULT_MAX_RESULTS;
|
|
248
|
-
// Build git log args array (safe - no user input in paths)
|
|
249
|
-
const args = ['log', `-n`, String(maxCommits)];
|
|
250
|
-
if (options.since) {
|
|
251
|
-
args.push(`--since=${options.since}`);
|
|
252
|
-
}
|
|
253
|
-
args.push('--name-only', '--pretty=format:%H', '--diff-filter=ACMRT');
|
|
254
|
-
const output = safeGitExec(args, projectRoot);
|
|
255
|
-
if (!output.trim()) {
|
|
256
|
-
return [];
|
|
257
|
-
}
|
|
258
|
-
const commits = parseCommitsFromLog(output);
|
|
259
|
-
const pairCounts = countFilePairs(commits);
|
|
260
|
-
// Convert to array and filter
|
|
261
|
-
const coOccurrences = [];
|
|
262
|
-
for (const [pair, count] of pairCounts.entries()) {
|
|
263
|
-
if (count >= GIT_MIN_CO_OCCURRENCE_COUNT) {
|
|
264
|
-
const [file1, file2] = pair.split('::');
|
|
265
|
-
if (!file1 || !file2)
|
|
266
|
-
continue;
|
|
267
|
-
coOccurrences.push({ file1, file2, count });
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
// Sort by count descending and limit results (use toSorted to avoid mutation)
|
|
271
|
-
return coOccurrences
|
|
272
|
-
.slice()
|
|
273
|
-
.sort((a, b) => b.count - a.count)
|
|
274
|
-
.slice(0, maxResults);
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Check if a file is a source file (not config, lock, etc.)
|
|
278
|
-
*/
|
|
279
|
-
function isSourceFile(filePath) {
|
|
280
|
-
return !SOURCE_FILE_EXCLUDE_PATTERNS.some((pattern) => pattern.test(filePath));
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Parse a single contributor line from shortlog output
|
|
284
|
-
*/
|
|
285
|
-
function parseShortlogLine(line) {
|
|
286
|
-
const result = parseShortlogFormat(line);
|
|
287
|
-
if (!result)
|
|
288
|
-
return null;
|
|
289
|
-
return {
|
|
290
|
-
count: result.count,
|
|
291
|
-
name: result.name,
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Extract ownership signal for a single path
|
|
296
|
-
*/
|
|
297
|
-
function extractOwnershipForPath(projectRoot, targetPath) {
|
|
298
|
-
// Validate path doesn't contain dangerous characters
|
|
299
|
-
if (DANGEROUS_CHARS_REGEX.test(targetPath)) {
|
|
300
|
-
return {
|
|
301
|
-
path: targetPath,
|
|
302
|
-
primaryOwner: null,
|
|
303
|
-
contributors: [],
|
|
304
|
-
commitCount: 0,
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
// Use array form for safety
|
|
308
|
-
const args = ['shortlog', '-sne', '--all', '--', targetPath];
|
|
309
|
-
const output = safeGitExec(args, projectRoot);
|
|
310
|
-
if (!output.trim()) {
|
|
311
|
-
return {
|
|
312
|
-
path: targetPath,
|
|
313
|
-
primaryOwner: null,
|
|
314
|
-
contributors: [],
|
|
315
|
-
commitCount: 0,
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
// Parse shortlog output
|
|
319
|
-
const contributors = [];
|
|
320
|
-
let totalCommits = 0;
|
|
321
|
-
for (const line of output.split('\n')) {
|
|
322
|
-
const parsed = parseShortlogLine(line);
|
|
323
|
-
if (parsed) {
|
|
324
|
-
contributors.push(parsed);
|
|
325
|
-
totalCommits += parsed.count;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
// Sort by commit count descending (use toSorted to avoid mutation)
|
|
329
|
-
const sorted = contributors.slice().sort((a, b) => b.count - a.count);
|
|
330
|
-
return {
|
|
331
|
-
path: targetPath,
|
|
332
|
-
primaryOwner: sorted[0]?.name ?? null,
|
|
333
|
-
contributors: sorted.map((c) => c.name),
|
|
334
|
-
commitCount: totalCommits,
|
|
335
|
-
};
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Extract ownership signals for specified paths.
|
|
339
|
-
* Note: paths are validated internally and not derived from user input.
|
|
340
|
-
*/
|
|
341
|
-
export function getOwnershipSignals(projectRoot, paths) {
|
|
342
|
-
return paths.map((path) => extractOwnershipForPath(projectRoot, path));
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Parse a single numstat line from git log output
|
|
346
|
-
*/
|
|
347
|
-
function parseNumstatLine(line) {
|
|
348
|
-
const match = NUMSTAT_LINE_REGEX.exec(line);
|
|
349
|
-
if (!match)
|
|
350
|
-
return null;
|
|
351
|
-
const additions = match[1];
|
|
352
|
-
const deletions = match[2];
|
|
353
|
-
const filePath = match[3];
|
|
354
|
-
if (!additions || !deletions || !filePath)
|
|
355
|
-
return null;
|
|
356
|
-
return {
|
|
357
|
-
additions: additions === '-' ? 0 : parseInt(additions, 10),
|
|
358
|
-
deletions: deletions === '-' ? 0 : parseInt(deletions, 10),
|
|
359
|
-
filePath,
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Check if a file matches UnsafeAny exclude pattern using simple glob matching
|
|
364
|
-
*/
|
|
365
|
-
function matchesExcludePattern(filePath, patterns) {
|
|
366
|
-
return patterns.some((pattern) => {
|
|
367
|
-
// Simple glob matching using a state machine approach
|
|
368
|
-
// Avoids control characters and dynamic regex construction
|
|
369
|
-
return globMatch(filePath, pattern);
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Simple glob matching without regex
|
|
374
|
-
* Supports * (match UnsafeAny) and ? (match single char)
|
|
375
|
-
*/
|
|
376
|
-
function globMatch(str, pattern) {
|
|
377
|
-
let si = 0; // string index
|
|
378
|
-
let pi = 0; // pattern index
|
|
379
|
-
let starIdx = -1;
|
|
380
|
-
let matchIdx = 0;
|
|
381
|
-
while (si < str.length) {
|
|
382
|
-
if (pi < pattern.length && (pattern[pi] === '?' || pattern[pi] === str[si])) {
|
|
383
|
-
// Character match or ? wildcard
|
|
384
|
-
si++;
|
|
385
|
-
pi++;
|
|
386
|
-
}
|
|
387
|
-
else if (pi < pattern.length && pattern[pi] === '*') {
|
|
388
|
-
// Star found, mark position
|
|
389
|
-
starIdx = pi;
|
|
390
|
-
matchIdx = si;
|
|
391
|
-
pi++;
|
|
392
|
-
}
|
|
393
|
-
else if (starIdx !== -1) {
|
|
394
|
-
// Mismatch after star, backtrack
|
|
395
|
-
pi = starIdx + 1;
|
|
396
|
-
matchIdx++;
|
|
397
|
-
si = matchIdx;
|
|
398
|
-
}
|
|
399
|
-
else {
|
|
400
|
-
// Mismatch without star
|
|
401
|
-
return false;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
// Skip trailing stars
|
|
405
|
-
while (pi < pattern.length && pattern[pi] === '*') {
|
|
406
|
-
pi++;
|
|
407
|
-
}
|
|
408
|
-
return pi === pattern.length;
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* Aggregate file statistics from numstat output
|
|
412
|
-
*/
|
|
413
|
-
function aggregateFileStats(output, excludePatterns) {
|
|
414
|
-
const fileStats = new Map();
|
|
415
|
-
for (const line of output.split('\n')) {
|
|
416
|
-
const trimmed = line.trim();
|
|
417
|
-
if (!trimmed)
|
|
418
|
-
continue;
|
|
419
|
-
const parsed = parseNumstatLine(trimmed);
|
|
420
|
-
if (!parsed)
|
|
421
|
-
continue;
|
|
422
|
-
// Skip excluded patterns
|
|
423
|
-
if (matchesExcludePattern(parsed.filePath, excludePatterns))
|
|
424
|
-
continue;
|
|
425
|
-
// Skip non-source files
|
|
426
|
-
if (!isSourceFile(parsed.filePath))
|
|
427
|
-
continue;
|
|
428
|
-
const existing = fileStats.get(parsed.filePath) ?? { additions: 0, deletions: 0, commits: 0 };
|
|
429
|
-
fileStats.set(parsed.filePath, {
|
|
430
|
-
additions: existing.additions + parsed.additions,
|
|
431
|
-
deletions: existing.deletions + parsed.deletions,
|
|
432
|
-
commits: existing.commits + 1,
|
|
433
|
-
});
|
|
434
|
-
}
|
|
435
|
-
return fileStats;
|
|
436
|
-
}
|
|
437
|
-
/**
|
|
438
|
-
* Extract churn metrics for the repository
|
|
439
|
-
*/
|
|
440
|
-
export function getChurnMetrics(projectRoot, options = {}) {
|
|
441
|
-
const maxCommits = options.maxCommits ?? GIT_DEFAULT_MAX_COMMITS;
|
|
442
|
-
const maxResults = options.maxResults ?? GIT_DEFAULT_MAX_RESULTS;
|
|
443
|
-
const excludePatterns = options.excludePatterns ?? DEFAULT_EXCLUDE_PATTERNS;
|
|
444
|
-
// Build git log args array
|
|
445
|
-
const args = ['log', `-n`, String(maxCommits)];
|
|
446
|
-
if (options.since) {
|
|
447
|
-
args.push(`--since=${options.since}`);
|
|
448
|
-
}
|
|
449
|
-
args.push('--numstat', '--pretty=format:');
|
|
450
|
-
let output;
|
|
451
|
-
try {
|
|
452
|
-
/// SECURITY: all args are constructed internally (no user input)
|
|
453
|
-
const cmd = ['git', ...args].join(' ');
|
|
454
|
-
output = execSync(cmd, {
|
|
455
|
-
cwd: projectRoot,
|
|
456
|
-
encoding: 'utf-8',
|
|
457
|
-
maxBuffer: GIT_MAX_BUFFER_BYTES,
|
|
458
|
-
timeout: GIT_COMMAND_TIMEOUT_MS,
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
catch {
|
|
462
|
-
return [];
|
|
463
|
-
}
|
|
464
|
-
if (!output.trim()) {
|
|
465
|
-
return [];
|
|
466
|
-
}
|
|
467
|
-
const fileStats = aggregateFileStats(output, excludePatterns);
|
|
468
|
-
// Convert to array with churn scores
|
|
469
|
-
const metrics = [];
|
|
470
|
-
for (const [filePath, stats] of fileStats.entries()) {
|
|
471
|
-
metrics.push({
|
|
472
|
-
filePath,
|
|
473
|
-
additions: stats.additions,
|
|
474
|
-
deletions: stats.deletions,
|
|
475
|
-
churnScore: stats.additions + stats.deletions,
|
|
476
|
-
commitCount: stats.commits,
|
|
477
|
-
});
|
|
478
|
-
}
|
|
479
|
-
// Sort by churn score descending and limit results (use toSorted to avoid mutation)
|
|
480
|
-
return metrics
|
|
481
|
-
.slice()
|
|
482
|
-
.sort((a, b) => b.churnScore - a.churnScore)
|
|
483
|
-
.slice(0, maxResults);
|
|
484
|
-
}
|
|
485
|
-
/**
|
|
486
|
-
* Build co-occurrence section for summary
|
|
487
|
-
*/
|
|
488
|
-
function buildCoOccurrenceSection(coOccurrences) {
|
|
489
|
-
const lines = ['## Co-occurrence Patterns', 'Files frequently changed together:'];
|
|
490
|
-
for (const co of coOccurrences.slice(0, GIT_SUMMARY_ITEM_LIMIT)) {
|
|
491
|
-
lines.push(`- ${co.file1} <-> ${co.file2} (${co.count} commits)`);
|
|
492
|
-
}
|
|
493
|
-
return lines.join('\n');
|
|
494
|
-
}
|
|
495
|
-
/**
|
|
496
|
-
* Build ownership section for summary
|
|
497
|
-
*/
|
|
498
|
-
function buildOwnershipSection(ownership) {
|
|
499
|
-
const lines = ['## Ownership Signals', 'Primary contributors by area:'];
|
|
500
|
-
for (const own of ownership.filter((o) => o.primaryOwner)) {
|
|
501
|
-
const ownerName = own.primaryOwner?.split(' <')[0] ?? 'unknown';
|
|
502
|
-
lines.push(`- ${own.path}: ${ownerName} (${own.commitCount} commits)`);
|
|
503
|
-
}
|
|
504
|
-
return lines.join('\n');
|
|
505
|
-
}
|
|
506
|
-
/**
|
|
507
|
-
* Build churn section for summary
|
|
508
|
-
*/
|
|
509
|
-
function buildChurnSection(churn) {
|
|
510
|
-
const lines = ['## Churn Hotspots', 'High-change files (potential complexity):'];
|
|
511
|
-
for (const ch of churn.slice(0, GIT_SUMMARY_ITEM_LIMIT)) {
|
|
512
|
-
lines.push(`- ${ch.filePath}: ${ch.churnScore} lines changed across ${ch.commitCount} commits`);
|
|
513
|
-
}
|
|
514
|
-
return lines.join('\n');
|
|
515
|
-
}
|
|
516
|
-
/**
|
|
517
|
-
* Truncate a section to fit within character limit
|
|
518
|
-
*/
|
|
519
|
-
function truncateSection(section, maxChars) {
|
|
520
|
-
if (section.length <= maxChars)
|
|
521
|
-
return section;
|
|
522
|
-
const lines = section.split('\n');
|
|
523
|
-
const header = lines.slice(0, SECTION_HEADER_LINE_COUNT).join('\n');
|
|
524
|
-
const items = lines.slice(SECTION_HEADER_LINE_COUNT);
|
|
525
|
-
const availableChars = maxChars - header.length - GIT_TRUNCATION_PADDING;
|
|
526
|
-
const truncatedItems = [];
|
|
527
|
-
let currentChars = 0;
|
|
528
|
-
for (const item of items) {
|
|
529
|
-
if (currentChars + item.length > availableChars)
|
|
530
|
-
break;
|
|
531
|
-
truncatedItems.push(item);
|
|
532
|
-
currentChars += item.length + 1;
|
|
533
|
-
}
|
|
534
|
-
return [header, ...truncatedItems, '(truncated)'].join('\n');
|
|
535
|
-
}
|
|
536
|
-
/**
|
|
537
|
-
* Summarize git context for LLM prompt inclusion
|
|
538
|
-
*
|
|
539
|
-
* Produces a token-efficient summary that fits within specified limits.
|
|
6
|
+
* Moved to `@lumenflow/host/git/git-context-extractor`. Shim preserves the
|
|
7
|
+
* legacy import path for in-repo consumers until the barrel slim in Layer 7.
|
|
540
8
|
*/
|
|
541
|
-
export
|
|
542
|
-
const maxTokens = options.maxTokens ?? GIT_DEFAULT_MAX_SUMMARY_TOKENS;
|
|
543
|
-
const maxChars = maxTokens * CHARS_PER_TOKEN;
|
|
544
|
-
// Handle limited history case
|
|
545
|
-
if (context.hasLimitedHistory) {
|
|
546
|
-
return context.error
|
|
547
|
-
? `Git history analysis limited: ${context.error}`
|
|
548
|
-
: 'Git history analysis limited due to sparse commit history.';
|
|
549
|
-
}
|
|
550
|
-
const sections = [];
|
|
551
|
-
if (context.coOccurrences.length > 0) {
|
|
552
|
-
sections.push(buildCoOccurrenceSection(context.coOccurrences));
|
|
553
|
-
}
|
|
554
|
-
if (context.ownership.length > 0) {
|
|
555
|
-
sections.push(buildOwnershipSection(context.ownership));
|
|
556
|
-
}
|
|
557
|
-
if (context.churn.length > 0) {
|
|
558
|
-
sections.push(buildChurnSection(context.churn));
|
|
559
|
-
}
|
|
560
|
-
let result = sections.join('\n\n');
|
|
561
|
-
// Truncate if needed
|
|
562
|
-
if (result.length > maxChars && sections.length > 0) {
|
|
563
|
-
const charsPerSection = Math.floor(maxChars / sections.length) - GIT_TRUNCATION_PADDING;
|
|
564
|
-
const truncatedSections = sections.map((s) => truncateSection(s, charsPerSection));
|
|
565
|
-
result = truncatedSections.join('\n\n');
|
|
566
|
-
}
|
|
567
|
-
return result || 'Git history analysis limited due to sparse commit history.';
|
|
568
|
-
}
|
|
9
|
+
export * from '@lumenflow/host/git/git-context-extractor';
|
|
569
10
|
//# sourceMappingURL=git-context-extractor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-context-extractor.js","sourceRoot":"","sources":["../src/git-context-extractor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-context-extractor.js","sourceRoot":"","sources":["../src/git-context-extractor.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;GAKG;AAEH,cAAc,2CAA2C,CAAC"}
|
|
@@ -1,34 +1,9 @@
|
|
|
1
1
|
/// <reference path="./types.d.ts" />
|
|
2
2
|
/**
|
|
3
|
-
* Git Staged
|
|
3
|
+
* Git Staged Validator — Re-export shim (ADR-012, INIT-058 Layer 4b, WU-2682).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Used in --no-auto mode to enforce that required files are staged before commit.
|
|
9
|
-
*
|
|
10
|
-
* @module git-staged-validator
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Ensure all required paths are staged in git index
|
|
14
|
-
*
|
|
15
|
-
* Validates that specified files/directories are staged for commit.
|
|
16
|
-
* Supports exact path matching and directory prefix matching.
|
|
17
|
-
*
|
|
18
|
-
* @param {Array<string|null|undefined>} paths - Paths to check (null/undefined values filtered out)
|
|
19
|
-
* @throws {Error} If UnsafeAny required paths are not staged
|
|
20
|
-
* @returns {Array<string>} List of all staged files
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* // All files staged - success
|
|
24
|
-
* ensureStaged(['<configured-doc-file>', 'tools/script.js']);
|
|
25
|
-
*
|
|
26
|
-
* // Directory prefix - matches all files under directory
|
|
27
|
-
* ensureStaged(['<configured-doc-root>/']);
|
|
28
|
-
*
|
|
29
|
-
* // Missing files - throws error
|
|
30
|
-
* ensureStaged(['<configured-doc-file-1>', '<configured-doc-file-2>']);
|
|
31
|
-
* // Error: Stage updates for: <configured-doc-file-2>
|
|
5
|
+
* Moved to `@lumenflow/host/git/git-staged-validator`. Shim preserves the
|
|
6
|
+
* legacy import path for in-repo consumers until the barrel slim in Layer 7.
|
|
32
7
|
*/
|
|
33
|
-
export
|
|
8
|
+
export * from '@lumenflow/host/git/git-staged-validator';
|
|
34
9
|
//# sourceMappingURL=git-staged-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-staged-validator.d.ts","sourceRoot":"","sources":["../src/git-staged-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git-staged-validator.d.ts","sourceRoot":"","sources":["../src/git-staged-validator.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,cAAc,0CAA0C,CAAC"}
|