@rsaglobaltech/specgate 0.20.0 → 0.22.0
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/CHANGELOG.md +208 -0
- package/README.md +31 -31
- package/bin/specgate.ts +25 -19
- package/dist/bin/specgate.js +15 -10
- package/dist/bin/specgate.js.map +1 -1
- package/dist/packages/core/src/application/AddRequirementUseCase.js +11 -1
- package/dist/packages/core/src/application/AddRequirementUseCase.js.map +1 -1
- package/dist/packages/core/src/application/ArchiveChangeUseCase.js +7 -2
- package/dist/packages/core/src/application/ArchiveChangeUseCase.js.map +1 -1
- package/dist/packages/core/src/application/ValidateProjectUseCase.js +9 -3
- package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -1
- package/dist/packages/core/src/domain/ArchivePlan.js.map +1 -1
- package/dist/packages/core/src/domain/BriefCards.js +320 -0
- package/dist/packages/core/src/domain/BriefCards.js.map +1 -0
- package/dist/packages/core/src/domain/ChangeTemplates.js +19 -0
- package/dist/packages/core/src/domain/ChangeTemplates.js.map +1 -1
- package/dist/packages/core/src/domain/DeltaSpec.js +14 -7
- package/dist/packages/core/src/domain/DeltaSpec.js.map +1 -1
- package/dist/packages/core/src/domain/DerivedMatrix.js +2 -2
- package/dist/packages/core/src/domain/DerivedMatrix.js.map +1 -1
- package/dist/packages/core/src/domain/Diagnostic.js.map +1 -1
- package/dist/packages/core/src/domain/DoneVerification.js +3 -3
- package/dist/packages/core/src/domain/DoneVerification.js.map +1 -1
- package/dist/packages/core/src/domain/DraftChecklist.js +6 -2
- package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
- package/dist/packages/core/src/domain/GherkinQuality.js +5 -2
- package/dist/packages/core/src/domain/GherkinQuality.js.map +1 -1
- package/dist/packages/core/src/domain/HarnessEvents.js +129 -0
- package/dist/packages/core/src/domain/HarnessEvents.js.map +1 -0
- package/dist/packages/core/src/domain/HarnessRun.js.map +1 -1
- package/dist/packages/core/src/domain/Language.js +5 -2
- package/dist/packages/core/src/domain/Language.js.map +1 -1
- package/dist/packages/core/src/domain/PackContribution.js.map +1 -1
- package/dist/packages/core/src/domain/PackDelta.js +5 -2
- package/dist/packages/core/src/domain/PackDelta.js.map +1 -1
- package/dist/packages/core/src/domain/PackSpec.js +16 -2
- package/dist/packages/core/src/domain/PackSpec.js.map +1 -1
- package/dist/packages/core/src/domain/QuotedText.js +41 -0
- package/dist/packages/core/src/domain/QuotedText.js.map +1 -0
- package/dist/packages/core/src/domain/RequirementPlan.js.map +1 -1
- package/dist/packages/core/src/domain/SpecParser.js +2 -9
- package/dist/packages/core/src/domain/SpecParser.js.map +1 -1
- package/dist/packages/core/src/domain/TicketText.js +337 -0
- package/dist/packages/core/src/domain/TicketText.js.map +1 -0
- package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
- package/dist/packages/core/src/domain/TraceabilityMatrix.js +3 -3
- package/dist/packages/core/src/domain/TraceabilityMatrix.js.map +1 -1
- package/dist/packages/core/src/domain/YamlLite.js +3 -0
- package/dist/packages/core/src/domain/YamlLite.js.map +1 -1
- package/dist/packages/core/src/infrastructure/ChangeWorkspace.js +7 -3
- package/dist/packages/core/src/infrastructure/ChangeWorkspace.js.map +1 -1
- package/dist/packages/core/src/infrastructure/ConsoleReporter.js.map +1 -1
- package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js +1 -0
- package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js.map +1 -1
- package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js +3 -1
- package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js.map +1 -1
- package/dist/packages/core/src/infrastructure/DiskPackRepository.js +0 -2
- package/dist/packages/core/src/infrastructure/DiskPackRepository.js.map +1 -1
- package/dist/packages/core/src/infrastructure/DiskRequirementGraphRepository.js.map +1 -1
- package/dist/packages/core/src/infrastructure/GitContributionStager.js +0 -4
- package/dist/packages/core/src/infrastructure/GitContributionStager.js.map +1 -1
- package/dist/packages/core/src/infrastructure/GitMergeDriver.js +0 -3
- package/dist/packages/core/src/infrastructure/GitMergeDriver.js.map +1 -1
- package/dist/packages/core/src/infrastructure/HarnessConfigFile.js +7 -13
- package/dist/packages/core/src/infrastructure/HarnessConfigFile.js.map +1 -1
- package/dist/packages/core/src/infrastructure/IdsAcrossBranches.js +48 -0
- package/dist/packages/core/src/infrastructure/IdsAcrossBranches.js.map +1 -0
- package/dist/packages/core/src/infrastructure/PackChangeDeposit.js.map +1 -1
- package/dist/packages/core/src/infrastructure/RemotePackResolver.js +0 -7
- package/dist/packages/core/src/infrastructure/RemotePackResolver.js.map +1 -1
- package/dist/packages/core/src/infrastructure/SpecopsConfigFile.js.map +1 -1
- package/dist/packages/core/test/unit/declared-artifacts.test.js +6 -2
- package/dist/packages/core/test/unit/declared-artifacts.test.js.map +1 -1
- package/dist/packages/core/test/unit/derived-matrix.test.js +3 -0
- package/dist/packages/core/test/unit/derived-matrix.test.js.map +1 -1
- package/dist/packages/core/test/unit/done-verification.test.js +3 -0
- package/dist/packages/core/test/unit/done-verification.test.js.map +1 -1
- package/dist/packages/core/test/unit/matrix-dependencies.test.js.map +1 -1
- package/dist/packages/core/test/unit/reconciliation.test.js.map +1 -1
- package/dist/packages/core/test/unit/requirement-readiness.test.js +2 -2
- package/dist/packages/core/test/unit/requirement-readiness.test.js.map +1 -1
- package/dist/packages/core/test/unit/resume-state.test.js +4 -1
- package/dist/packages/core/test/unit/resume-state.test.js.map +1 -1
- package/dist/packages/core/test/unit/run-budget.test.js +3 -0
- package/dist/packages/core/test/unit/run-budget.test.js.map +1 -1
- package/dist/packages/core/test/unit/untouched-delta.test.js +52 -0
- package/dist/packages/core/test/unit/untouched-delta.test.js.map +1 -0
- package/dist/packages/core/test/unit/validate-project.test.js +6 -2
- package/dist/packages/core/test/unit/validate-project.test.js.map +1 -1
- package/dist/packages/mcp-spec-driven/src/server.js +4 -3
- package/dist/packages/mcp-spec-driven/src/server.js.map +1 -1
- package/dist/packages/mcp-spec-driven/src/tools.js.map +1 -1
- package/dist/scripts/agents/commands.js +52 -38
- package/dist/scripts/agents/commands.js.map +1 -1
- package/dist/scripts/agents/contract-file.js +44 -0
- package/dist/scripts/agents/contract-file.js.map +1 -1
- package/dist/scripts/agents/detect.js.map +1 -1
- package/dist/scripts/agents/init.js.map +1 -1
- package/dist/scripts/alm/cli.js +16 -5
- package/dist/scripts/alm/cli.js.map +1 -1
- package/dist/scripts/alm/core.js +1 -0
- package/dist/scripts/alm/core.js.map +1 -1
- package/dist/scripts/alm/port.js +1 -1
- package/dist/scripts/alm/port.js.map +1 -1
- package/dist/scripts/alm/providers/http-client.js +46 -3
- package/dist/scripts/alm/providers/http-client.js.map +1 -1
- package/dist/scripts/alm/providers/jira.js +108 -32
- package/dist/scripts/alm/providers/jira.js.map +1 -1
- package/dist/scripts/apply.js +9 -0
- package/dist/scripts/apply.js.map +1 -0
- package/dist/scripts/archive.js +9 -0
- package/dist/scripts/archive.js.map +1 -0
- package/dist/scripts/change/archive.js.map +1 -1
- package/dist/scripts/change/artifacts.js.map +1 -1
- package/dist/scripts/change/delta.js +0 -8
- package/dist/scripts/change/delta.js.map +1 -1
- package/dist/scripts/change/instructions.js +9 -11
- package/dist/scripts/change/instructions.js.map +1 -1
- package/dist/scripts/cli/commands/alm/PrCommand.js +198 -0
- package/dist/scripts/cli/commands/alm/PrCommand.js.map +1 -0
- package/dist/scripts/cli/commands/alm/PullCommand.js +4 -2
- package/dist/scripts/cli/commands/alm/PullCommand.js.map +1 -1
- package/dist/scripts/cli/commands/change/ChangeCommand.js +119 -19
- package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
- package/dist/scripts/cli/commands/change/TicketCommand.js +657 -0
- package/dist/scripts/cli/commands/change/TicketCommand.js.map +1 -0
- package/dist/scripts/cli/commands/config/ConfigSetCommand.js +1 -1
- package/dist/scripts/cli/commands/config/ConfigSetCommand.js.map +1 -1
- package/dist/scripts/cli/commands/harness/RunCommand.js +225 -35
- package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
- package/dist/scripts/cli/commands/mcp/McpInstallCommand.js +1 -0
- package/dist/scripts/cli/commands/mcp/McpInstallCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/BundlePackCommand.js +2 -1
- package/dist/scripts/cli/commands/pack/BundlePackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js +32 -17
- package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/InferPackCommand.js +8 -5
- package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/LintPackCommand.js +36 -44
- package/dist/scripts/cli/commands/pack/LintPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/pack-args.js.map +1 -1
- package/dist/scripts/cli/commands/project/AddCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/AdoptCommand.js +62 -2
- package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/InitFromPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/InitProjectCommand.js +2 -1
- package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/OnboardCommand.js +40 -4
- package/dist/scripts/cli/commands/project/OnboardCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/UpdateCommand.js +4 -0
- package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/WizardCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/CheckCommand.js +86 -10
- package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/DoctorCommand.js +8 -4
- package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/LicenseCheckCommand.js +3 -1
- package/dist/scripts/cli/commands/quality/LicenseCheckCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/ReportCommand.js +8 -3
- package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +39 -30
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/VerifyCommand.js +3 -2
- package/dist/scripts/cli/commands/quality/VerifyCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/DoneCommand.js +182 -77
- package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/DraftCommand.js +292 -56
- package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/ExploreCommand.js +224 -0
- package/dist/scripts/cli/commands/spec/ExploreCommand.js.map +1 -0
- package/dist/scripts/cli/commands/spec/MatrixCommand.js +35 -5
- package/dist/scripts/cli/commands/spec/MatrixCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/NewCommand.js +4 -4
- package/dist/scripts/cli/commands/spec/NewCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/PetCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/PlanCommand.js +8 -3
- package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/ReqCommand.js +8 -9
- package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/StatusCommand.js +105 -26
- package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/StudioCommand.js +76 -4
- package/dist/scripts/cli/commands/spec/StudioCommand.js.map +1 -1
- package/dist/scripts/cli/commands/specops/ContributeCommand.js +6 -2
- package/dist/scripts/cli/commands/specops/ContributeCommand.js.map +1 -1
- package/dist/scripts/cli/commands/specops/DiffCommand.js +19 -5
- package/dist/scripts/cli/commands/specops/DiffCommand.js.map +1 -1
- package/dist/scripts/cli/commands/specops/SyncCommand.js +4 -2
- package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -1
- package/dist/scripts/docs/build-site.js.map +1 -1
- package/dist/scripts/docs/icons.js +0 -6
- package/dist/scripts/docs/icons.js.map +1 -1
- package/dist/scripts/docs/journey-storyboard.js +56 -47
- package/dist/scripts/docs/journey-storyboard.js.map +1 -1
- package/dist/scripts/docs/nav.js +5 -0
- package/dist/scripts/docs/nav.js.map +1 -1
- package/dist/scripts/docs/record-journey.js +93 -30
- package/dist/scripts/docs/record-journey.js.map +1 -1
- package/dist/scripts/docs/record-terminal.js +1 -1
- package/dist/scripts/docs/record-terminal.js.map +1 -1
- package/dist/scripts/docs/terminal-storyboard.js +24 -21
- package/dist/scripts/docs/terminal-storyboard.js.map +1 -1
- package/dist/scripts/draft/brief-check.js +34 -0
- package/dist/scripts/draft/brief-check.js.map +1 -0
- package/dist/scripts/draft/brief-setup.js +190 -24
- package/dist/scripts/draft/brief-setup.js.map +1 -1
- package/dist/scripts/draft/confined-agent.js +1 -0
- package/dist/scripts/draft/confined-agent.js.map +1 -1
- package/dist/scripts/draft/drafting-guide.js +49 -6
- package/dist/scripts/draft/drafting-guide.js.map +1 -1
- package/dist/scripts/draft/ticket-guide.js +129 -0
- package/dist/scripts/draft/ticket-guide.js.map +1 -0
- package/dist/scripts/explore.js +10 -0
- package/dist/scripts/explore.js.map +1 -0
- package/dist/scripts/gen_mcp_tools.js +15 -7
- package/dist/scripts/gen_mcp_tools.js.map +1 -1
- package/dist/scripts/harness/events.js +202 -0
- package/dist/scripts/harness/events.js.map +1 -0
- package/dist/scripts/harness/init.js +6 -2
- package/dist/scripts/harness/init.js.map +1 -1
- package/dist/scripts/harness/run.js +2 -1
- package/dist/scripts/harness/run.js.map +1 -1
- package/dist/scripts/lib/agent.js.map +1 -1
- package/dist/scripts/lib/base-ids.js +179 -0
- package/dist/scripts/lib/base-ids.js.map +1 -0
- package/dist/scripts/lib/capability-specs.js.map +1 -1
- package/dist/scripts/lib/diagnostics.js +0 -10
- package/dist/scripts/lib/diagnostics.js.map +1 -1
- package/dist/scripts/lib/harness-events.js +74 -0
- package/dist/scripts/lib/harness-events.js.map +1 -0
- package/dist/scripts/lib/in-flight.js +191 -0
- package/dist/scripts/lib/in-flight.js.map +1 -0
- package/dist/scripts/lib/live-model.js +145 -0
- package/dist/scripts/lib/live-model.js.map +1 -0
- package/dist/scripts/lib/live-page.js +89 -0
- package/dist/scripts/lib/live-page.js.map +1 -0
- package/dist/scripts/lib/monorepo-fanout.js.map +1 -1
- package/dist/scripts/lib/placeholders.js.map +1 -1
- package/dist/scripts/lib/project-root.js.map +1 -1
- package/dist/scripts/lib/run-with-deadline.js +6 -1
- package/dist/scripts/lib/run-with-deadline.js.map +1 -1
- package/dist/scripts/lib/surface.js +95 -30
- package/dist/scripts/lib/surface.js.map +1 -1
- package/dist/scripts/lib/ticket-keys.js +140 -0
- package/dist/scripts/lib/ticket-keys.js.map +1 -0
- package/dist/scripts/lib/tour.js +149 -0
- package/dist/scripts/lib/tour.js.map +1 -0
- package/dist/scripts/propose.js +27 -0
- package/dist/scripts/propose.js.map +1 -0
- package/dist/scripts/schema/cli.js +1 -1
- package/dist/scripts/schema/cli.js.map +1 -1
- package/dist/scripts/schema/registry.js +1 -0
- package/dist/scripts/schema/registry.js.map +1 -1
- package/dist/scripts/specops/add.js +2 -1
- package/dist/scripts/specops/add.js.map +1 -1
- package/dist/scripts/specops/against_lock.js +22 -25
- package/dist/scripts/specops/against_lock.js.map +1 -1
- package/dist/scripts/specops/as_change.js.map +1 -1
- package/dist/scripts/specops/lock.js +0 -5
- package/dist/scripts/specops/lock.js.map +1 -1
- package/dist/scripts/specops/manifest.js +0 -8
- package/dist/scripts/specops/manifest.js.map +1 -1
- package/dist/scripts/specops/remove.js +2 -1
- package/dist/scripts/specops/remove.js.map +1 -1
- package/dist/scripts/specops/verify.js.map +1 -1
- package/dist/scripts/vcs/github-pr.js +88 -0
- package/dist/scripts/vcs/github-pr.js.map +1 -0
- package/package.json +1 -1
- package/templates/adopt/spec.md.tpl +1 -1
- package/templates/adopt/traceability.md.tpl +1 -1
- package/templates/base/AGENTS.md.tpl +14 -7
- package/templates/harness/prompt-prefix.md.tpl +1 -1
|
@@ -39,7 +39,6 @@ exports.baselineDir = baselineDir;
|
|
|
39
39
|
exports.sha256 = sha256;
|
|
40
40
|
exports.newManifest = newManifest;
|
|
41
41
|
exports.readManifest = readManifest;
|
|
42
|
-
exports.writeManifest = writeManifest;
|
|
43
42
|
exports.readBaseline = readBaseline;
|
|
44
43
|
exports.snapshotBaseline = snapshotBaseline;
|
|
45
44
|
const DiskManifestRepository_1 = require("../../packages/core/src/infrastructure/DiskManifestRepository");
|
|
@@ -66,13 +65,6 @@ function readManifest(projectDir) {
|
|
|
66
65
|
const manifest = repo.readManifest();
|
|
67
66
|
return manifest ? manifest.toJSON() : null;
|
|
68
67
|
}
|
|
69
|
-
function writeManifest(projectDir, manifestJson, options = {}) {
|
|
70
|
-
const repo = new DiskManifestRepository_1.DiskManifestRepository(projectDir);
|
|
71
|
-
const manifest = manifestJson
|
|
72
|
-
? new SpecopsManifest_1.SpecopsManifest(manifestJson.specops_manifest_version, manifestJson.packs || {})
|
|
73
|
-
: SpecopsManifest_1.SpecopsManifest.createEmpty();
|
|
74
|
-
return repo.writeManifest(manifest, options);
|
|
75
|
-
}
|
|
76
68
|
function readBaseline(projectDir, packId, rel) {
|
|
77
69
|
const repo = new DiskManifestRepository_1.DiskManifestRepository(projectDir);
|
|
78
70
|
return repo.readBaseline(packId, rel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../scripts/specops/manifest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../scripts/specops/manifest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,oCAEC;AAED,kCAEC;AAED,wBAEC;AAQD,kCAEC;AAMD,oCAIC;AAED,oCAGC;AAED,4CAiBC;AAnED,0GAAuG;AACvG,oFAIwD;AACxD,gDAAkC;AAErB,QAAA,WAAW,GAAG,iCAAe,CAAC,OAAO,CAAC;AACtC,QAAA,gBAAgB,GAAG,iCAAe,CAAC,gBAAgB,CAAC;AACpD,QAAA,iBAAiB,GAAG,iCAAe,CAAC,QAAQ,CAAC;AAC7C,QAAA,gBAAgB,GAAG,iCAAe,CAAC,wBAAwB,CAAC;AAEzE,SAAgB,YAAY,CAAC,UAAkB;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAW,EAAE,yBAAiB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,WAAW,CAAC,UAAkB,EAAE,MAAc;IAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAW,EAAE,wBAAgB,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,MAAM,CAAC,OAAe;IACpC,OAAO,iCAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAQD,SAAgB,WAAW;IACzB,OAAO,iCAAe,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC;AAChD,CAAC;AAMD,SAAgB,YAAY,CAAC,UAAkB;IAC7C,MAAM,IAAI,GAAG,IAAI,+CAAsB,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACrC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,SAAgB,YAAY,CAAC,UAAkB,EAAE,MAAc,EAAE,GAAW;IAC1E,MAAM,IAAI,GAAG,IAAI,+CAAsB,CAAC,UAAU,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,gBAAgB,CAC9B,UAAkB,EAClB,MAAc,EACd,OAAoD,EACpD,OAAgC,EAAE,EAClC,UAAwB,EAAE;IAE1B,MAAM,IAAI,GAAG,IAAI,+CAAsB,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAEvE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,iCAAe,CAAC,WAAW,EAAE,CAAC;QACtE,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAG,IAAI,CAAC,OAAkB,IAAI,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
exports.RemoveCommand = void 0;
|
|
14
14
|
exports.parseArgs = parseArgs;
|
|
15
15
|
const project_root_1 = require("../lib/project-root");
|
|
16
|
+
const diagnostics_1 = require("../lib/diagnostics");
|
|
16
17
|
const DiskLockfileRepository_1 = require("../../packages/core/src/infrastructure/DiskLockfileRepository");
|
|
17
18
|
const RemovePackUseCase_1 = require("../../packages/core/src/application/RemovePackUseCase");
|
|
18
19
|
const Lockfile_1 = require("../../packages/core/src/domain/Lockfile");
|
|
@@ -68,7 +69,7 @@ class RemoveCommand extends command_1.BaseCommand {
|
|
|
68
69
|
projectDir = (0, project_root_1.resolveProjectDir)(opts.projectDir, { requireSentinel: true });
|
|
69
70
|
}
|
|
70
71
|
catch (err) {
|
|
71
|
-
process.stderr.write(`${err
|
|
72
|
+
process.stderr.write(`${(0, diagnostics_1.errorMessage)(err)}\n`);
|
|
72
73
|
process.exit(2);
|
|
73
74
|
}
|
|
74
75
|
const repo = new DiskLockfileRepository_1.DiskLockfileRepository(projectDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../scripts/specops/remove.ts"],"names":[],"mappings":";;AACA;;;;;;;;GAQG;;;
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../scripts/specops/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../scripts/specops/verify.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBH,8CAeC;AAMD,gDAUC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../scripts/specops/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* One pull request per ticket, on GitHub (ADR-0039 §4).
|
|
4
|
+
*
|
|
5
|
+
* The pull request belongs to the repository, not to the ALM: this lives
|
|
6
|
+
* outside `scripts/alm/`, whose port still only creates, reads, closes and
|
|
7
|
+
* lists issues. It opens or updates a pull request, and nothing else — no
|
|
8
|
+
* merge, no close, no branch deletion. The token comes from the environment
|
|
9
|
+
* variable `pr.token_env` names and is never printed.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.prConfig = prConfig;
|
|
13
|
+
exports.mergeBody = mergeBody;
|
|
14
|
+
exports.openOrUpdatePr = openOrUpdatePr;
|
|
15
|
+
const http_client_1 = require("../alm/providers/http-client");
|
|
16
|
+
/** The `pr:` block of `alm.config.yaml`, checked; throws with a fix. */
|
|
17
|
+
function prConfig(raw) {
|
|
18
|
+
const pr = (raw && typeof raw === "object" ? raw : {});
|
|
19
|
+
const provider = String(pr.provider ?? "github");
|
|
20
|
+
if (provider !== "github") {
|
|
21
|
+
throw new Error(`pr.provider '${provider}' is not supported.\nFix: set pr.provider: github.`);
|
|
22
|
+
}
|
|
23
|
+
const repo = String(pr.repo ?? "");
|
|
24
|
+
if (!/^[\w.-]+\/[\w.-]+$/.test(repo)) {
|
|
25
|
+
throw new Error("alm.config.yaml has no pr.repo.\nFix: add\npr:\n provider: github\n repo: <owner>/<repo>\n base: develop\n token_env: GITHUB_TOKEN");
|
|
26
|
+
}
|
|
27
|
+
const apiUrl = String(pr.base_url ?? "https://api.github.com").replace(/\/$/, "");
|
|
28
|
+
(0, http_client_1.assertSecureUrl)(apiUrl, "pr.base_url");
|
|
29
|
+
return {
|
|
30
|
+
repo,
|
|
31
|
+
base: String(pr.base ?? "develop"),
|
|
32
|
+
tokenEnv: String(pr.token_env ?? "GITHUB_TOKEN"),
|
|
33
|
+
apiUrl,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const BLOCK = /<!-- specgate:pr [^>]*-->[\s\S]*?<!-- \/specgate:pr -->/;
|
|
37
|
+
/** The block's opening marker, its closer deleted: everything after it was ours. */
|
|
38
|
+
const OPENED = /<!-- specgate:pr [^>]*-->[\s\S]*$/;
|
|
39
|
+
/** The description with Specgate's block replaced, or added after what is there. */
|
|
40
|
+
function mergeBody(current, block) {
|
|
41
|
+
if (BLOCK.test(current))
|
|
42
|
+
return current.replace(BLOCK, () => block);
|
|
43
|
+
if (OPENED.test(current))
|
|
44
|
+
return current.replace(OPENED, () => block);
|
|
45
|
+
return current.trim() ? `${current.trimEnd()}\n\n${block}` : block;
|
|
46
|
+
}
|
|
47
|
+
async function openOrUpdatePr(cfg, pr, fetchImpl = globalThis.fetch) {
|
|
48
|
+
const token = process.env[cfg.tokenEnv];
|
|
49
|
+
if (!token) {
|
|
50
|
+
throw new Error(`Environment variable ${cfg.tokenEnv} is not set.\n` +
|
|
51
|
+
"Fix: export a token that may write pull requests to this repository " +
|
|
52
|
+
"(a fine-grained token: Contents and Pull requests, read and write).");
|
|
53
|
+
}
|
|
54
|
+
const headers = {
|
|
55
|
+
Authorization: `Bearer ${token}`,
|
|
56
|
+
Accept: "application/vnd.github+json",
|
|
57
|
+
"Content-Type": "application/json",
|
|
58
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
59
|
+
};
|
|
60
|
+
const call = async (path, what, init = {}) => {
|
|
61
|
+
const res = await fetchImpl(`${cfg.apiUrl}${path}`, { ...init, headers });
|
|
62
|
+
if (!res.ok) {
|
|
63
|
+
const text = await res.text().catch(() => "");
|
|
64
|
+
throw new Error(`GitHub: ${what} failed: HTTP ${res.status} ${text.slice(0, 300)}`);
|
|
65
|
+
}
|
|
66
|
+
return (await res.json());
|
|
67
|
+
};
|
|
68
|
+
const owner = cfg.repo.split("/")[0];
|
|
69
|
+
const open = await call(`/repos/${cfg.repo}/pulls?head=${encodeURIComponent(`${owner}:${pr.head}`)}` +
|
|
70
|
+
`&base=${encodeURIComponent(cfg.base)}&state=open`, `list the pull requests of ${pr.head}`);
|
|
71
|
+
const mine = open.find((p) => !p.base || p.base.ref === cfg.base);
|
|
72
|
+
if (mine) {
|
|
73
|
+
// What a person wrote stays: the title, once it names the ticket, and
|
|
74
|
+
// every line outside Specgate's own block of the description.
|
|
75
|
+
const patch = { body: mergeBody(mine.body ?? "", pr.body) };
|
|
76
|
+
const key = pr.key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
77
|
+
if (!new RegExp(`(^|[^A-Z0-9_-])${key}(?![0-9])`).test(mine.title ?? ""))
|
|
78
|
+
patch.title = pr.title;
|
|
79
|
+
const updated = await call(`/repos/${cfg.repo}/pulls/${mine.number}`, `update pull request #${mine.number}`, { method: "PATCH", body: JSON.stringify(patch) });
|
|
80
|
+
return { number: updated.number, url: updated.html_url, action: "updated" };
|
|
81
|
+
}
|
|
82
|
+
const created = await call(`/repos/${cfg.repo}/pulls`, `open a pull request for ${pr.head}`, {
|
|
83
|
+
method: "POST",
|
|
84
|
+
body: JSON.stringify({ title: pr.title, head: pr.head, base: cfg.base, body: pr.body }),
|
|
85
|
+
});
|
|
86
|
+
return { number: created.number, url: created.html_url, action: "created" };
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=github-pr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-pr.js","sourceRoot":"","sources":["../../../scripts/vcs/github-pr.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Adopted into Spec-Driven Development on an existing codebase (brownfield).
|
|
4
4
|
> `specgate new "<title>"` adds the next `REQ-NNN`: a draft section below and
|
|
5
5
|
> a tagged scenario under `features/` — rewrite both. A test that mentions the
|
|
6
|
-
> id is linked to it; `specgate
|
|
6
|
+
> id is linked to it; `specgate apply REQ-NNN` closes it once the gate passes.
|
|
7
7
|
> Existing behaviour is retro-filled requirement by requirement — start with
|
|
8
8
|
> the ones your team is actively changing.
|
|
9
9
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Every requirement in `spec.md` maps to a scenario, its feature file, and the
|
|
4
4
|
artifacts that implement and verify it. `specgate plan` lists
|
|
5
|
-
what is still missing; `specgate
|
|
5
|
+
what is still missing; `specgate apply REQ-NNN` flips a row to
|
|
6
6
|
Implemented.
|
|
7
7
|
|
|
8
8
|
| Requirement | Scenario ID | Feature file | Use Case | Command/Query | Aggregate | Event | Technical artifact | Test artifact | Status |
|
|
@@ -8,20 +8,27 @@ This project uses spec-driven development with `specgate`. `spec.md`,
|
|
|
8
8
|
|
|
9
9
|
## Work
|
|
10
10
|
|
|
11
|
+
The loop is propose → test → apply → archive:
|
|
12
|
+
|
|
11
13
|
1. `specgate status` — what is left, and the next requirement.
|
|
12
|
-
2.
|
|
14
|
+
2. New behaviour: `specgate propose <change-id>`, then write its delta.
|
|
15
|
+
3. Write the test first and name the requirement in it (`REQ-007`, and its
|
|
13
16
|
scenario `SCN-007a` when there is one). That mention is the link.
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
4. Implement until `specgate check` passes: specs, links, coverage, tests.
|
|
18
|
+
5. `specgate apply REQ-007` — refused unless the gate passes.
|
|
19
|
+
6. `specgate archive <change-id>` — only once every requirement in it is
|
|
20
|
+
applied, and only when the person reviewing the change says so.
|
|
16
21
|
|
|
17
22
|
Each step in detail: the `/specgate:*` commands, or
|
|
18
23
|
`specgate change instructions <artifact> --json`.
|
|
19
24
|
|
|
20
|
-
## From a
|
|
25
|
+
## From a brief or a Jira ticket
|
|
21
26
|
|
|
22
|
-
`specgate
|
|
23
|
-
<
|
|
24
|
-
"Ready to review". Never archive a draft yourself: a person reviews it.
|
|
27
|
+
`specgate propose --from-brief <module>` or `specgate propose --from-ticket
|
|
28
|
+
<KEY>` opens the draft and writes `DRAFTING.md` — follow it, then re-run until
|
|
29
|
+
"Ready to review". Never archive a draft yourself: a person reviews it. Never
|
|
30
|
+
edit a change's `ticket.md`; start every commit message with the ticket key
|
|
31
|
+
(`KAN-13 REQ-007: …`), and never use Smart Commits (`#done`): they write to Jira.
|
|
25
32
|
|
|
26
33
|
## Never
|
|
27
34
|
|
|
@@ -20,7 +20,7 @@ from a domain pack:
|
|
|
20
20
|
stop and say so in your final message. Editing a scenario so your code
|
|
21
21
|
passes is the one failure mode that makes this whole exercise worthless.
|
|
22
22
|
- `docs/specs/**` — spec.md, the traceability matrix, domain model, use cases,
|
|
23
|
-
commands, events, aggregates, ADRs. `specgate
|
|
23
|
+
commands, events, aggregates, ADRs. `specgate apply` updates the matrix; you do
|
|
24
24
|
not.
|
|
25
25
|
- `AI_RULES.md`, `spec.md`, `.specops.lock`, `.specops/**`.
|
|
26
26
|
|