@gitgov/core 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -135
- package/dist/src/index.d.ts +5475 -21
- package/dist/src/index.js +7873 -22
- package/dist/src/index.js.map +1 -1
- package/package.json +19 -7
- package/dist/scripts/compile-json-to-types.d.ts +0 -11
- package/dist/scripts/compile-json-to-types.d.ts.map +0 -1
- package/dist/scripts/compile-json-to-types.js +0 -129
- package/dist/scripts/compile-json-to-types.js.map +0 -1
- package/dist/scripts/diagnose-duplicates.d.ts +0 -7
- package/dist/scripts/diagnose-duplicates.d.ts.map +0 -1
- package/dist/scripts/diagnose-duplicates.js +0 -72
- package/dist/scripts/diagnose-duplicates.js.map +0 -1
- package/dist/scripts/generate-indexes.d.ts +0 -22
- package/dist/scripts/generate-indexes.d.ts.map +0 -1
- package/dist/scripts/generate-indexes.js +0 -168
- package/dist/scripts/generate-indexes.js.map +0 -1
- package/dist/scripts/sync-schemas.d.ts +0 -10
- package/dist/scripts/sync-schemas.d.ts.map +0 -1
- package/dist/scripts/sync-schemas.js +0 -84
- package/dist/scripts/sync-schemas.js.map +0 -1
- package/dist/scripts/sync-workflow-configs.d.ts +0 -11
- package/dist/scripts/sync-workflow-configs.d.ts.map +0 -1
- package/dist/scripts/sync-workflow-configs.js +0 -61
- package/dist/scripts/sync-workflow-configs.js.map +0 -1
- package/dist/scripts/update-diagram.d.ts +0 -7
- package/dist/scripts/update-diagram.d.ts.map +0 -1
- package/dist/scripts/update-diagram.js +0 -47
- package/dist/scripts/update-diagram.js.map +0 -1
- package/dist/scripts/validate-schemas.d.ts +0 -18
- package/dist/scripts/validate-schemas.d.ts.map +0 -1
- package/dist/scripts/validate-schemas.js +0 -313
- package/dist/scripts/validate-schemas.js.map +0 -1
- package/dist/src/adapters/backlog_adapter/backlog_adapter.integration.test.d.ts +0 -2
- package/dist/src/adapters/backlog_adapter/backlog_adapter.integration.test.d.ts.map +0 -1
- package/dist/src/adapters/backlog_adapter/backlog_adapter.integration.test.js +0 -507
- package/dist/src/adapters/backlog_adapter/backlog_adapter.integration.test.js.map +0 -1
- package/dist/src/adapters/backlog_adapter/backlog_adapter.test.d.ts +0 -2
- package/dist/src/adapters/backlog_adapter/backlog_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/backlog_adapter/backlog_adapter.test.js +0 -1282
- package/dist/src/adapters/backlog_adapter/backlog_adapter.test.js.map +0 -1
- package/dist/src/adapters/backlog_adapter/backlog_adapter_e2e.test.d.ts +0 -10
- package/dist/src/adapters/backlog_adapter/backlog_adapter_e2e.test.d.ts.map +0 -1
- package/dist/src/adapters/backlog_adapter/backlog_adapter_e2e.test.js +0 -144
- package/dist/src/adapters/backlog_adapter/backlog_adapter_e2e.test.js.map +0 -1
- package/dist/src/adapters/backlog_adapter/index.d.ts +0 -213
- package/dist/src/adapters/backlog_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/backlog_adapter/index.js +0 -924
- package/dist/src/adapters/backlog_adapter/index.js.map +0 -1
- package/dist/src/adapters/changelog_adapter/changelog_adapter.test.d.ts +0 -2
- package/dist/src/adapters/changelog_adapter/changelog_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/changelog_adapter/changelog_adapter.test.js +0 -505
- package/dist/src/adapters/changelog_adapter/changelog_adapter.test.js.map +0 -1
- package/dist/src/adapters/changelog_adapter/index.d.ts +0 -101
- package/dist/src/adapters/changelog_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/changelog_adapter/index.js +0 -197
- package/dist/src/adapters/changelog_adapter/index.js.map +0 -1
- package/dist/src/adapters/execution_adapter/execution_adapter.test.d.ts +0 -2
- package/dist/src/adapters/execution_adapter/execution_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/execution_adapter/execution_adapter.test.js +0 -266
- package/dist/src/adapters/execution_adapter/execution_adapter.test.js.map +0 -1
- package/dist/src/adapters/execution_adapter/index.d.ts +0 -90
- package/dist/src/adapters/execution_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/execution_adapter/index.js +0 -150
- package/dist/src/adapters/execution_adapter/index.js.map +0 -1
- package/dist/src/adapters/feedback_adapter/feedback_adapter.test.d.ts +0 -2
- package/dist/src/adapters/feedback_adapter/feedback_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/feedback_adapter/feedback_adapter.test.js +0 -256
- package/dist/src/adapters/feedback_adapter/feedback_adapter.test.js.map +0 -1
- package/dist/src/adapters/feedback_adapter/index.d.ts +0 -95
- package/dist/src/adapters/feedback_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/feedback_adapter/index.js +0 -192
- package/dist/src/adapters/feedback_adapter/index.js.map +0 -1
- package/dist/src/adapters/identity_adapter/identity_adapter.test.d.ts +0 -2
- package/dist/src/adapters/identity_adapter/identity_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/identity_adapter/identity_adapter.test.js +0 -624
- package/dist/src/adapters/identity_adapter/identity_adapter.test.js.map +0 -1
- package/dist/src/adapters/identity_adapter/index.d.ts +0 -82
- package/dist/src/adapters/identity_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/identity_adapter/index.js +0 -336
- package/dist/src/adapters/identity_adapter/index.js.map +0 -1
- package/dist/src/adapters/index.d.ts +0 -10
- package/dist/src/adapters/index.d.ts.map +0 -1
- package/dist/src/adapters/index.js +0 -10
- package/dist/src/adapters/index.js.map +0 -1
- package/dist/src/adapters/indexer_adapter/index.d.ts +0 -214
- package/dist/src/adapters/indexer_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/indexer_adapter/index.js +0 -643
- package/dist/src/adapters/indexer_adapter/index.js.map +0 -1
- package/dist/src/adapters/indexer_adapter/indexer_adapter.test.d.ts +0 -2
- package/dist/src/adapters/indexer_adapter/indexer_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/indexer_adapter/indexer_adapter.test.js +0 -409
- package/dist/src/adapters/indexer_adapter/indexer_adapter.test.js.map +0 -1
- package/dist/src/adapters/metrics_adapter/index.d.ts +0 -189
- package/dist/src/adapters/metrics_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/metrics_adapter/index.js +0 -592
- package/dist/src/adapters/metrics_adapter/index.js.map +0 -1
- package/dist/src/adapters/metrics_adapter/metrics_adapter.test.d.ts +0 -2
- package/dist/src/adapters/metrics_adapter/metrics_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/metrics_adapter/metrics_adapter.test.js +0 -558
- package/dist/src/adapters/metrics_adapter/metrics_adapter.test.js.map +0 -1
- package/dist/src/adapters/project_adapter/index.d.ts +0 -164
- package/dist/src/adapters/project_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/project_adapter/index.js +0 -445
- package/dist/src/adapters/project_adapter/index.js.map +0 -1
- package/dist/src/adapters/project_adapter/project_adapter.test.d.ts +0 -2
- package/dist/src/adapters/project_adapter/project_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/project_adapter/project_adapter.test.js +0 -627
- package/dist/src/adapters/project_adapter/project_adapter.test.js.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/index.d.ts +0 -75
- package/dist/src/adapters/workflow_methodology_adapter/index.d.ts.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/index.js +0 -205
- package/dist/src/adapters/workflow_methodology_adapter/index.js.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter.test.d.ts +0 -2
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter.test.d.ts.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter.test.js +0 -463
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter.test.js.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_integration.test.d.ts +0 -2
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_integration.test.d.ts.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_integration.test.js +0 -287
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_integration.test.js.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_scrum_integration.test.d.ts +0 -2
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_scrum_integration.test.d.ts.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_scrum_integration.test.js +0 -278
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_scrum_integration.test.js.map +0 -1
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_default.json +0 -188
- package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_scrum.json +0 -284
- package/dist/src/config_manager/config_manager.test.d.ts +0 -2
- package/dist/src/config_manager/config_manager.test.d.ts.map +0 -1
- package/dist/src/config_manager/config_manager.test.js +0 -321
- package/dist/src/config_manager/config_manager.test.js.map +0 -1
- package/dist/src/config_manager/index.d.ts +0 -107
- package/dist/src/config_manager/index.d.ts.map +0 -1
- package/dist/src/config_manager/index.js +0 -192
- package/dist/src/config_manager/index.js.map +0 -1
- package/dist/src/crypto/checksum.d.ts +0 -6
- package/dist/src/crypto/checksum.d.ts.map +0 -1
- package/dist/src/crypto/checksum.js +0 -38
- package/dist/src/crypto/checksum.js.map +0 -1
- package/dist/src/crypto/checksum.test.d.ts +0 -2
- package/dist/src/crypto/checksum.test.d.ts.map +0 -1
- package/dist/src/crypto/checksum.test.js +0 -167
- package/dist/src/crypto/checksum.test.js.map +0 -1
- package/dist/src/crypto/index.d.ts +0 -3
- package/dist/src/crypto/index.d.ts.map +0 -1
- package/dist/src/crypto/index.js +0 -3
- package/dist/src/crypto/index.js.map +0 -1
- package/dist/src/crypto/signatures.d.ts +0 -24
- package/dist/src/crypto/signatures.d.ts.map +0 -1
- package/dist/src/crypto/signatures.js +0 -67
- package/dist/src/crypto/signatures.js.map +0 -1
- package/dist/src/crypto/signatures.test.d.ts +0 -2
- package/dist/src/crypto/signatures.test.d.ts.map +0 -1
- package/dist/src/crypto/signatures.test.js +0 -378
- package/dist/src/crypto/signatures.test.js.map +0 -1
- package/dist/src/diagram_generator/diagram_generator.d.ts +0 -76
- package/dist/src/diagram_generator/diagram_generator.d.ts.map +0 -1
- package/dist/src/diagram_generator/diagram_generator.js +0 -233
- package/dist/src/diagram_generator/diagram_generator.js.map +0 -1
- package/dist/src/diagram_generator/graph_validator.d.ts +0 -19
- package/dist/src/diagram_generator/graph_validator.d.ts.map +0 -1
- package/dist/src/diagram_generator/graph_validator.js +0 -98
- package/dist/src/diagram_generator/graph_validator.js.map +0 -1
- package/dist/src/diagram_generator/index.d.ts +0 -4
- package/dist/src/diagram_generator/index.d.ts.map +0 -1
- package/dist/src/diagram_generator/index.js +0 -4
- package/dist/src/diagram_generator/index.js.map +0 -1
- package/dist/src/diagram_generator/mermaid_renderer.d.ts +0 -82
- package/dist/src/diagram_generator/mermaid_renderer.d.ts.map +0 -1
- package/dist/src/diagram_generator/mermaid_renderer.js +0 -306
- package/dist/src/diagram_generator/mermaid_renderer.js.map +0 -1
- package/dist/src/diagram_generator/relationship_analyzer.d.ts +0 -116
- package/dist/src/diagram_generator/relationship_analyzer.d.ts.map +0 -1
- package/dist/src/diagram_generator/relationship_analyzer.js +0 -381
- package/dist/src/diagram_generator/relationship_analyzer.js.map +0 -1
- package/dist/src/event_bus/event_bus.d.ts +0 -110
- package/dist/src/event_bus/event_bus.d.ts.map +0 -1
- package/dist/src/event_bus/event_bus.js +0 -161
- package/dist/src/event_bus/event_bus.js.map +0 -1
- package/dist/src/event_bus/event_bus.test.d.ts +0 -2
- package/dist/src/event_bus/event_bus.test.d.ts.map +0 -1
- package/dist/src/event_bus/event_bus.test.js +0 -332
- package/dist/src/event_bus/event_bus.test.js.map +0 -1
- package/dist/src/event_bus/event_bus_integration.test.d.ts +0 -2
- package/dist/src/event_bus/event_bus_integration.test.d.ts.map +0 -1
- package/dist/src/event_bus/event_bus_integration.test.js +0 -474
- package/dist/src/event_bus/event_bus_integration.test.js.map +0 -1
- package/dist/src/event_bus/index.d.ts +0 -3
- package/dist/src/event_bus/index.d.ts.map +0 -1
- package/dist/src/event_bus/index.js +0 -3
- package/dist/src/event_bus/index.js.map +0 -1
- package/dist/src/event_bus/types.d.ts +0 -203
- package/dist/src/event_bus/types.d.ts.map +0 -1
- package/dist/src/event_bus/types.js +0 -5
- package/dist/src/event_bus/types.js.map +0 -1
- package/dist/src/factories/actor_factory.d.ts +0 -6
- package/dist/src/factories/actor_factory.d.ts.map +0 -1
- package/dist/src/factories/actor_factory.js +0 -25
- package/dist/src/factories/actor_factory.js.map +0 -1
- package/dist/src/factories/actor_factory.test.d.ts +0 -2
- package/dist/src/factories/actor_factory.test.d.ts.map +0 -1
- package/dist/src/factories/actor_factory.test.js +0 -169
- package/dist/src/factories/actor_factory.test.js.map +0 -1
- package/dist/src/factories/agent_factory.d.ts +0 -6
- package/dist/src/factories/agent_factory.d.ts.map +0 -1
- package/dist/src/factories/agent_factory.js +0 -25
- package/dist/src/factories/agent_factory.js.map +0 -1
- package/dist/src/factories/agent_factory.test.d.ts +0 -2
- package/dist/src/factories/agent_factory.test.d.ts.map +0 -1
- package/dist/src/factories/agent_factory.test.js +0 -199
- package/dist/src/factories/agent_factory.test.js.map +0 -1
- package/dist/src/factories/changelog_factory.d.ts +0 -9
- package/dist/src/factories/changelog_factory.d.ts.map +0 -1
- package/dist/src/factories/changelog_factory.js +0 -46
- package/dist/src/factories/changelog_factory.js.map +0 -1
- package/dist/src/factories/changelog_factory.test.d.ts +0 -2
- package/dist/src/factories/changelog_factory.test.d.ts.map +0 -1
- package/dist/src/factories/changelog_factory.test.js +0 -368
- package/dist/src/factories/changelog_factory.test.js.map +0 -1
- package/dist/src/factories/cycle_factory.d.ts +0 -6
- package/dist/src/factories/cycle_factory.d.ts.map +0 -1
- package/dist/src/factories/cycle_factory.js +0 -28
- package/dist/src/factories/cycle_factory.js.map +0 -1
- package/dist/src/factories/cycle_factory.test.d.ts +0 -2
- package/dist/src/factories/cycle_factory.test.d.ts.map +0 -1
- package/dist/src/factories/cycle_factory.test.js +0 -175
- package/dist/src/factories/cycle_factory.test.js.map +0 -1
- package/dist/src/factories/execution_factory.d.ts +0 -9
- package/dist/src/factories/execution_factory.d.ts.map +0 -1
- package/dist/src/factories/execution_factory.js +0 -29
- package/dist/src/factories/execution_factory.js.map +0 -1
- package/dist/src/factories/execution_factory.test.d.ts +0 -2
- package/dist/src/factories/execution_factory.test.d.ts.map +0 -1
- package/dist/src/factories/execution_factory.test.js +0 -207
- package/dist/src/factories/execution_factory.test.js.map +0 -1
- package/dist/src/factories/feedback_factory.d.ts +0 -9
- package/dist/src/factories/feedback_factory.d.ts.map +0 -1
- package/dist/src/factories/feedback_factory.js +0 -30
- package/dist/src/factories/feedback_factory.js.map +0 -1
- package/dist/src/factories/feedback_factory.test.d.ts +0 -2
- package/dist/src/factories/feedback_factory.test.d.ts.map +0 -1
- package/dist/src/factories/feedback_factory.test.js +0 -256
- package/dist/src/factories/feedback_factory.test.js.map +0 -1
- package/dist/src/factories/index.d.ts +0 -9
- package/dist/src/factories/index.d.ts.map +0 -1
- package/dist/src/factories/index.js +0 -9
- package/dist/src/factories/index.js.map +0 -1
- package/dist/src/factories/task_factory.d.ts +0 -6
- package/dist/src/factories/task_factory.d.ts.map +0 -1
- package/dist/src/factories/task_factory.js +0 -30
- package/dist/src/factories/task_factory.js.map +0 -1
- package/dist/src/factories/task_factory.test.d.ts +0 -2
- package/dist/src/factories/task_factory.test.d.ts.map +0 -1
- package/dist/src/factories/task_factory.test.js +0 -197
- package/dist/src/factories/task_factory.test.js.map +0 -1
- package/dist/src/factories/workflow_methodology_factory.d.ts +0 -11
- package/dist/src/factories/workflow_methodology_factory.d.ts.map +0 -1
- package/dist/src/factories/workflow_methodology_factory.js +0 -173
- package/dist/src/factories/workflow_methodology_factory.js.map +0 -1
- package/dist/src/factories/workflow_methodology_factory.test.d.ts +0 -2
- package/dist/src/factories/workflow_methodology_factory.test.d.ts.map +0 -1
- package/dist/src/factories/workflow_methodology_factory.test.js +0 -244
- package/dist/src/factories/workflow_methodology_factory.test.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/integration/cycles_tasks_integration.test.d.ts +0 -2
- package/dist/src/integration/cycles_tasks_integration.test.d.ts.map +0 -1
- package/dist/src/integration/cycles_tasks_integration.test.js +0 -258
- package/dist/src/integration/cycles_tasks_integration.test.js.map +0 -1
- package/dist/src/integration/schema_integration.test.d.ts +0 -8
- package/dist/src/integration/schema_integration.test.d.ts.map +0 -1
- package/dist/src/integration/schema_integration.test.js +0 -279
- package/dist/src/integration/schema_integration.test.js.map +0 -1
- package/dist/src/logger/index.d.ts +0 -2
- package/dist/src/logger/index.d.ts.map +0 -1
- package/dist/src/logger/index.js +0 -2
- package/dist/src/logger/index.js.map +0 -1
- package/dist/src/logger/logger.d.ts +0 -10
- package/dist/src/logger/logger.d.ts.map +0 -1
- package/dist/src/logger/logger.js +0 -48
- package/dist/src/logger/logger.js.map +0 -1
- package/dist/src/schemas/errors.d.ts +0 -28
- package/dist/src/schemas/errors.d.ts.map +0 -1
- package/dist/src/schemas/errors.js +0 -31
- package/dist/src/schemas/errors.js.map +0 -1
- package/dist/src/schemas/generated/actor_record_schema.json +0 -91
- package/dist/src/schemas/generated/agent_record_schema.json +0 -142
- package/dist/src/schemas/generated/changelog_record_schema.json +0 -227
- package/dist/src/schemas/generated/cycle_record_schema.json +0 -80
- package/dist/src/schemas/generated/embedded_metadata_schema.json +0 -318
- package/dist/src/schemas/generated/execution_record_schema.json +0 -89
- package/dist/src/schemas/generated/feedback_record_schema.json +0 -83
- package/dist/src/schemas/generated/index.d.ts +0 -2221
- package/dist/src/schemas/generated/index.d.ts.map +0 -1
- package/dist/src/schemas/generated/index.js +0 -48
- package/dist/src/schemas/generated/index.js.map +0 -1
- package/dist/src/schemas/generated/task_record_schema.json +0 -103
- package/dist/src/schemas/generated/workflow_methodology_record_schema.json +0 -393
- package/dist/src/schemas/index.d.ts +0 -4
- package/dist/src/schemas/index.d.ts.map +0 -1
- package/dist/src/schemas/index.js +0 -4
- package/dist/src/schemas/index.js.map +0 -1
- package/dist/src/schemas/schema_cache.d.ts +0 -39
- package/dist/src/schemas/schema_cache.d.ts.map +0 -1
- package/dist/src/schemas/schema_cache.js +0 -109
- package/dist/src/schemas/schema_cache.js.map +0 -1
- package/dist/src/schemas/schema_cache.test.d.ts +0 -2
- package/dist/src/schemas/schema_cache.test.d.ts.map +0 -1
- package/dist/src/schemas/schema_cache.test.js +0 -163
- package/dist/src/schemas/schema_cache.test.js.map +0 -1
- package/dist/src/store/index.d.ts +0 -2
- package/dist/src/store/index.d.ts.map +0 -1
- package/dist/src/store/index.js +0 -2
- package/dist/src/store/index.js.map +0 -1
- package/dist/src/store/record_store.d.ts +0 -30
- package/dist/src/store/record_store.d.ts.map +0 -1
- package/dist/src/store/record_store.js +0 -83
- package/dist/src/store/record_store.js.map +0 -1
- package/dist/src/store/record_store.test.d.ts +0 -2
- package/dist/src/store/record_store.test.d.ts.map +0 -1
- package/dist/src/store/record_store.test.js +0 -646
- package/dist/src/store/record_store.test.js.map +0 -1
- package/dist/src/types/common.types.d.ts +0 -43
- package/dist/src/types/common.types.d.ts.map +0 -1
- package/dist/src/types/common.types.js +0 -13
- package/dist/src/types/common.types.js.map +0 -1
- package/dist/src/types/embedded.types.d.ts +0 -17
- package/dist/src/types/embedded.types.d.ts.map +0 -1
- package/dist/src/types/embedded.types.js +0 -2
- package/dist/src/types/embedded.types.js.map +0 -1
- package/dist/src/types/generated/actor_record.d.ts +0 -45
- package/dist/src/types/generated/actor_record.d.ts.map +0 -1
- package/dist/src/types/generated/actor_record.js +0 -7
- package/dist/src/types/generated/actor_record.js.map +0 -1
- package/dist/src/types/generated/agent_record.d.ts +0 -40
- package/dist/src/types/generated/agent_record.d.ts.map +0 -1
- package/dist/src/types/generated/agent_record.js +0 -7
- package/dist/src/types/generated/agent_record.js.map +0 -1
- package/dist/src/types/generated/changelog_record.d.ts +0 -100
- package/dist/src/types/generated/changelog_record.d.ts.map +0 -1
- package/dist/src/types/generated/changelog_record.js +0 -7
- package/dist/src/types/generated/changelog_record.js.map +0 -1
- package/dist/src/types/generated/cycle_record.d.ts +0 -36
- package/dist/src/types/generated/cycle_record.d.ts.map +0 -1
- package/dist/src/types/generated/cycle_record.js +0 -7
- package/dist/src/types/generated/cycle_record.js.map +0 -1
- package/dist/src/types/generated/embedded_metadata.d.ts +0 -94
- package/dist/src/types/generated/embedded_metadata.d.ts.map +0 -1
- package/dist/src/types/generated/embedded_metadata.js +0 -7
- package/dist/src/types/generated/embedded_metadata.js.map +0 -1
- package/dist/src/types/generated/execution_record.d.ts +0 -39
- package/dist/src/types/generated/execution_record.d.ts.map +0 -1
- package/dist/src/types/generated/execution_record.js +0 -7
- package/dist/src/types/generated/execution_record.js.map +0 -1
- package/dist/src/types/generated/feedback_record.d.ts +0 -43
- package/dist/src/types/generated/feedback_record.d.ts.map +0 -1
- package/dist/src/types/generated/feedback_record.js +0 -7
- package/dist/src/types/generated/feedback_record.js.map +0 -1
- package/dist/src/types/generated/index.d.ts +0 -15
- package/dist/src/types/generated/index.d.ts.map +0 -1
- package/dist/src/types/generated/index.js +0 -15
- package/dist/src/types/generated/index.js.map +0 -1
- package/dist/src/types/generated/task_record.d.ts +0 -47
- package/dist/src/types/generated/task_record.d.ts.map +0 -1
- package/dist/src/types/generated/task_record.js +0 -7
- package/dist/src/types/generated/task_record.js.map +0 -1
- package/dist/src/types/generated/workflow_methodology_record.d.ts +0 -211
- package/dist/src/types/generated/workflow_methodology_record.d.ts.map +0 -1
- package/dist/src/types/generated/workflow_methodology_record.js +0 -7
- package/dist/src/types/generated/workflow_methodology_record.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -4
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -4
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/utils/id_generator.d.ts +0 -44
- package/dist/src/utils/id_generator.d.ts.map +0 -1
- package/dist/src/utils/id_generator.js +0 -107
- package/dist/src/utils/id_generator.js.map +0 -1
- package/dist/src/utils/id_generator.test.d.ts +0 -2
- package/dist/src/utils/id_generator.test.d.ts.map +0 -1
- package/dist/src/utils/id_generator.test.js +0 -100
- package/dist/src/utils/id_generator.test.js.map +0 -1
- package/dist/src/utils/index.d.ts +0 -2
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js +0 -3
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/validation/actor_validator.d.ts +0 -21
- package/dist/src/validation/actor_validator.d.ts.map +0 -1
- package/dist/src/validation/actor_validator.js +0 -48
- package/dist/src/validation/actor_validator.js.map +0 -1
- package/dist/src/validation/actor_validator.test.d.ts +0 -2
- package/dist/src/validation/actor_validator.test.d.ts.map +0 -1
- package/dist/src/validation/actor_validator.test.js +0 -83
- package/dist/src/validation/actor_validator.test.js.map +0 -1
- package/dist/src/validation/agent_validator.d.ts +0 -30
- package/dist/src/validation/agent_validator.d.ts.map +0 -1
- package/dist/src/validation/agent_validator.js +0 -66
- package/dist/src/validation/agent_validator.js.map +0 -1
- package/dist/src/validation/agent_validator.test.d.ts +0 -2
- package/dist/src/validation/agent_validator.test.d.ts.map +0 -1
- package/dist/src/validation/agent_validator.test.js +0 -73
- package/dist/src/validation/agent_validator.test.js.map +0 -1
- package/dist/src/validation/changelog_validator.d.ts +0 -23
- package/dist/src/validation/changelog_validator.d.ts.map +0 -1
- package/dist/src/validation/changelog_validator.js +0 -58
- package/dist/src/validation/changelog_validator.js.map +0 -1
- package/dist/src/validation/changelog_validator.test.d.ts +0 -2
- package/dist/src/validation/changelog_validator.test.d.ts.map +0 -1
- package/dist/src/validation/changelog_validator.test.js +0 -401
- package/dist/src/validation/changelog_validator.test.js.map +0 -1
- package/dist/src/validation/common.d.ts +0 -10
- package/dist/src/validation/common.d.ts.map +0 -1
- package/dist/src/validation/common.js +0 -12
- package/dist/src/validation/common.js.map +0 -1
- package/dist/src/validation/cycle_validator.d.ts +0 -24
- package/dist/src/validation/cycle_validator.d.ts.map +0 -1
- package/dist/src/validation/cycle_validator.js +0 -51
- package/dist/src/validation/cycle_validator.js.map +0 -1
- package/dist/src/validation/cycle_validator.test.d.ts +0 -2
- package/dist/src/validation/cycle_validator.test.d.ts.map +0 -1
- package/dist/src/validation/cycle_validator.test.js +0 -182
- package/dist/src/validation/cycle_validator.test.js.map +0 -1
- package/dist/src/validation/embedded_metadata_validator.d.ts +0 -26
- package/dist/src/validation/embedded_metadata_validator.d.ts.map +0 -1
- package/dist/src/validation/embedded_metadata_validator.js +0 -122
- package/dist/src/validation/embedded_metadata_validator.js.map +0 -1
- package/dist/src/validation/embedded_metadata_validator.test.d.ts +0 -2
- package/dist/src/validation/embedded_metadata_validator.test.d.ts.map +0 -1
- package/dist/src/validation/embedded_metadata_validator.test.js +0 -316
- package/dist/src/validation/embedded_metadata_validator.test.js.map +0 -1
- package/dist/src/validation/errors.d.ts +0 -67
- package/dist/src/validation/errors.d.ts.map +0 -1
- package/dist/src/validation/errors.js +0 -83
- package/dist/src/validation/errors.js.map +0 -1
- package/dist/src/validation/execution_validator.d.ts +0 -23
- package/dist/src/validation/execution_validator.d.ts.map +0 -1
- package/dist/src/validation/execution_validator.js +0 -58
- package/dist/src/validation/execution_validator.js.map +0 -1
- package/dist/src/validation/execution_validator.test.d.ts +0 -2
- package/dist/src/validation/execution_validator.test.d.ts.map +0 -1
- package/dist/src/validation/execution_validator.test.js +0 -167
- package/dist/src/validation/execution_validator.test.js.map +0 -1
- package/dist/src/validation/feedback_validator.d.ts +0 -23
- package/dist/src/validation/feedback_validator.d.ts.map +0 -1
- package/dist/src/validation/feedback_validator.js +0 -58
- package/dist/src/validation/feedback_validator.js.map +0 -1
- package/dist/src/validation/feedback_validator.test.d.ts +0 -2
- package/dist/src/validation/feedback_validator.test.d.ts.map +0 -1
- package/dist/src/validation/feedback_validator.test.js +0 -131
- package/dist/src/validation/feedback_validator.test.js.map +0 -1
- package/dist/src/validation/index.d.ts +0 -11
- package/dist/src/validation/index.d.ts.map +0 -1
- package/dist/src/validation/index.js +0 -10
- package/dist/src/validation/index.js.map +0 -1
- package/dist/src/validation/task_validator.d.ts +0 -24
- package/dist/src/validation/task_validator.d.ts.map +0 -1
- package/dist/src/validation/task_validator.js +0 -50
- package/dist/src/validation/task_validator.js.map +0 -1
- package/dist/src/validation/task_validator.test.d.ts +0 -2
- package/dist/src/validation/task_validator.test.d.ts.map +0 -1
- package/dist/src/validation/task_validator.test.js +0 -185
- package/dist/src/validation/task_validator.test.js.map +0 -1
- package/dist/src/validation/workflow_methodology_validator.d.ts +0 -32
- package/dist/src/validation/workflow_methodology_validator.d.ts.map +0 -1
- package/dist/src/validation/workflow_methodology_validator.js +0 -91
- package/dist/src/validation/workflow_methodology_validator.js.map +0 -1
- package/dist/src/validation/workflow_methodology_validator.test.d.ts +0 -2
- package/dist/src/validation/workflow_methodology_validator.test.d.ts.map +0 -1
- package/dist/src/validation/workflow_methodology_validator.test.js +0 -229
- package/dist/src/validation/workflow_methodology_validator.test.js.map +0 -1
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { ConfigManager } from './index';
|
|
4
|
-
// Mock filesystem operations
|
|
5
|
-
jest.mock('fs', () => ({
|
|
6
|
-
promises: {
|
|
7
|
-
readFile: jest.fn(),
|
|
8
|
-
writeFile: jest.fn(),
|
|
9
|
-
},
|
|
10
|
-
existsSync: jest.fn(),
|
|
11
|
-
}));
|
|
12
|
-
const mockedFs = jest.mocked(fs);
|
|
13
|
-
const mockedExistsSync = jest.mocked(require('fs').existsSync);
|
|
14
|
-
describe('ConfigManager', () => {
|
|
15
|
-
let configManager;
|
|
16
|
-
let tempDir;
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
jest.clearAllMocks();
|
|
19
|
-
tempDir = '/test/project';
|
|
20
|
-
configManager = new ConfigManager(tempDir);
|
|
21
|
-
// Reset project root cache
|
|
22
|
-
global.projectRoot = null;
|
|
23
|
-
});
|
|
24
|
-
// --- Configuration Methods (EARS-1 to EARS-6) ---
|
|
25
|
-
describe('loadConfig', () => {
|
|
26
|
-
it('[EARS-1] WHEN loadConfig is invoked with valid config.json file, THE SYSTEM SHALL return complete GitGovConfig object', async () => {
|
|
27
|
-
const mockConfig = {
|
|
28
|
-
protocolVersion: '1.0',
|
|
29
|
-
projectId: 'test-project-123',
|
|
30
|
-
projectName: 'Test Project',
|
|
31
|
-
rootCycle: 'root-cycle-456',
|
|
32
|
-
blueprints: { root: './blueprints' },
|
|
33
|
-
state: { branch: 'gitgov-state' },
|
|
34
|
-
cloud: { projectId: 'cloud-123', providerMappings: { github: 'repo-456' } }
|
|
35
|
-
};
|
|
36
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(mockConfig));
|
|
37
|
-
const result = await configManager.loadConfig();
|
|
38
|
-
expect(result).toEqual(mockConfig);
|
|
39
|
-
expect(mockedFs.readFile).toHaveBeenCalledWith(path.join(tempDir, '.gitgov', 'config.json'), 'utf-8');
|
|
40
|
-
});
|
|
41
|
-
it('[EARS-2] WHEN loadConfig is invoked with non-existent config.json file, THE SYSTEM SHALL return null without throwing error', async () => {
|
|
42
|
-
mockedFs.readFile.mockRejectedValue(new Error('ENOENT: no such file or directory'));
|
|
43
|
-
const result = await configManager.loadConfig();
|
|
44
|
-
expect(result).toBeNull();
|
|
45
|
-
});
|
|
46
|
-
it('[EARS-3] WHEN loadConfig is invoked with invalid JSON in config.json, THE SYSTEM SHALL return null without throwing error', async () => {
|
|
47
|
-
mockedFs.readFile.mockResolvedValue('{ invalid json }');
|
|
48
|
-
const result = await configManager.loadConfig();
|
|
49
|
-
expect(result).toBeNull();
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
describe('getRootCycle', () => {
|
|
53
|
-
it('[EARS-4] WHEN getRootCycle is invoked with configuration that has rootCycle defined, THE SYSTEM SHALL return the root cycle ID', async () => {
|
|
54
|
-
const mockConfig = {
|
|
55
|
-
protocolVersion: '1.0',
|
|
56
|
-
projectId: 'test-project',
|
|
57
|
-
projectName: 'Test',
|
|
58
|
-
rootCycle: 'root-cycle-123'
|
|
59
|
-
};
|
|
60
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(mockConfig));
|
|
61
|
-
const result = await configManager.getRootCycle();
|
|
62
|
-
expect(result).toBe('root-cycle-123');
|
|
63
|
-
});
|
|
64
|
-
it('[EARS-5] WHEN getRootCycle is invoked with configuration without rootCycle defined, THE SYSTEM SHALL return null', async () => {
|
|
65
|
-
// Note: This test simulates an invalid/incomplete config.json file
|
|
66
|
-
// In practice, rootCycle is obligatory and created during 'gitgov init'
|
|
67
|
-
const incompleteConfig = {
|
|
68
|
-
protocolVersion: '1.0',
|
|
69
|
-
projectId: 'test-project',
|
|
70
|
-
projectName: 'Test'
|
|
71
|
-
// Missing rootCycle - invalid config
|
|
72
|
-
};
|
|
73
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(incompleteConfig));
|
|
74
|
-
const result = await configManager.getRootCycle();
|
|
75
|
-
expect(result).toBeNull();
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
describe('getProjectInfo', () => {
|
|
79
|
-
it('[EARS-6] WHEN getProjectInfo is invoked with valid configuration, THE SYSTEM SHALL return object with projectId and projectName', async () => {
|
|
80
|
-
const mockConfig = {
|
|
81
|
-
protocolVersion: '1.0',
|
|
82
|
-
projectId: 'project-456',
|
|
83
|
-
projectName: 'My Project',
|
|
84
|
-
rootCycle: 'root-cycle-789'
|
|
85
|
-
};
|
|
86
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(mockConfig));
|
|
87
|
-
const result = await configManager.getProjectInfo();
|
|
88
|
-
expect(result).toEqual({
|
|
89
|
-
id: 'project-456',
|
|
90
|
-
name: 'My Project'
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
// --- Session Methods (EARS-7 to EARS-14) ---
|
|
95
|
-
describe('loadSession', () => {
|
|
96
|
-
it('[EARS-7] WHEN loadSession is invoked with valid .session.json file, THE SYSTEM SHALL return complete GitGovSession object', async () => {
|
|
97
|
-
const mockSession = {
|
|
98
|
-
cloud: { sessionToken: 'jwt-token-123' },
|
|
99
|
-
lastSession: { actorId: 'human:camilo', timestamp: '2025-01-09T10:00:00Z' },
|
|
100
|
-
actorState: {
|
|
101
|
-
'human:camilo': { activeTaskId: 'task-123', activeCycleId: 'cycle-456', lastSync: '2025-01-09T09:30:00Z' }
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(mockSession));
|
|
105
|
-
const result = await configManager.loadSession();
|
|
106
|
-
expect(result).toEqual(mockSession);
|
|
107
|
-
expect(mockedFs.readFile).toHaveBeenCalledWith(path.join(tempDir, '.gitgov', '.session.json'), 'utf-8');
|
|
108
|
-
});
|
|
109
|
-
it('[EARS-8] WHEN loadSession is invoked with non-existent .session.json file, THE SYSTEM SHALL return null without throwing error', async () => {
|
|
110
|
-
mockedFs.readFile.mockRejectedValue(new Error('ENOENT: no such file or directory'));
|
|
111
|
-
const result = await configManager.loadSession();
|
|
112
|
-
expect(result).toBeNull();
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
describe('getActorState', () => {
|
|
116
|
-
it('[EARS-9] WHEN getActorState is invoked with actorId existing in session, THE SYSTEM SHALL return actor state', async () => {
|
|
117
|
-
const mockSession = {
|
|
118
|
-
actorState: {
|
|
119
|
-
'human:camilo': { activeTaskId: 'task-789', activeCycleId: 'cycle-101', lastSync: '2025-01-09T10:15:00Z' }
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(mockSession));
|
|
123
|
-
const result = await configManager.getActorState('human:camilo');
|
|
124
|
-
expect(result).toEqual({
|
|
125
|
-
activeTaskId: 'task-789',
|
|
126
|
-
activeCycleId: 'cycle-101',
|
|
127
|
-
lastSync: '2025-01-09T10:15:00Z'
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
it('[EARS-10] WHEN getActorState is invoked with non-existent actorId, THE SYSTEM SHALL return null', async () => {
|
|
131
|
-
const mockSession = {
|
|
132
|
-
actorState: {
|
|
133
|
-
'human:alice': { activeTaskId: 'task-999' }
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(mockSession));
|
|
137
|
-
const result = await configManager.getActorState('human:bob');
|
|
138
|
-
expect(result).toBeNull();
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
describe('updateActorState', () => {
|
|
142
|
-
it('[EARS-11] WHEN updateActorState is invoked, THE SYSTEM SHALL merge partial state with existing state and persist', async () => {
|
|
143
|
-
const existingSession = {
|
|
144
|
-
actorState: {
|
|
145
|
-
'human:camilo': { activeTaskId: 'task-old', activeCycleId: 'cycle-old', lastSync: '2025-01-08T10:00:00Z' }
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(existingSession));
|
|
149
|
-
mockedFs.writeFile.mockResolvedValue();
|
|
150
|
-
const partialState = { activeTaskId: 'task-new' };
|
|
151
|
-
await configManager.updateActorState('human:camilo', partialState);
|
|
152
|
-
expect(mockedFs.writeFile).toHaveBeenCalledWith(path.join(tempDir, '.gitgov', '.session.json'), expect.stringContaining('task-new'), 'utf-8');
|
|
153
|
-
expect(mockedFs.writeFile).toHaveBeenCalledWith(path.join(tempDir, '.gitgov', '.session.json'), expect.stringContaining('cycle-old'), 'utf-8');
|
|
154
|
-
});
|
|
155
|
-
it('[EARS-12] WHEN updateActorState is invoked with non-existent session, THE SYSTEM SHALL create new session with provided state', async () => {
|
|
156
|
-
mockedFs.readFile.mockRejectedValue(new Error('ENOENT'));
|
|
157
|
-
mockedFs.writeFile.mockResolvedValue();
|
|
158
|
-
const newState = { activeTaskId: 'task-first', activeCycleId: 'cycle-first' };
|
|
159
|
-
await configManager.updateActorState('human:new-user', newState);
|
|
160
|
-
expect(mockedFs.writeFile).toHaveBeenCalledWith(path.join(tempDir, '.gitgov', '.session.json'), expect.stringContaining('human:new-user'), 'utf-8');
|
|
161
|
-
expect(mockedFs.writeFile).toHaveBeenCalledWith(path.join(tempDir, '.gitgov', '.session.json'), expect.stringContaining('task-first'), 'utf-8');
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
describe('getCloudSessionToken', () => {
|
|
165
|
-
it('[EARS-13] WHEN getCloudSessionToken is invoked with token configured, THE SYSTEM SHALL return the session token', async () => {
|
|
166
|
-
const mockSession = {
|
|
167
|
-
cloud: { sessionToken: 'jwt-token-xyz' }
|
|
168
|
-
};
|
|
169
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(mockSession));
|
|
170
|
-
const result = await configManager.getCloudSessionToken();
|
|
171
|
-
expect(result).toBe('jwt-token-xyz');
|
|
172
|
-
});
|
|
173
|
-
it('[EARS-14] WHEN getCloudSessionToken is invoked without token configured, THE SYSTEM SHALL return null', async () => {
|
|
174
|
-
const mockSession = {
|
|
175
|
-
lastSession: { actorId: 'human:test', timestamp: '2025-01-09T10:00:00Z' }
|
|
176
|
-
// No cloud.sessionToken
|
|
177
|
-
};
|
|
178
|
-
mockedFs.readFile.mockResolvedValue(JSON.stringify(mockSession));
|
|
179
|
-
const result = await configManager.getCloudSessionToken();
|
|
180
|
-
expect(result).toBeNull();
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
// --- Static Utility Methods (EARS-15 to EARS-20) ---
|
|
184
|
-
describe('findProjectRoot', () => {
|
|
185
|
-
beforeEach(() => {
|
|
186
|
-
// Reset project root cache before each test
|
|
187
|
-
global.projectRoot = null;
|
|
188
|
-
});
|
|
189
|
-
it('[EARS-15] WHEN findProjectRoot is invoked from directory within Git project, THE SYSTEM SHALL return absolute path to root directory', () => {
|
|
190
|
-
const startPath = '/test/project/src/components';
|
|
191
|
-
const rootPath = '/test/project';
|
|
192
|
-
mockedExistsSync.mockImplementation((checkPath) => {
|
|
193
|
-
return checkPath === path.join(rootPath, '.git');
|
|
194
|
-
});
|
|
195
|
-
const result = ConfigManager.findProjectRoot(startPath);
|
|
196
|
-
expect(result).toBe(rootPath);
|
|
197
|
-
});
|
|
198
|
-
it('[EARS-16] WHEN findProjectRoot is invoked from directory outside Git project, THE SYSTEM SHALL return null', () => {
|
|
199
|
-
mockedExistsSync.mockReturnValue(false);
|
|
200
|
-
// Reset cache for this specific test
|
|
201
|
-
global.projectRoot = null;
|
|
202
|
-
const result = ConfigManager.findProjectRoot('/some/random/path');
|
|
203
|
-
expect(result).toBeNull();
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
describe('findGitgovRoot - Critical for CLI Directory Search', () => {
|
|
207
|
-
it('[CRITICAL-BUG-PREVENTION] should find .gitgov when executing from subdirectory', () => {
|
|
208
|
-
// This test ensures CLI commands work from any subdirectory
|
|
209
|
-
const rootPath = '/Users/camilo/solo-hub';
|
|
210
|
-
const subPath = '/Users/camilo/solo-hub/packages/cli';
|
|
211
|
-
// Mock existsSync to return true for .gitgov at root
|
|
212
|
-
mockedExistsSync.mockImplementation((path) => {
|
|
213
|
-
return path === '/Users/camilo/solo-hub/.gitgov';
|
|
214
|
-
});
|
|
215
|
-
const result = ConfigManager.findGitgovRoot(subPath);
|
|
216
|
-
expect(result).toBe(rootPath);
|
|
217
|
-
});
|
|
218
|
-
it('[CRITICAL-BUG-PREVENTION] should NOT find parent .gitgov when doing init', () => {
|
|
219
|
-
// This test ensures init doesn't accidentally find parent .gitgov
|
|
220
|
-
// When user wants to create NEW project in subdirectory
|
|
221
|
-
const currentPath = '/Users/camilo/new-project';
|
|
222
|
-
// Mock: parent has .gitgov but current doesn't
|
|
223
|
-
mockedExistsSync.mockImplementation((path) => {
|
|
224
|
-
if (path === '/Users/camilo/solo-hub/.gitgov') {
|
|
225
|
-
return true; // Parent has .gitgov
|
|
226
|
-
}
|
|
227
|
-
if (path === '/Users/camilo/new-project/.gitgov') {
|
|
228
|
-
return false; // Current doesn't have .gitgov
|
|
229
|
-
}
|
|
230
|
-
if (path === '/Users/camilo/new-project/.git') {
|
|
231
|
-
return true; // Current has .git (valid for init)
|
|
232
|
-
}
|
|
233
|
-
return false;
|
|
234
|
-
});
|
|
235
|
-
const result = ConfigManager.findGitgovRoot(currentPath);
|
|
236
|
-
// Should find .git in current directory, NOT .gitgov in parent
|
|
237
|
-
expect(result).toBe(currentPath);
|
|
238
|
-
});
|
|
239
|
-
});
|
|
240
|
-
describe('findGitgovRoot', () => {
|
|
241
|
-
beforeEach(() => {
|
|
242
|
-
// Reset project root cache before each test
|
|
243
|
-
global.projectRoot = null;
|
|
244
|
-
});
|
|
245
|
-
it('should find .gitgov directory when searching upward', () => {
|
|
246
|
-
const rootPath = '/test/project';
|
|
247
|
-
const subPath = '/test/project/packages/cli';
|
|
248
|
-
// Mock existsSync to return true for .gitgov at root
|
|
249
|
-
mockedExistsSync.mockImplementation((path) => {
|
|
250
|
-
return path === '/test/project/.gitgov';
|
|
251
|
-
});
|
|
252
|
-
const result = ConfigManager.findGitgovRoot(subPath);
|
|
253
|
-
expect(result).toBe(rootPath);
|
|
254
|
-
});
|
|
255
|
-
it('should find .git directory when no .gitgov exists (for init)', () => {
|
|
256
|
-
const rootPath = '/test/project';
|
|
257
|
-
const subPath = '/test/project/packages/cli';
|
|
258
|
-
// Mock existsSync to return true for .git at root
|
|
259
|
-
mockedExistsSync.mockImplementation((path) => {
|
|
260
|
-
return path === '/test/project/.git';
|
|
261
|
-
});
|
|
262
|
-
const result = ConfigManager.findGitgovRoot(subPath);
|
|
263
|
-
expect(result).toBe(rootPath);
|
|
264
|
-
});
|
|
265
|
-
it('should prefer .gitgov over .git when both exist', () => {
|
|
266
|
-
const rootPath = '/test/project';
|
|
267
|
-
const subPath = '/test/project/packages/cli';
|
|
268
|
-
// Mock existsSync to return true for both
|
|
269
|
-
mockedExistsSync.mockImplementation((path) => {
|
|
270
|
-
return path === '/test/project/.gitgov' || path === '/test/project/.git';
|
|
271
|
-
});
|
|
272
|
-
const result = ConfigManager.findGitgovRoot(subPath);
|
|
273
|
-
expect(result).toBe(rootPath);
|
|
274
|
-
});
|
|
275
|
-
it('should return null when neither .gitgov nor .git found', () => {
|
|
276
|
-
const subPath = '/test/project/packages/cli';
|
|
277
|
-
// Mock existsSync to always return false
|
|
278
|
-
mockedExistsSync.mockReturnValue(false);
|
|
279
|
-
const result = ConfigManager.findGitgovRoot(subPath);
|
|
280
|
-
expect(result).toBeNull();
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
describe('getGitgovPath', () => {
|
|
284
|
-
beforeEach(() => {
|
|
285
|
-
// Reset project root cache before each test
|
|
286
|
-
global.projectRoot = null;
|
|
287
|
-
});
|
|
288
|
-
it('[EARS-17] WHEN getGitgovPath is invoked from GitGovernance project, THE SYSTEM SHALL return absolute path to .gitgov directory', () => {
|
|
289
|
-
const rootPath = '/test/project';
|
|
290
|
-
// Mock findGitgovRoot to return a specific path
|
|
291
|
-
jest.spyOn(ConfigManager, 'findGitgovRoot').mockReturnValue(rootPath);
|
|
292
|
-
const result = ConfigManager.getGitgovPath();
|
|
293
|
-
expect(result).toBe(path.join(rootPath, '.gitgov'));
|
|
294
|
-
});
|
|
295
|
-
it('[EARS-18] WHEN getGitgovPath is invoked outside GitGovernance project, THE SYSTEM SHALL throw descriptive Error', () => {
|
|
296
|
-
// Mock findGitgovRoot to return null
|
|
297
|
-
jest.spyOn(ConfigManager, 'findGitgovRoot').mockReturnValue(null);
|
|
298
|
-
expect(() => ConfigManager.getGitgovPath()).toThrow('Could not find project root. Make sure you are inside a GitGovernance repository.');
|
|
299
|
-
});
|
|
300
|
-
});
|
|
301
|
-
describe('isGitgovProject', () => {
|
|
302
|
-
beforeEach(() => {
|
|
303
|
-
// Reset project root cache before each test
|
|
304
|
-
global.projectRoot = null;
|
|
305
|
-
});
|
|
306
|
-
it('[EARS-19] WHEN isGitgovProject is invoked from GitGovernance project, THE SYSTEM SHALL return true', () => {
|
|
307
|
-
const rootPath = '/test/project';
|
|
308
|
-
// Mock getGitgovPath to return a valid path and existsSync to return true
|
|
309
|
-
jest.spyOn(ConfigManager, 'getGitgovPath').mockReturnValue(path.join(rootPath, '.gitgov'));
|
|
310
|
-
mockedExistsSync.mockReturnValue(true);
|
|
311
|
-
const result = ConfigManager.isGitgovProject();
|
|
312
|
-
expect(result).toBe(true);
|
|
313
|
-
});
|
|
314
|
-
it('[EARS-20] WHEN isGitgovProject is invoked outside GitGovernance project, THE SYSTEM SHALL return false', () => {
|
|
315
|
-
mockedExistsSync.mockReturnValue(false);
|
|
316
|
-
const result = ConfigManager.isGitgovProject();
|
|
317
|
-
expect(result).toBe(false);
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
});
|
|
321
|
-
//# sourceMappingURL=config_manager.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config_manager.test.js","sourceRoot":"","sources":["../../../src/config_manager/config_manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitGovernance Configuration Types
|
|
3
|
-
* Based on config_file.md blueprint
|
|
4
|
-
*/
|
|
5
|
-
export interface GitGovConfig {
|
|
6
|
-
protocolVersion: string;
|
|
7
|
-
projectId: string;
|
|
8
|
-
projectName: string;
|
|
9
|
-
rootCycle: string;
|
|
10
|
-
blueprints?: {
|
|
11
|
-
root?: string;
|
|
12
|
-
};
|
|
13
|
-
state?: {
|
|
14
|
-
branch?: string;
|
|
15
|
-
};
|
|
16
|
-
cloud?: {
|
|
17
|
-
projectId?: string;
|
|
18
|
-
providerMappings?: Record<string, string>;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* GitGovernance Session State Types
|
|
23
|
-
* Based on session_state.md blueprint
|
|
24
|
-
*/
|
|
25
|
-
export interface ActorState {
|
|
26
|
-
activeTaskId?: string;
|
|
27
|
-
activeCycleId?: string;
|
|
28
|
-
lastSync?: string;
|
|
29
|
-
[key: string]: any;
|
|
30
|
-
}
|
|
31
|
-
export interface GitGovSession {
|
|
32
|
-
cloud?: {
|
|
33
|
-
sessionToken?: string;
|
|
34
|
-
};
|
|
35
|
-
lastSession?: {
|
|
36
|
-
actorId: string;
|
|
37
|
-
timestamp: string;
|
|
38
|
-
};
|
|
39
|
-
actorState?: Record<string, ActorState>;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Configuration Manager Class
|
|
43
|
-
* Provides typed access to GitGovernance configuration and session state
|
|
44
|
-
*/
|
|
45
|
-
export declare class ConfigManager {
|
|
46
|
-
private configPath;
|
|
47
|
-
private sessionPath;
|
|
48
|
-
constructor(projectRootPath?: string);
|
|
49
|
-
/**
|
|
50
|
-
* Load GitGovernance configuration
|
|
51
|
-
*/
|
|
52
|
-
loadConfig(): Promise<GitGovConfig | null>;
|
|
53
|
-
/**
|
|
54
|
-
* Load GitGovernance session state
|
|
55
|
-
*/
|
|
56
|
-
loadSession(): Promise<GitGovSession | null>;
|
|
57
|
-
/**
|
|
58
|
-
* Get root cycle from configuration
|
|
59
|
-
*/
|
|
60
|
-
getRootCycle(): Promise<string | null>;
|
|
61
|
-
/**
|
|
62
|
-
* Get project information from configuration
|
|
63
|
-
*/
|
|
64
|
-
getProjectInfo(): Promise<{
|
|
65
|
-
id: string;
|
|
66
|
-
name: string;
|
|
67
|
-
} | null>;
|
|
68
|
-
/**
|
|
69
|
-
* Get actor state for a specific actor
|
|
70
|
-
*/
|
|
71
|
-
getActorState(actorId: string): Promise<ActorState | null>;
|
|
72
|
-
/**
|
|
73
|
-
* Update actor state for a specific actor
|
|
74
|
-
*/
|
|
75
|
-
updateActorState(actorId: string, state: Partial<ActorState>): Promise<void>;
|
|
76
|
-
/**
|
|
77
|
-
* Get cloud session token
|
|
78
|
-
*/
|
|
79
|
-
getCloudSessionToken(): Promise<string | null>;
|
|
80
|
-
/**
|
|
81
|
-
* Finds the project root by searching upwards for a .git directory.
|
|
82
|
-
* Caches the result for subsequent calls.
|
|
83
|
-
* @param startPath The path to start searching from. Defaults to the current working directory.
|
|
84
|
-
* @returns The absolute path to the project root, or null if not found.
|
|
85
|
-
*/
|
|
86
|
-
static findProjectRoot(startPath?: string): string | null;
|
|
87
|
-
/**
|
|
88
|
-
* Finds the appropriate project root by searching upwards.
|
|
89
|
-
* First looks for .gitgov (initialized project), then .git (for init).
|
|
90
|
-
* @param startPath The path to start searching from. Defaults to the current working directory.
|
|
91
|
-
* @returns The absolute path to the project root, or null if not found.
|
|
92
|
-
*/
|
|
93
|
-
static findGitgovRoot(startPath?: string): string | null;
|
|
94
|
-
/**
|
|
95
|
-
* Gets the .gitgov directory path from project root
|
|
96
|
-
*/
|
|
97
|
-
static getGitgovPath(): string;
|
|
98
|
-
/**
|
|
99
|
-
* Checks if current directory is a GitGovernance project
|
|
100
|
-
*/
|
|
101
|
-
static isGitgovProject(): boolean;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Create a ConfigManager instance for the current project
|
|
105
|
-
*/
|
|
106
|
-
export declare function createConfigManager(projectRoot?: string): ConfigManager;
|
|
107
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config_manager/index.ts"],"names":[],"mappings":"AAQA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC3C,CAAC;CACH;AAED;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;gBAEhB,eAAe,GAAE,MAAyD;IAKtF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAUhD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAUlD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK5C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAUpE;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKhE;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAalF;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOpD;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI;IAuCxE;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI;IAiCvE;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,MAAM;IAQ9B;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,OAAO;CAQlC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,CAEvE"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { existsSync } from 'fs';
|
|
4
|
-
// Project root cache for performance
|
|
5
|
-
let projectRoot = null;
|
|
6
|
-
let lastSearchPath = null;
|
|
7
|
-
/**
|
|
8
|
-
* Configuration Manager Class
|
|
9
|
-
* Provides typed access to GitGovernance configuration and session state
|
|
10
|
-
*/
|
|
11
|
-
export class ConfigManager {
|
|
12
|
-
configPath;
|
|
13
|
-
sessionPath;
|
|
14
|
-
constructor(projectRootPath = ConfigManager.findProjectRoot() || process.cwd()) {
|
|
15
|
-
this.configPath = path.join(projectRootPath, '.gitgov', 'config.json');
|
|
16
|
-
this.sessionPath = path.join(projectRootPath, '.gitgov', '.session.json');
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Load GitGovernance configuration
|
|
20
|
-
*/
|
|
21
|
-
async loadConfig() {
|
|
22
|
-
try {
|
|
23
|
-
const configContent = await fs.readFile(this.configPath, 'utf-8');
|
|
24
|
-
return JSON.parse(configContent);
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
// Config file doesn't exist or is invalid
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Load GitGovernance session state
|
|
33
|
-
*/
|
|
34
|
-
async loadSession() {
|
|
35
|
-
try {
|
|
36
|
-
const sessionContent = await fs.readFile(this.sessionPath, 'utf-8');
|
|
37
|
-
return JSON.parse(sessionContent);
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
// Session file doesn't exist or is invalid
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Get root cycle from configuration
|
|
46
|
-
*/
|
|
47
|
-
async getRootCycle() {
|
|
48
|
-
const config = await this.loadConfig();
|
|
49
|
-
return config?.rootCycle || null;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get project information from configuration
|
|
53
|
-
*/
|
|
54
|
-
async getProjectInfo() {
|
|
55
|
-
const config = await this.loadConfig();
|
|
56
|
-
if (!config)
|
|
57
|
-
return null;
|
|
58
|
-
return {
|
|
59
|
-
id: config.projectId,
|
|
60
|
-
name: config.projectName
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Get actor state for a specific actor
|
|
65
|
-
*/
|
|
66
|
-
async getActorState(actorId) {
|
|
67
|
-
const session = await this.loadSession();
|
|
68
|
-
return session?.actorState?.[actorId] || null;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Update actor state for a specific actor
|
|
72
|
-
*/
|
|
73
|
-
async updateActorState(actorId, state) {
|
|
74
|
-
const session = await this.loadSession() || {};
|
|
75
|
-
if (!session.actorState)
|
|
76
|
-
session.actorState = {};
|
|
77
|
-
session.actorState[actorId] = {
|
|
78
|
-
...session.actorState[actorId],
|
|
79
|
-
...state,
|
|
80
|
-
lastSync: new Date().toISOString()
|
|
81
|
-
};
|
|
82
|
-
await fs.writeFile(this.sessionPath, JSON.stringify(session, null, 2), 'utf-8');
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Get cloud session token
|
|
86
|
-
*/
|
|
87
|
-
async getCloudSessionToken() {
|
|
88
|
-
const session = await this.loadSession();
|
|
89
|
-
return session?.cloud?.sessionToken || null;
|
|
90
|
-
}
|
|
91
|
-
// --- Static Utility Methods (consolidated from project-utils) ---
|
|
92
|
-
/**
|
|
93
|
-
* Finds the project root by searching upwards for a .git directory.
|
|
94
|
-
* Caches the result for subsequent calls.
|
|
95
|
-
* @param startPath The path to start searching from. Defaults to the current working directory.
|
|
96
|
-
* @returns The absolute path to the project root, or null if not found.
|
|
97
|
-
*/
|
|
98
|
-
static findProjectRoot(startPath = process.cwd()) {
|
|
99
|
-
// In test environment, allow cache reset via global
|
|
100
|
-
if (typeof global.projectRoot !== 'undefined' && global.projectRoot === null) {
|
|
101
|
-
projectRoot = null;
|
|
102
|
-
lastSearchPath = null;
|
|
103
|
-
}
|
|
104
|
-
// Reset cache if we're searching from a different directory
|
|
105
|
-
if (lastSearchPath && lastSearchPath !== startPath) {
|
|
106
|
-
projectRoot = null;
|
|
107
|
-
lastSearchPath = null;
|
|
108
|
-
}
|
|
109
|
-
if (projectRoot && lastSearchPath === startPath) {
|
|
110
|
-
return projectRoot;
|
|
111
|
-
}
|
|
112
|
-
// Update last search path
|
|
113
|
-
lastSearchPath = startPath;
|
|
114
|
-
let currentPath = startPath;
|
|
115
|
-
// Prevent infinite loop by stopping at the filesystem root
|
|
116
|
-
while (currentPath !== path.parse(currentPath).root) {
|
|
117
|
-
if (existsSync(path.join(currentPath, '.git'))) {
|
|
118
|
-
projectRoot = currentPath;
|
|
119
|
-
return projectRoot;
|
|
120
|
-
}
|
|
121
|
-
currentPath = path.dirname(currentPath);
|
|
122
|
-
}
|
|
123
|
-
// Final check at the root directory
|
|
124
|
-
if (existsSync(path.join(currentPath, '.git'))) {
|
|
125
|
-
projectRoot = currentPath;
|
|
126
|
-
return projectRoot;
|
|
127
|
-
}
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Finds the appropriate project root by searching upwards.
|
|
132
|
-
* First looks for .gitgov (initialized project), then .git (for init).
|
|
133
|
-
* @param startPath The path to start searching from. Defaults to the current working directory.
|
|
134
|
-
* @returns The absolute path to the project root, or null if not found.
|
|
135
|
-
*/
|
|
136
|
-
static findGitgovRoot(startPath = process.cwd()) {
|
|
137
|
-
let currentPath = startPath;
|
|
138
|
-
// First pass: Look for .gitgov (initialized GitGovernance project)
|
|
139
|
-
while (currentPath !== path.parse(currentPath).root) {
|
|
140
|
-
if (existsSync(path.join(currentPath, '.gitgov'))) {
|
|
141
|
-
return currentPath;
|
|
142
|
-
}
|
|
143
|
-
currentPath = path.dirname(currentPath);
|
|
144
|
-
}
|
|
145
|
-
// Final check at root for .gitgov
|
|
146
|
-
if (existsSync(path.join(currentPath, '.gitgov'))) {
|
|
147
|
-
return currentPath;
|
|
148
|
-
}
|
|
149
|
-
// Second pass: Look for .git (for init command)
|
|
150
|
-
currentPath = startPath;
|
|
151
|
-
while (currentPath !== path.parse(currentPath).root) {
|
|
152
|
-
if (existsSync(path.join(currentPath, '.git'))) {
|
|
153
|
-
return currentPath;
|
|
154
|
-
}
|
|
155
|
-
currentPath = path.dirname(currentPath);
|
|
156
|
-
}
|
|
157
|
-
// Final check at root for .git
|
|
158
|
-
if (existsSync(path.join(currentPath, '.git'))) {
|
|
159
|
-
return currentPath;
|
|
160
|
-
}
|
|
161
|
-
return null;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Gets the .gitgov directory path from project root
|
|
165
|
-
*/
|
|
166
|
-
static getGitgovPath() {
|
|
167
|
-
const root = ConfigManager.findGitgovRoot();
|
|
168
|
-
if (!root) {
|
|
169
|
-
throw new Error("Could not find project root. Make sure you are inside a GitGovernance repository.");
|
|
170
|
-
}
|
|
171
|
-
return path.join(root, '.gitgov');
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Checks if current directory is a GitGovernance project
|
|
175
|
-
*/
|
|
176
|
-
static isGitgovProject() {
|
|
177
|
-
try {
|
|
178
|
-
const gitgovPath = ConfigManager.getGitgovPath();
|
|
179
|
-
return existsSync(gitgovPath);
|
|
180
|
-
}
|
|
181
|
-
catch {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Create a ConfigManager instance for the current project
|
|
188
|
-
*/
|
|
189
|
-
export function createConfigManager(projectRoot) {
|
|
190
|
-
return new ConfigManager(projectRoot);
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config_manager/index.ts"],"names":[],"mappings":"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"}
|