@agent-teams/engineering-foundation 0.4.1 → 0.5.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/README.md +22 -0
- package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-extractor.d.ts.map +1 -1
- package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-extractor.js +12 -2
- package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-extractor.js.map +1 -1
- package/dist/capabilities/repository-agent-workflow/adapters/inbound/cli/report-renderer.d.ts +3 -0
- package/dist/capabilities/repository-agent-workflow/adapters/inbound/cli/report-renderer.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/inbound/cli/report-renderer.js +26 -0
- package/dist/capabilities/repository-agent-workflow/adapters/inbound/cli/report-renderer.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/filesystem/filesystem-repository-agent-workflow-reader.d.ts +6 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/filesystem/filesystem-repository-agent-workflow-reader.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/filesystem/filesystem-repository-agent-workflow-reader.js +81 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/filesystem/filesystem-repository-agent-workflow-reader.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/git/git-repository-changes-reader.d.ts +15 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/git/git-repository-changes-reader.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/git/git-repository-changes-reader.js +153 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/git/git-repository-changes-reader.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/pnpm/pnpm-package-script-runner.d.ts +17 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/pnpm/pnpm-package-script-runner.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/pnpm/pnpm-package-script-runner.js +70 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/pnpm/pnpm-package-script-runner.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/process/process-execution.d.ts +10 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/process/process-execution.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/process/process-execution.js +30 -0
- package/dist/capabilities/repository-agent-workflow/adapters/outbound/process/process-execution.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/model/changed-workflow.d.ts +36 -0
- package/dist/capabilities/repository-agent-workflow/application/model/changed-workflow.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/model/changed-workflow.js +2 -0
- package/dist/capabilities/repository-agent-workflow/application/model/changed-workflow.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/model/repository-agent-workflow.d.ts +34 -0
- package/dist/capabilities/repository-agent-workflow/application/model/repository-agent-workflow.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/model/repository-agent-workflow.js +2 -0
- package/dist/capabilities/repository-agent-workflow/application/model/repository-agent-workflow.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/policies/evaluate-repository-agent-workflow.d.ts +4 -0
- package/dist/capabilities/repository-agent-workflow/application/policies/evaluate-repository-agent-workflow.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/policies/evaluate-repository-agent-workflow.js +131 -0
- package/dist/capabilities/repository-agent-workflow/application/policies/evaluate-repository-agent-workflow.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/ports/changed-workflow.d.ts +17 -0
- package/dist/capabilities/repository-agent-workflow/application/ports/changed-workflow.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/ports/changed-workflow.js +2 -0
- package/dist/capabilities/repository-agent-workflow/application/ports/changed-workflow.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/ports/repository-agent-workflow-reader.d.ts +5 -0
- package/dist/capabilities/repository-agent-workflow/application/ports/repository-agent-workflow-reader.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/ports/repository-agent-workflow-reader.js +2 -0
- package/dist/capabilities/repository-agent-workflow/application/ports/repository-agent-workflow-reader.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/rules.d.ts +8 -0
- package/dist/capabilities/repository-agent-workflow/application/rules.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/rules.js +35 -0
- package/dist/capabilities/repository-agent-workflow/application/rules.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/use-cases/analyze-repository-agent-workflow.d.ts +9 -0
- package/dist/capabilities/repository-agent-workflow/application/use-cases/analyze-repository-agent-workflow.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/use-cases/analyze-repository-agent-workflow.js +7 -0
- package/dist/capabilities/repository-agent-workflow/application/use-cases/analyze-repository-agent-workflow.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/use-cases/run-changed-agent-workflow.d.ts +4 -0
- package/dist/capabilities/repository-agent-workflow/application/use-cases/run-changed-agent-workflow.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/application/use-cases/run-changed-agent-workflow.js +79 -0
- package/dist/capabilities/repository-agent-workflow/application/use-cases/run-changed-agent-workflow.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/changed-command.d.ts +9 -0
- package/dist/capabilities/repository-agent-workflow/changed-command.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/changed-command.js +28 -0
- package/dist/capabilities/repository-agent-workflow/changed-command.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/contract/config.d.ts +5 -0
- package/dist/capabilities/repository-agent-workflow/contract/config.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/contract/config.js +121 -0
- package/dist/capabilities/repository-agent-workflow/contract/config.js.map +1 -0
- package/dist/capabilities/repository-agent-workflow/module.d.ts +5 -0
- package/dist/capabilities/repository-agent-workflow/module.d.ts.map +1 -0
- package/dist/capabilities/repository-agent-workflow/module.js +49 -0
- package/dist/capabilities/repository-agent-workflow/module.js.map +1 -0
- package/dist/capabilities/repository-security-baseline/application/policies/evaluate-repository-security.d.ts.map +1 -1
- package/dist/capabilities/repository-security-baseline/application/policies/evaluate-repository-security.js +150 -125
- package/dist/capabilities/repository-security-baseline/application/policies/evaluate-repository-security.js.map +1 -1
- package/dist/capabilities/workspace-dependency-declarations/application/policies/evaluate-workspace-dependencies.d.ts.map +1 -1
- package/dist/capabilities/workspace-dependency-declarations/application/policies/evaluate-workspace-dependencies.js +9 -1
- package/dist/capabilities/workspace-dependency-declarations/application/policies/evaluate-workspace-dependencies.js.map +1 -1
- package/dist/cli-arguments.d.ts +12 -0
- package/dist/cli-arguments.d.ts.map +1 -0
- package/dist/cli-arguments.js +114 -0
- package/dist/cli-arguments.js.map +1 -0
- package/dist/cli.js +131 -125
- package/dist/cli.js.map +1 -1
- package/dist/composition/capability-registry.d.ts.map +1 -1
- package/dist/composition/capability-registry.js +2 -0
- package/dist/composition/capability-registry.js.map +1 -1
- package/dist/composition/rule-registry.d.ts.map +1 -1
- package/dist/composition/rule-registry.js +2 -0
- package/dist/composition/rule-registry.js.map +1 -1
- package/dist/foundation-config.d.ts +1 -1
- package/dist/foundation-config.d.ts.map +1 -1
- package/dist/foundation-config.js +2 -0
- package/dist/foundation-config.js.map +1 -1
- package/dist/local-mode/attach-transaction.d.ts +11 -0
- package/dist/local-mode/attach-transaction.d.ts.map +1 -0
- package/dist/local-mode/attach-transaction.js +176 -0
- package/dist/local-mode/attach-transaction.js.map +1 -0
- package/dist/local-mode/consumer-policy.d.ts +2 -3
- package/dist/local-mode/consumer-policy.d.ts.map +1 -1
- package/dist/local-mode/consumer-policy.js +102 -94
- package/dist/local-mode/consumer-policy.js.map +1 -1
- package/dist/local-mode/index.d.ts +1 -0
- package/dist/local-mode/index.d.ts.map +1 -1
- package/dist/local-mode/index.js.map +1 -1
- package/dist/local-mode/inspection.d.ts.map +1 -1
- package/dist/local-mode/inspection.js +126 -118
- package/dist/local-mode/inspection.js.map +1 -1
- package/dist/local-mode/local-state-store.d.ts +6 -0
- package/dist/local-mode/local-state-store.d.ts.map +1 -0
- package/dist/local-mode/local-state-store.js +138 -0
- package/dist/local-mode/local-state-store.js.map +1 -0
- package/dist/local-mode/registry-recovery.d.ts +5 -0
- package/dist/local-mode/registry-recovery.d.ts.map +1 -0
- package/dist/local-mode/registry-recovery.js +112 -0
- package/dist/local-mode/registry-recovery.js.map +1 -0
- package/dist/local-mode/service.d.ts +1 -1
- package/dist/local-mode/service.d.ts.map +1 -1
- package/dist/local-mode/service.js +14 -398
- package/dist/local-mode/service.js.map +1 -1
- package/dist/package-self-check.d.ts +1 -1
- package/dist/package-self-check.d.ts.map +1 -1
- package/dist/package-self-check.js +13 -1
- package/dist/package-self-check.js.map +1 -1
- package/dist/public-api-surface.d.ts +4 -0
- package/dist/public-api-surface.d.ts.map +1 -0
- package/dist/public-api-surface.js +4 -0
- package/dist/public-api-surface.js.map +1 -0
- package/dist/scaffolding/adapters/memory/memory-workspace.d.ts +9 -0
- package/dist/scaffolding/adapters/memory/memory-workspace.d.ts.map +1 -0
- package/dist/scaffolding/adapters/memory/memory-workspace.js +93 -0
- package/dist/scaffolding/adapters/memory/memory-workspace.js.map +1 -0
- package/dist/scaffolding/adapters/node/filesystem-journal.d.ts +6 -0
- package/dist/scaffolding/adapters/node/filesystem-journal.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/filesystem-journal.js +79 -0
- package/dist/scaffolding/adapters/node/filesystem-journal.js.map +1 -0
- package/dist/scaffolding/adapters/node/filesystem-path-guard.d.ts +7 -0
- package/dist/scaffolding/adapters/node/filesystem-path-guard.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/filesystem-path-guard.js +144 -0
- package/dist/scaffolding/adapters/node/filesystem-path-guard.js.map +1 -0
- package/dist/scaffolding/adapters/node/filesystem-workspace.d.ts +13 -0
- package/dist/scaffolding/adapters/node/filesystem-workspace.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/filesystem-workspace.js +336 -0
- package/dist/scaffolding/adapters/node/filesystem-workspace.js.map +1 -0
- package/dist/scaffolding/adapters/node/installed-foundation-version.d.ts +2 -0
- package/dist/scaffolding/adapters/node/installed-foundation-version.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/installed-foundation-version.js +10 -0
- package/dist/scaffolding/adapters/node/installed-foundation-version.js.map +1 -0
- package/dist/scaffolding/adapters/node/node-input-loader.d.ts +17 -0
- package/dist/scaffolding/adapters/node/node-input-loader.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-input-loader.js +157 -0
- package/dist/scaffolding/adapters/node/node-input-loader.js.map +1 -0
- package/dist/scaffolding/adapters/node/node-plan-authority.d.ts +3 -0
- package/dist/scaffolding/adapters/node/node-plan-authority.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-plan-authority.js +18 -0
- package/dist/scaffolding/adapters/node/node-plan-authority.js.map +1 -0
- package/dist/scaffolding/adapters/node/node-receipt-validator.d.ts +4 -0
- package/dist/scaffolding/adapters/node/node-receipt-validator.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-receipt-validator.js +10 -0
- package/dist/scaffolding/adapters/node/node-receipt-validator.js.map +1 -0
- package/dist/scaffolding/cli-command.d.ts +8 -0
- package/dist/scaffolding/cli-command.d.ts.map +1 -0
- package/dist/scaffolding/cli-command.js +60 -0
- package/dist/scaffolding/cli-command.js.map +1 -0
- package/dist/scaffolding/contract/types.d.ts +296 -0
- package/dist/scaffolding/contract/types.d.ts.map +1 -0
- package/dist/scaffolding/contract/types.js +2 -0
- package/dist/scaffolding/contract/types.js.map +1 -0
- package/dist/scaffolding/definitions/conformance-fixture.d.ts +3 -0
- package/dist/scaffolding/definitions/conformance-fixture.d.ts.map +1 -0
- package/dist/scaffolding/definitions/conformance-fixture.js +217 -0
- package/dist/scaffolding/definitions/conformance-fixture.js.map +1 -0
- package/dist/scaffolding/definitions/registry.d.ts +3 -0
- package/dist/scaffolding/definitions/registry.d.ts.map +1 -0
- package/dist/scaffolding/definitions/registry.js +6 -0
- package/dist/scaffolding/definitions/registry.js.map +1 -0
- package/dist/scaffolding/index.d.ts +11 -0
- package/dist/scaffolding/index.d.ts.map +1 -0
- package/dist/scaffolding/index.js +9 -0
- package/dist/scaffolding/index.js.map +1 -0
- package/dist/scaffolding/kernel/canonical-json.d.ts +6 -0
- package/dist/scaffolding/kernel/canonical-json.d.ts.map +1 -0
- package/dist/scaffolding/kernel/canonical-json.js +55 -0
- package/dist/scaffolding/kernel/canonical-json.js.map +1 -0
- package/dist/scaffolding/kernel/compiler.d.ts +4 -0
- package/dist/scaffolding/kernel/compiler.d.ts.map +1 -0
- package/dist/scaffolding/kernel/compiler.js +297 -0
- package/dist/scaffolding/kernel/compiler.js.map +1 -0
- package/dist/scaffolding/kernel/definition-registry.d.ts +50 -0
- package/dist/scaffolding/kernel/definition-registry.d.ts.map +1 -0
- package/dist/scaffolding/kernel/definition-registry.js +92 -0
- package/dist/scaffolding/kernel/definition-registry.js.map +1 -0
- package/dist/scaffolding/kernel/limits.d.ts +5 -0
- package/dist/scaffolding/kernel/limits.d.ts.map +1 -0
- package/dist/scaffolding/kernel/limits.js +5 -0
- package/dist/scaffolding/kernel/limits.js.map +1 -0
- package/dist/scaffolding/kernel/plan-validation.d.ts +3 -0
- package/dist/scaffolding/kernel/plan-validation.d.ts.map +1 -0
- package/dist/scaffolding/kernel/plan-validation.js +44 -0
- package/dist/scaffolding/kernel/plan-validation.js.map +1 -0
- package/dist/scaffolding/kernel/receipt.d.ts +35 -0
- package/dist/scaffolding/kernel/receipt.d.ts.map +1 -0
- package/dist/scaffolding/kernel/receipt.js +206 -0
- package/dist/scaffolding/kernel/receipt.js.map +1 -0
- package/dist/scaffolding/scaffold-error.d.ts +8 -0
- package/dist/scaffolding/scaffold-error.d.ts.map +1 -0
- package/dist/scaffolding/scaffold-error.js +11 -0
- package/dist/scaffolding/scaffold-error.js.map +1 -0
- package/dist/scaffolding/service.d.ts +8 -0
- package/dist/scaffolding/service.d.ts.map +1 -0
- package/dist/scaffolding/service.js +15 -0
- package/dist/scaffolding/service.js.map +1 -0
- package/dist/schema-ids.d.ts +1 -1
- package/dist/schema-ids.d.ts.map +1 -1
- package/dist/schema-ids.js +6 -0
- package/dist/schema-ids.js.map +1 -1
- package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.d.ts.map +1 -1
- package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.js +17 -12
- package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.js.map +1 -1
- package/package.json +5 -1
- package/presets/oxlint/maintainability-tests.json +23 -0
- package/presets/oxlint/maintainability.json +23 -0
- package/schemas/foundation-config/v1.schema.json +10 -0
- package/schemas/repository-agent-workflow/v1.schema.json +92 -0
- package/schemas/scaffold-intent/v1.schema.json +60 -0
- package/schemas/scaffold-plan/v1.schema.json +250 -0
- package/schemas/scaffold-receipt/v1.schema.json +299 -0
- package/schemas/scaffold-target-catalog/v1.schema.json +52 -0
- package/schemas/scaffolding-config/v1.schema.json +99 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { RepositoryAgentWorkflowPolicy } from "./repository-agent-workflow.js";
|
|
2
|
+
export interface RepositoryChanges {
|
|
3
|
+
readonly baselineRef: string;
|
|
4
|
+
readonly baselineCommit: string | null;
|
|
5
|
+
readonly changedPaths: readonly string[];
|
|
6
|
+
readonly deletedPaths: readonly string[];
|
|
7
|
+
readonly existingPaths: readonly string[];
|
|
8
|
+
}
|
|
9
|
+
export interface ScriptExecutionResult {
|
|
10
|
+
readonly exitCode: number;
|
|
11
|
+
readonly stdout: string;
|
|
12
|
+
readonly stderr: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AgentWorkflowStepReport {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly script: string;
|
|
17
|
+
readonly paths: readonly string[];
|
|
18
|
+
readonly outcome: "passed" | "violations";
|
|
19
|
+
readonly output: string;
|
|
20
|
+
}
|
|
21
|
+
export interface AgentWorkflowChangedReport {
|
|
22
|
+
readonly reportSchemaVersion: 1;
|
|
23
|
+
readonly outcome: "passed" | "violations";
|
|
24
|
+
readonly coverage: "changed" | "fast-full";
|
|
25
|
+
readonly baselineRef: string;
|
|
26
|
+
readonly baselineCommit: string | null;
|
|
27
|
+
readonly changedPaths: readonly string[];
|
|
28
|
+
readonly steps: readonly AgentWorkflowStepReport[];
|
|
29
|
+
}
|
|
30
|
+
export interface AgentWorkflowInvocation {
|
|
31
|
+
readonly consumerRoot: string;
|
|
32
|
+
readonly policy: RepositoryAgentWorkflowPolicy;
|
|
33
|
+
readonly baseRef?: string;
|
|
34
|
+
readonly signal?: AbortSignal;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=changed-workflow.d.ts.map
|
package/dist/capabilities/repository-agent-workflow/application/model/changed-workflow.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-workflow.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/model/changed-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAEpF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-workflow.js","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/model/changed-workflow.ts"],"names":[],"mappings":""}
|
package/dist/capabilities/repository-agent-workflow/application/model/repository-agent-workflow.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface AgentInstructionPaths {
|
|
2
|
+
readonly canonical: string;
|
|
3
|
+
readonly claude: string;
|
|
4
|
+
readonly gemini: string;
|
|
5
|
+
readonly copilot: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AgentWorkflowScripts {
|
|
8
|
+
readonly changed: string;
|
|
9
|
+
readonly fast: string;
|
|
10
|
+
readonly full: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ChangedCheckPolicy {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly script: string;
|
|
15
|
+
readonly extensions: readonly string[];
|
|
16
|
+
readonly passPaths: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface RepositoryAgentWorkflowPolicy {
|
|
19
|
+
readonly instructions: AgentInstructionPaths;
|
|
20
|
+
readonly scripts: AgentWorkflowScripts;
|
|
21
|
+
readonly changedChecks: readonly ChangedCheckPolicy[];
|
|
22
|
+
readonly fullScanPaths: readonly string[];
|
|
23
|
+
}
|
|
24
|
+
export type InstructionFileEvidence = {
|
|
25
|
+
readonly kind: "file";
|
|
26
|
+
readonly source: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly kind: "missing" | "symlink" | "invalid";
|
|
29
|
+
};
|
|
30
|
+
export interface RepositoryAgentWorkflowEvidence {
|
|
31
|
+
readonly instructionFiles: Readonly<Record<keyof AgentInstructionPaths, InstructionFileEvidence>>;
|
|
32
|
+
readonly packageScripts: Readonly<Record<string, string>>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=repository-agent-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-agent-workflow.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/model/repository-agent-workflow.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtD,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,qBAAqB,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAClG,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-agent-workflow.js","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/model/repository-agent-workflow.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FoundationDiagnostic } from "../../../../check-contract.js";
|
|
2
|
+
import type { RepositoryAgentWorkflowEvidence, RepositoryAgentWorkflowPolicy } from "../model/repository-agent-workflow.js";
|
|
3
|
+
export declare function evaluateRepositoryAgentWorkflow(policy: RepositoryAgentWorkflowPolicy, evidence: RepositoryAgentWorkflowEvidence): readonly FoundationDiagnostic[];
|
|
4
|
+
//# sourceMappingURL=evaluate-repository-agent-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-repository-agent-workflow.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/policies/evaluate-repository-agent-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAEV,+BAA+B,EAC/B,6BAA6B,EAC9B,MAAM,uCAAuC,CAAC;AAuK/C,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,6BAA6B,EACrC,QAAQ,EAAE,+BAA+B,GACxC,SAAS,oBAAoB,EAAE,CAQjC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
function diagnostic(input) {
|
|
2
|
+
return Object.freeze({
|
|
3
|
+
ruleId: input.ruleId,
|
|
4
|
+
severity: "error",
|
|
5
|
+
subject: input.subject,
|
|
6
|
+
message: input.message,
|
|
7
|
+
location: { path: input.path },
|
|
8
|
+
relatedLocations: [],
|
|
9
|
+
evidence: input.evidence ?? [],
|
|
10
|
+
remediation: input.remediation,
|
|
11
|
+
requiresArchitectureReview: false
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function fileSource(evidence) {
|
|
15
|
+
return evidence.kind === "file" ? evidence.source : null;
|
|
16
|
+
}
|
|
17
|
+
function isExactAdapter(source, candidates) {
|
|
18
|
+
return candidates.includes(source.trim());
|
|
19
|
+
}
|
|
20
|
+
function importCandidates(adapterPath, canonicalPath) {
|
|
21
|
+
const adapterDirectory = adapterPath.split("/").slice(0, -1);
|
|
22
|
+
const canonicalSegments = canonicalPath.split("/");
|
|
23
|
+
let commonSegments = 0;
|
|
24
|
+
while (adapterDirectory[commonSegments] !== undefined &&
|
|
25
|
+
adapterDirectory[commonSegments] === canonicalSegments[commonSegments]) {
|
|
26
|
+
commonSegments += 1;
|
|
27
|
+
}
|
|
28
|
+
const relative = [
|
|
29
|
+
...adapterDirectory.slice(commonSegments).map(() => ".."),
|
|
30
|
+
...canonicalSegments.slice(commonSegments)
|
|
31
|
+
].join("/");
|
|
32
|
+
const normalized = relative.startsWith(".") ? relative : `./${relative}`;
|
|
33
|
+
return Object.freeze([`@${relative}`, `@${normalized}`]);
|
|
34
|
+
}
|
|
35
|
+
function validateInstructionFiles(policy, evidence) {
|
|
36
|
+
const diagnostics = [];
|
|
37
|
+
for (const kind of ["canonical", "claude", "gemini", "copilot"]) {
|
|
38
|
+
const repositoryPath = policy.instructions[kind];
|
|
39
|
+
const file = evidence.instructionFiles[kind];
|
|
40
|
+
if (file.kind !== "file") {
|
|
41
|
+
diagnostics.push(diagnostic({
|
|
42
|
+
ruleId: "repository.agent-workflow.instruction-file-invalid",
|
|
43
|
+
subject: `${kind}:${repositoryPath}`,
|
|
44
|
+
message: `Instruction file is ${file.kind}: ${repositoryPath}.`,
|
|
45
|
+
path: repositoryPath,
|
|
46
|
+
remediation: "Create a regular instruction file within the repository."
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return diagnostics;
|
|
51
|
+
}
|
|
52
|
+
function validateAdapters(policy, evidence) {
|
|
53
|
+
const diagnostics = [];
|
|
54
|
+
for (const kind of ["claude", "gemini"]) {
|
|
55
|
+
const source = fileSource(evidence.instructionFiles[kind]);
|
|
56
|
+
const candidates = importCandidates(policy.instructions[kind], policy.instructions.canonical);
|
|
57
|
+
if (source !== null && !isExactAdapter(source, candidates)) {
|
|
58
|
+
diagnostics.push(diagnostic({
|
|
59
|
+
ruleId: "repository.agent-workflow.adapter-not-linked",
|
|
60
|
+
subject: `${kind}:${policy.instructions[kind]}`,
|
|
61
|
+
message: `${kind} instructions do not import ${policy.instructions.canonical}.`,
|
|
62
|
+
path: policy.instructions[kind],
|
|
63
|
+
remediation: `Replace the adapter content with ${candidates[0]}.`,
|
|
64
|
+
evidence: candidates.map((value) => ({ kind: "accepted-import", value }))
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const copilotSource = fileSource(evidence.instructionFiles.copilot);
|
|
69
|
+
if (copilotSource !== null && !copilotSource.includes(policy.instructions.canonical)) {
|
|
70
|
+
diagnostics.push(diagnostic({
|
|
71
|
+
ruleId: "repository.agent-workflow.adapter-not-linked",
|
|
72
|
+
subject: `copilot:${policy.instructions.copilot}`,
|
|
73
|
+
message: `Copilot instructions do not reference ${policy.instructions.canonical}.`,
|
|
74
|
+
path: policy.instructions.copilot,
|
|
75
|
+
remediation: `Require Copilot to read and follow ${policy.instructions.canonical}.`
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
return diagnostics;
|
|
79
|
+
}
|
|
80
|
+
function validateCommands(policy, evidence) {
|
|
81
|
+
const diagnostics = [];
|
|
82
|
+
const canonicalSource = fileSource(evidence.instructionFiles.canonical);
|
|
83
|
+
const requiredScripts = new Set([
|
|
84
|
+
policy.scripts.changed,
|
|
85
|
+
policy.scripts.fast,
|
|
86
|
+
policy.scripts.full,
|
|
87
|
+
...policy.changedChecks.map(({ script }) => script)
|
|
88
|
+
]);
|
|
89
|
+
for (const script of [...requiredScripts].toSorted()) {
|
|
90
|
+
if (!(script in evidence.packageScripts)) {
|
|
91
|
+
diagnostics.push(diagnostic({
|
|
92
|
+
ruleId: "repository.agent-workflow.package-script-missing",
|
|
93
|
+
subject: `package-script:${script}`,
|
|
94
|
+
message: `Required package script is missing: ${script}.`,
|
|
95
|
+
path: "package.json",
|
|
96
|
+
remediation: `Define the ${script} package script.`
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
for (const script of [policy.scripts.changed, policy.scripts.fast, policy.scripts.full]) {
|
|
101
|
+
if (canonicalSource !== null && !canonicalSource.includes(script)) {
|
|
102
|
+
diagnostics.push(diagnostic({
|
|
103
|
+
ruleId: "repository.agent-workflow.command-not-documented",
|
|
104
|
+
subject: `instruction-command:${script}`,
|
|
105
|
+
message: `Canonical instructions do not mention ${script}.`,
|
|
106
|
+
path: policy.instructions.canonical,
|
|
107
|
+
remediation: `Document when agents must run pnpm ${script}.`
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const changedCommand = evidence.packageScripts[policy.scripts.changed];
|
|
112
|
+
if (changedCommand !== undefined &&
|
|
113
|
+
!/^(?:pnpm\s+build\s*&&\s*)?agent-teams-foundation\s+agent-workflow\s+changed\s+--consumer\s+\.$/u.test(changedCommand.trim())) {
|
|
114
|
+
diagnostics.push(diagnostic({
|
|
115
|
+
ruleId: "repository.agent-workflow.changed-runner-invalid",
|
|
116
|
+
subject: `package-script:${policy.scripts.changed}`,
|
|
117
|
+
message: "The changed-file script bypasses the shared Foundation runner.",
|
|
118
|
+
path: "package.json",
|
|
119
|
+
remediation: "Set the script exactly to: agent-teams-foundation agent-workflow changed --consumer ."
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
return diagnostics;
|
|
123
|
+
}
|
|
124
|
+
export function evaluateRepositoryAgentWorkflow(policy, evidence) {
|
|
125
|
+
return Object.freeze([
|
|
126
|
+
...validateInstructionFiles(policy, evidence),
|
|
127
|
+
...validateAdapters(policy, evidence),
|
|
128
|
+
...validateCommands(policy, evidence)
|
|
129
|
+
].toSorted((left, right) => `${left.ruleId}:${left.subject}`.localeCompare(`${right.ruleId}:${right.subject}`)));
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=evaluate-repository-agent-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-repository-agent-workflow.js","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/policies/evaluate-repository-agent-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RepositoryChanges, ScriptExecutionResult } from "../model/changed-workflow.js";
|
|
2
|
+
export interface RepositoryChangesReader {
|
|
3
|
+
collect(input: {
|
|
4
|
+
readonly consumerRoot: string;
|
|
5
|
+
readonly baseRef?: string;
|
|
6
|
+
readonly signal?: AbortSignal;
|
|
7
|
+
}): Promise<RepositoryChanges>;
|
|
8
|
+
}
|
|
9
|
+
export interface PackageScriptRunner {
|
|
10
|
+
run(input: {
|
|
11
|
+
readonly consumerRoot: string;
|
|
12
|
+
readonly script: string;
|
|
13
|
+
readonly paths: readonly string[];
|
|
14
|
+
readonly signal?: AbortSignal;
|
|
15
|
+
}): Promise<ScriptExecutionResult>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=changed-workflow.d.ts.map
|
package/dist/capabilities/repository-agent-workflow/application/ports/changed-workflow.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-workflow.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/ports/changed-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,KAAK,EAAE;QACb,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,KAAK,EAAE;QACT,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-workflow.js","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/ports/changed-workflow.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RepositoryAgentWorkflowEvidence, RepositoryAgentWorkflowPolicy } from "../model/repository-agent-workflow.js";
|
|
2
|
+
export interface RepositoryAgentWorkflowReader {
|
|
3
|
+
read(consumerRoot: string, policy: RepositoryAgentWorkflowPolicy, signal?: AbortSignal): Promise<RepositoryAgentWorkflowEvidence>;
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=repository-agent-workflow-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-agent-workflow-reader.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/ports/repository-agent-workflow-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,6BAA6B,EAC9B,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,6BAA6B;IAC5C,IAAI,CACF,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,6BAA6B,EACrC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,+BAA+B,CAAC,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-agent-workflow-reader.js","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/ports/repository-agent-workflow-reader.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface RepositoryAgentWorkflowRuleMetadata {
|
|
2
|
+
readonly id: string;
|
|
3
|
+
readonly rationale: string;
|
|
4
|
+
readonly remediation: string;
|
|
5
|
+
readonly documentation: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const REPOSITORY_AGENT_WORKFLOW_RULES_BY_ID: ReadonlyMap<string, RepositoryAgentWorkflowRuleMetadata>;
|
|
8
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/repository-agent-workflow/application/rules.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAsCD,eAAO,MAAM,qCAAqC,EAAE,WAAW,CAC7D,MAAM,EACN,mCAAmC,CACY,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const DOCUMENTATION = "https://github.com/agent-teams-ai/engineering-foundation/blob/main/docs/reference/repository-agent-workflow.md";
|
|
2
|
+
const rules = [
|
|
3
|
+
{
|
|
4
|
+
id: "repository.agent-workflow.instruction-file-invalid",
|
|
5
|
+
rationale: "Every supported agent must receive the repository's canonical instructions.",
|
|
6
|
+
remediation: "Create a regular, bounded instruction file at the configured path.",
|
|
7
|
+
documentation: DOCUMENTATION
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "repository.agent-workflow.adapter-not-linked",
|
|
11
|
+
rationale: "Provider-specific instruction adapters must route to one canonical source.",
|
|
12
|
+
remediation: "Import or explicitly reference the configured canonical instruction file.",
|
|
13
|
+
documentation: DOCUMENTATION
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "repository.agent-workflow.command-not-documented",
|
|
17
|
+
rationale: "Agents need exact, stable commands instead of prose-only quality expectations.",
|
|
18
|
+
remediation: "Document the configured changed, fast, and full verification scripts.",
|
|
19
|
+
documentation: DOCUMENTATION
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "repository.agent-workflow.package-script-missing",
|
|
23
|
+
rationale: "A documented workflow is reproducible only when every referenced script exists.",
|
|
24
|
+
remediation: "Add the missing package script or update the workflow policy.",
|
|
25
|
+
documentation: DOCUMENTATION
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "repository.agent-workflow.changed-runner-invalid",
|
|
29
|
+
rationale: "Changed-file discovery must use the shared Foundation implementation.",
|
|
30
|
+
remediation: "Route the configured changed script to agent-teams-foundation agent-workflow changed.",
|
|
31
|
+
documentation: DOCUMENTATION
|
|
32
|
+
}
|
|
33
|
+
];
|
|
34
|
+
export const REPOSITORY_AGENT_WORKFLOW_RULES_BY_ID = new Map(rules.map((rule) => [rule.id, rule]));
|
|
35
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/capabilities/repository-agent-workflow/application/rules.ts"],"names":[],"mappings":"AAOA,MAAM,aAAa,GACjB,gHAAgH,CAAC;AAEnH,MAAM,KAAK,GAAmD;IAC5D;QACE,EAAE,EAAE,oDAAoD;QACxD,SAAS,EAAE,6EAA6E;QACxF,WAAW,EAAE,oEAAoE;QACjF,aAAa,EAAE,aAAa;KAC7B;IACD;QACE,EAAE,EAAE,8CAA8C;QAClD,SAAS,EAAE,4EAA4E;QACvF,WAAW,EAAE,2EAA2E;QACxF,aAAa,EAAE,aAAa;KAC7B;IACD;QACE,EAAE,EAAE,kDAAkD;QACtD,SAAS,EAAE,gFAAgF;QAC3F,WAAW,EAAE,uEAAuE;QACpF,aAAa,EAAE,aAAa;KAC7B;IACD;QACE,EAAE,EAAE,kDAAkD;QACtD,SAAS,EAAE,iFAAiF;QAC5F,WAAW,EAAE,+DAA+D;QAC5E,aAAa,EAAE,aAAa;KAC7B;IACD;QACE,EAAE,EAAE,kDAAkD;QACtD,SAAS,EAAE,uEAAuE;QAClF,WAAW,EAAE,uFAAuF;QACpG,aAAa,EAAE,aAAa;KAC7B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAG9C,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FoundationDiagnostic } from "../../../../check-contract.js";
|
|
2
|
+
import type { RepositoryAgentWorkflowPolicy } from "../model/repository-agent-workflow.js";
|
|
3
|
+
import type { RepositoryAgentWorkflowReader } from "../ports/repository-agent-workflow-reader.js";
|
|
4
|
+
export declare function analyzeRepositoryAgentWorkflow(input: {
|
|
5
|
+
readonly consumerRoot: string;
|
|
6
|
+
readonly policy: RepositoryAgentWorkflowPolicy;
|
|
7
|
+
readonly signal?: AbortSignal;
|
|
8
|
+
}, reader: RepositoryAgentWorkflowReader): Promise<readonly FoundationDiagnostic[]>;
|
|
9
|
+
//# sourceMappingURL=analyze-repository-agent-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-repository-agent-workflow.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/use-cases/analyze-repository-agent-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAE3F,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAElG,wBAAsB,8BAA8B,CAClD,KAAK,EAAE;IACL,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,EACD,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAM1C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { assertNotCancelled } from "../../../../strict-yaml.js";
|
|
2
|
+
import { evaluateRepositoryAgentWorkflow } from "../policies/evaluate-repository-agent-workflow.js";
|
|
3
|
+
export async function analyzeRepositoryAgentWorkflow(input, reader) {
|
|
4
|
+
assertNotCancelled(input.signal);
|
|
5
|
+
return evaluateRepositoryAgentWorkflow(input.policy, await reader.read(input.consumerRoot, input.policy, input.signal));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=analyze-repository-agent-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-repository-agent-workflow.js","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/use-cases/analyze-repository-agent-workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AAGpG,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAIC,EACD,MAAqC;IAErC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,+BAA+B,CACpC,KAAK,CAAC,MAAM,EACZ,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAClE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentWorkflowChangedReport, AgentWorkflowInvocation } from "../model/changed-workflow.js";
|
|
2
|
+
import type { PackageScriptRunner, RepositoryChangesReader } from "../ports/changed-workflow.js";
|
|
3
|
+
export declare function runChangedAgentWorkflow(input: AgentWorkflowInvocation, changesReader: RepositoryChangesReader, scriptRunner: PackageScriptRunner): Promise<AgentWorkflowChangedReport>;
|
|
4
|
+
//# sourceMappingURL=run-changed-agent-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-changed-agent-workflow.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/use-cases/run-changed-agent-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EAIxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AA6FtC,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,uBAAuB,EAC9B,aAAa,EAAE,uBAAuB,EACtC,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,0BAA0B,CAAC,CA6BrC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const MAX_PATH_ARGUMENTS = 200;
|
|
2
|
+
const MAX_PATH_ARGUMENT_BYTES = 24 * 1024;
|
|
3
|
+
const MAX_STEP_OUTPUT_CHARS = 128 * 1024;
|
|
4
|
+
function pathMatchesExtension(path, extension) {
|
|
5
|
+
return path.toLowerCase().endsWith(extension.toLowerCase());
|
|
6
|
+
}
|
|
7
|
+
function pathMatchesTrigger(path, trigger) {
|
|
8
|
+
return path === trigger || path.startsWith(`${trigger}/`);
|
|
9
|
+
}
|
|
10
|
+
function exceedsArgumentBudget(paths) {
|
|
11
|
+
return (paths.length > MAX_PATH_ARGUMENTS ||
|
|
12
|
+
paths.reduce((total, path) => total + Buffer.byteLength(path) + 1, 0) >
|
|
13
|
+
MAX_PATH_ARGUMENT_BYTES);
|
|
14
|
+
}
|
|
15
|
+
function output(result) {
|
|
16
|
+
const combined = [result.stdout.trim(), result.stderr.trim()]
|
|
17
|
+
.filter((value) => value.length > 0)
|
|
18
|
+
.join("\n");
|
|
19
|
+
return combined.length <= MAX_STEP_OUTPUT_CHARS
|
|
20
|
+
? combined
|
|
21
|
+
: combined.slice(combined.length - MAX_STEP_OUTPUT_CHARS);
|
|
22
|
+
}
|
|
23
|
+
async function executeStep(input, runner, id, script, paths) {
|
|
24
|
+
const result = await runner.run({
|
|
25
|
+
consumerRoot: input.consumerRoot,
|
|
26
|
+
script,
|
|
27
|
+
paths,
|
|
28
|
+
...(input.signal === undefined ? {} : { signal: input.signal })
|
|
29
|
+
});
|
|
30
|
+
return Object.freeze({
|
|
31
|
+
id,
|
|
32
|
+
script,
|
|
33
|
+
paths: Object.freeze([...paths]),
|
|
34
|
+
outcome: result.exitCode === 0 ? "passed" : "violations",
|
|
35
|
+
output: output(result)
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function shouldRunFastFull(input, changes) {
|
|
39
|
+
return (changes.changedPaths.some((path) => input.policy.fullScanPaths.some((trigger) => pathMatchesTrigger(path, trigger))) ||
|
|
40
|
+
changes.deletedPaths.length > 0 ||
|
|
41
|
+
changes.changedPaths.length !== changes.existingPaths.length ||
|
|
42
|
+
exceedsArgumentBudget(changes.existingPaths));
|
|
43
|
+
}
|
|
44
|
+
async function changedSteps(input, changes, runner) {
|
|
45
|
+
const steps = [];
|
|
46
|
+
for (const check of input.policy.changedChecks) {
|
|
47
|
+
const paths = changes.existingPaths.filter((path) => check.extensions.some((extension) => pathMatchesExtension(path, extension)));
|
|
48
|
+
if (paths.length === 0) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
steps.push(await executeStep(input, runner, check.id, check.script, check.passPaths ? paths : []));
|
|
52
|
+
}
|
|
53
|
+
return Object.freeze(steps);
|
|
54
|
+
}
|
|
55
|
+
export async function runChangedAgentWorkflow(input, changesReader, scriptRunner) {
|
|
56
|
+
const changes = await changesReader.collect({
|
|
57
|
+
consumerRoot: input.consumerRoot,
|
|
58
|
+
...(input.baseRef === undefined ? {} : { baseRef: input.baseRef }),
|
|
59
|
+
...(input.signal === undefined ? {} : { signal: input.signal })
|
|
60
|
+
});
|
|
61
|
+
const fastFull = shouldRunFastFull(input, changes);
|
|
62
|
+
const steps = fastFull
|
|
63
|
+
? Object.freeze([
|
|
64
|
+
await executeStep(input, scriptRunner, "fast-full", input.policy.scripts.fast, [])
|
|
65
|
+
])
|
|
66
|
+
: await changedSteps(input, changes, scriptRunner);
|
|
67
|
+
return Object.freeze({
|
|
68
|
+
reportSchemaVersion: 1,
|
|
69
|
+
outcome: steps.some(({ outcome }) => outcome === "violations")
|
|
70
|
+
? "violations"
|
|
71
|
+
: "passed",
|
|
72
|
+
coverage: fastFull ? "fast-full" : "changed",
|
|
73
|
+
baselineRef: changes.baselineRef,
|
|
74
|
+
baselineCommit: changes.baselineCommit,
|
|
75
|
+
changedPaths: changes.changedPaths,
|
|
76
|
+
steps
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=run-changed-agent-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-changed-agent-workflow.js","sourceRoot":"","sources":["../../../../../src/capabilities/repository-agent-workflow/application/use-cases/run-changed-agent-workflow.ts"],"names":[],"mappings":"AAYA,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1C,MAAM,qBAAqB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEzC,SAAS,oBAAoB,CAAC,IAAY,EAAE,SAAiB;IAC3D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,OAAe;IACvD,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAwB;IACrD,OAAO,CACL,KAAK,CAAC,MAAM,GAAG,kBAAkB;QACjC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnE,uBAAuB,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,MAA6B;IAC3C,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC1D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SACnC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,QAAQ,CAAC,MAAM,IAAI,qBAAqB;QAC7C,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,qBAAqB,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,KAA8B,EAC9B,MAA2B,EAC3B,EAAU,EACV,MAAc,EACd,KAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM;QACN,KAAK;QACL,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAChC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;QACxD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,KAA8B,EAC9B,OAA0B;IAE1B,OAAO,CACL,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAChF;QACD,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAC/B,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,MAAM;QAC5D,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,KAA8B,EAC9B,OAA0B,EAC1B,MAA2B;IAE3B,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAClD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAC5E,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CACR,MAAM,WAAW,CACf,KAAK,EACL,MAAM,EACN,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAC7B,CACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAA8B,EAC9B,aAAsC,EACtC,YAAiC;IAEjC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC;QAC1C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACZ,MAAM,WAAW,CACf,KAAK,EACL,YAAY,EACZ,WAAW,EACX,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EACzB,EAAE,CACH;SACF,CAAC;QACJ,CAAC,CAAC,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,mBAAmB,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,YAAY,CAAC;YAC5D,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,QAAQ;QACZ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PnpmProcessEnvironment } from "./adapters/outbound/pnpm/pnpm-package-script-runner.js";
|
|
2
|
+
export declare function runAgentWorkflowChangedCommand(input: {
|
|
3
|
+
readonly consumerRoot: string;
|
|
4
|
+
readonly format: "json" | "text";
|
|
5
|
+
readonly baseRef?: string;
|
|
6
|
+
readonly configPath: string;
|
|
7
|
+
readonly pnpmEnvironment: PnpmProcessEnvironment;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=changed-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-command.d.ts","sourceRoot":"","sources":["../../../src/capabilities/repository-agent-workflow/changed-command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAKrG,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,sBAAsB,CAAC;CAClD,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { GitRepositoryChangesReader } from "./adapters/outbound/git/git-repository-changes-reader.js";
|
|
2
|
+
import { PnpmPackageScriptRunner } from "./adapters/outbound/pnpm/pnpm-package-script-runner.js";
|
|
3
|
+
import { renderAgentWorkflowReport } from "./adapters/inbound/cli/report-renderer.js";
|
|
4
|
+
import { runChangedAgentWorkflow } from "./application/use-cases/run-changed-agent-workflow.js";
|
|
5
|
+
import { loadAgentWorkflowPolicy } from "./contract/config.js";
|
|
6
|
+
export async function runAgentWorkflowChangedCommand(input) {
|
|
7
|
+
const controller = new AbortController();
|
|
8
|
+
const cancel = () => {
|
|
9
|
+
controller.abort();
|
|
10
|
+
};
|
|
11
|
+
process.once("SIGINT", cancel);
|
|
12
|
+
try {
|
|
13
|
+
const report = await runChangedAgentWorkflow({
|
|
14
|
+
consumerRoot: input.consumerRoot,
|
|
15
|
+
policy: await loadAgentWorkflowPolicy(input.consumerRoot, input.configPath, controller.signal),
|
|
16
|
+
...(input.baseRef === undefined ? {} : { baseRef: input.baseRef }),
|
|
17
|
+
signal: controller.signal
|
|
18
|
+
}, new GitRepositoryChangesReader(), new PnpmPackageScriptRunner(input.pnpmEnvironment));
|
|
19
|
+
process.stdout.write(input.format === "json"
|
|
20
|
+
? `${JSON.stringify(report, null, 2)}\n`
|
|
21
|
+
: renderAgentWorkflowReport(report));
|
|
22
|
+
process.exitCode = report.outcome === "passed" ? 0 : 1;
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
process.removeListener("SIGINT", cancel);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=changed-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-command.js","sourceRoot":"","sources":["../../../src/capabilities/repository-agent-workflow/changed-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AAEjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAMpD;IACC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C;YACE,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,MAAM,EAAE,MAAM,uBAAuB,CACnC,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,UAAU,EAChB,UAAU,CAAC,MAAM,CAClB;YACD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,EACD,IAAI,0BAA0B,EAAE,EAChC,IAAI,uBAAuB,CAAC,KAAK,CAAC,eAAe,CAAC,CACnD,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,MAAM,KAAK,MAAM;YACrB,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;YACxC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,CACtC,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RepositoryAgentWorkflowPolicy } from "../application/model/repository-agent-workflow.js";
|
|
2
|
+
export declare const CAPABILITY_ID: "repository.agent-workflow";
|
|
3
|
+
export declare const CAPABILITY_CONFIG_SCHEMA_VERSION: 1;
|
|
4
|
+
export declare function loadAgentWorkflowPolicy(consumerRoot: string, configPath: string, signal?: AbortSignal): Promise<RepositoryAgentWorkflowPolicy>;
|
|
5
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/repository-agent-workflow/contract/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,6BAA6B,EAC9B,MAAM,mDAAmD,CAAC;AAE3D,eAAO,MAAM,aAAa,EAAG,2BAAoC,CAAC;AAClE,eAAO,MAAM,gCAAgC,EAAG,CAAU,CAAC;AA4E3D,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,6BAA6B,CAAC,CA+DxC"}
|