@mc1global/opencode-jarvis 0.1.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/agent-registry/dtos.d.ts +66 -0
- package/dist/application/agent-registry/dtos.d.ts.map +1 -0
- package/dist/application/agent-registry/dtos.js +11 -0
- package/dist/application/agent-registry/dtos.js.map +1 -0
- package/dist/application/agent-registry/use-cases.d.ts +39 -0
- package/dist/application/agent-registry/use-cases.d.ts.map +1 -0
- package/dist/application/agent-registry/use-cases.js +222 -0
- package/dist/application/agent-registry/use-cases.js.map +1 -0
- package/dist/application/azure-sync/dtos.d.ts +210 -0
- package/dist/application/azure-sync/dtos.d.ts.map +1 -0
- package/dist/application/azure-sync/dtos.js +11 -0
- package/dist/application/azure-sync/dtos.js.map +1 -0
- package/dist/application/azure-sync/field-builders.d.ts +54 -0
- package/dist/application/azure-sync/field-builders.d.ts.map +1 -0
- package/dist/application/azure-sync/field-builders.js +166 -0
- package/dist/application/azure-sync/field-builders.js.map +1 -0
- package/dist/application/azure-sync/index.d.ts +16 -0
- package/dist/application/azure-sync/index.d.ts.map +1 -0
- package/dist/application/azure-sync/index.js +10 -0
- package/dist/application/azure-sync/index.js.map +1 -0
- package/dist/application/azure-sync/pr-use-cases.d.ts +39 -0
- package/dist/application/azure-sync/pr-use-cases.d.ts.map +1 -0
- package/dist/application/azure-sync/pr-use-cases.js +192 -0
- package/dist/application/azure-sync/pr-use-cases.js.map +1 -0
- package/dist/application/azure-sync/pull-use-cases.d.ts +43 -0
- package/dist/application/azure-sync/pull-use-cases.d.ts.map +1 -0
- package/dist/application/azure-sync/pull-use-cases.js +322 -0
- package/dist/application/azure-sync/pull-use-cases.js.map +1 -0
- package/dist/application/azure-sync/push-use-cases.d.ts +53 -0
- package/dist/application/azure-sync/push-use-cases.d.ts.map +1 -0
- package/dist/application/azure-sync/push-use-cases.js +341 -0
- package/dist/application/azure-sync/push-use-cases.js.map +1 -0
- package/dist/application/azure-sync/reverse-field-builder.d.ts +52 -0
- package/dist/application/azure-sync/reverse-field-builder.d.ts.map +1 -0
- package/dist/application/azure-sync/reverse-field-builder.js +130 -0
- package/dist/application/azure-sync/reverse-field-builder.js.map +1 -0
- package/dist/application/azure-sync/task-push-use-cases.d.ts +68 -0
- package/dist/application/azure-sync/task-push-use-cases.d.ts.map +1 -0
- package/dist/application/azure-sync/task-push-use-cases.js +162 -0
- package/dist/application/azure-sync/task-push-use-cases.js.map +1 -0
- package/dist/application/config/config-service.d.ts +64 -0
- package/dist/application/config/config-service.d.ts.map +1 -0
- package/dist/application/config/config-service.js +110 -0
- package/dist/application/config/config-service.js.map +1 -0
- package/dist/application/config/index.d.ts +5 -0
- package/dist/application/config/index.d.ts.map +1 -0
- package/dist/application/config/index.js +5 -0
- package/dist/application/config/index.js.map +1 -0
- package/dist/application/kanban/board-use-cases.d.ts.map +1 -1
- package/dist/application/kanban/board-use-cases.js +14 -0
- package/dist/application/kanban/board-use-cases.js.map +1 -1
- package/dist/application/kanban/card-use-cases.d.ts +21 -2
- package/dist/application/kanban/card-use-cases.d.ts.map +1 -1
- package/dist/application/kanban/card-use-cases.js +180 -1
- package/dist/application/kanban/card-use-cases.js.map +1 -1
- package/dist/application/kanban/dtos.d.ts +59 -0
- package/dist/application/kanban/dtos.d.ts.map +1 -1
- package/dist/application/mcp/index.d.ts +10 -0
- package/dist/application/mcp/index.d.ts.map +1 -0
- package/dist/application/mcp/index.js +8 -0
- package/dist/application/mcp/index.js.map +1 -0
- package/dist/application/mcp/middleware.d.ts +91 -0
- package/dist/application/mcp/middleware.d.ts.map +1 -0
- package/dist/application/mcp/middleware.js +84 -0
- package/dist/application/mcp/middleware.js.map +1 -0
- package/dist/application/mcp/tool-adapter.d.ts +72 -0
- package/dist/application/mcp/tool-adapter.d.ts.map +1 -0
- package/dist/application/mcp/tool-adapter.js +132 -0
- package/dist/application/mcp/tool-adapter.js.map +1 -0
- package/dist/application/pipeline/dtos.d.ts +135 -0
- package/dist/application/pipeline/dtos.d.ts.map +1 -0
- package/dist/application/pipeline/dtos.js +11 -0
- package/dist/application/pipeline/dtos.js.map +1 -0
- package/dist/application/pipeline/index.d.ts +8 -0
- package/dist/application/pipeline/index.d.ts.map +1 -0
- package/dist/application/pipeline/index.js +7 -0
- package/dist/application/pipeline/index.js.map +1 -0
- package/dist/application/pipeline/use-cases.d.ts +67 -0
- package/dist/application/pipeline/use-cases.d.ts.map +1 -0
- package/dist/application/pipeline/use-cases.js +413 -0
- package/dist/application/pipeline/use-cases.js.map +1 -0
- package/dist/application/rag/use-cases.d.ts +3 -0
- package/dist/application/rag/use-cases.d.ts.map +1 -1
- package/dist/application/rag/use-cases.js +112 -34
- package/dist/application/rag/use-cases.js.map +1 -1
- package/dist/domain/agent-registry/entities.d.ts +68 -0
- package/dist/domain/agent-registry/entities.d.ts.map +1 -0
- package/dist/domain/agent-registry/entities.js +177 -0
- package/dist/domain/agent-registry/entities.js.map +1 -0
- package/dist/domain/agent-registry/repositories.d.ts +56 -0
- package/dist/domain/agent-registry/repositories.d.ts.map +1 -0
- package/dist/domain/agent-registry/repositories.js +12 -0
- package/dist/domain/agent-registry/repositories.js.map +1 -0
- package/dist/domain/agent-registry/services.d.ts +87 -0
- package/dist/domain/agent-registry/services.d.ts.map +1 -0
- package/dist/domain/agent-registry/services.js +188 -0
- package/dist/domain/agent-registry/services.js.map +1 -0
- package/dist/domain/agent-registry/value-objects.d.ts +145 -0
- package/dist/domain/agent-registry/value-objects.d.ts.map +1 -0
- package/dist/domain/agent-registry/value-objects.js +339 -0
- package/dist/domain/agent-registry/value-objects.js.map +1 -0
- package/dist/domain/azure-sync/entities.d.ts +165 -0
- package/dist/domain/azure-sync/entities.d.ts.map +1 -0
- package/dist/domain/azure-sync/entities.js +203 -0
- package/dist/domain/azure-sync/entities.js.map +1 -0
- package/dist/domain/azure-sync/index.d.ts +16 -0
- package/dist/domain/azure-sync/index.d.ts.map +1 -0
- package/dist/domain/azure-sync/index.js +14 -0
- package/dist/domain/azure-sync/index.js.map +1 -0
- package/dist/domain/azure-sync/ports.d.ts +117 -0
- package/dist/domain/azure-sync/ports.d.ts.map +1 -0
- package/dist/domain/azure-sync/ports.js +13 -0
- package/dist/domain/azure-sync/ports.js.map +1 -0
- package/dist/domain/azure-sync/repositories.d.ts +53 -0
- package/dist/domain/azure-sync/repositories.d.ts.map +1 -0
- package/dist/domain/azure-sync/repositories.js +11 -0
- package/dist/domain/azure-sync/repositories.js.map +1 -0
- package/dist/domain/azure-sync/services.d.ts +107 -0
- package/dist/domain/azure-sync/services.d.ts.map +1 -0
- package/dist/domain/azure-sync/services.js +316 -0
- package/dist/domain/azure-sync/services.js.map +1 -0
- package/dist/domain/azure-sync/value-objects.d.ts +129 -0
- package/dist/domain/azure-sync/value-objects.d.ts.map +1 -0
- package/dist/domain/azure-sync/value-objects.js +343 -0
- package/dist/domain/azure-sync/value-objects.js.map +1 -0
- package/dist/domain/config/index.d.ts +9 -0
- package/dist/domain/config/index.d.ts.map +1 -0
- package/dist/domain/config/index.js +7 -0
- package/dist/domain/config/index.js.map +1 -0
- package/dist/domain/config/repositories.d.ts +36 -0
- package/dist/domain/config/repositories.d.ts.map +1 -0
- package/dist/domain/config/repositories.js +12 -0
- package/dist/domain/config/repositories.js.map +1 -0
- package/dist/domain/config/value-objects.d.ts +112 -0
- package/dist/domain/config/value-objects.d.ts.map +1 -0
- package/dist/domain/config/value-objects.js +93 -0
- package/dist/domain/config/value-objects.js.map +1 -0
- package/dist/domain/governance/policies.d.ts.map +1 -1
- package/dist/domain/governance/policies.js +70 -0
- package/dist/domain/governance/policies.js.map +1 -1
- package/dist/domain/kanban/entities.d.ts +67 -15
- package/dist/domain/kanban/entities.d.ts.map +1 -1
- package/dist/domain/kanban/entities.js +177 -14
- package/dist/domain/kanban/entities.js.map +1 -1
- package/dist/domain/kanban/grooming.d.ts +27 -7
- package/dist/domain/kanban/grooming.d.ts.map +1 -1
- package/dist/domain/kanban/grooming.js +50 -12
- package/dist/domain/kanban/grooming.js.map +1 -1
- package/dist/domain/kanban/services.d.ts +16 -2
- package/dist/domain/kanban/services.d.ts.map +1 -1
- package/dist/domain/kanban/services.js +29 -2
- package/dist/domain/kanban/services.js.map +1 -1
- package/dist/domain/kanban/value-objects.d.ts +48 -0
- package/dist/domain/kanban/value-objects.d.ts.map +1 -1
- package/dist/domain/kanban/value-objects.js +53 -0
- package/dist/domain/kanban/value-objects.js.map +1 -1
- package/dist/domain/pipeline/gate.d.ts +75 -0
- package/dist/domain/pipeline/gate.d.ts.map +1 -0
- package/dist/domain/pipeline/gate.js +158 -0
- package/dist/domain/pipeline/gate.js.map +1 -0
- package/dist/domain/pipeline/index.d.ts +13 -0
- package/dist/domain/pipeline/index.d.ts.map +1 -0
- package/dist/domain/pipeline/index.js +14 -0
- package/dist/domain/pipeline/index.js.map +1 -0
- package/dist/domain/pipeline/pipeline.d.ts +99 -0
- package/dist/domain/pipeline/pipeline.d.ts.map +1 -0
- package/dist/domain/pipeline/pipeline.js +257 -0
- package/dist/domain/pipeline/pipeline.js.map +1 -0
- package/dist/domain/pipeline/ports.d.ts +120 -0
- package/dist/domain/pipeline/ports.d.ts.map +1 -0
- package/dist/domain/pipeline/ports.js +12 -0
- package/dist/domain/pipeline/ports.js.map +1 -0
- package/dist/domain/pipeline/repositories.d.ts +66 -0
- package/dist/domain/pipeline/repositories.d.ts.map +1 -0
- package/dist/domain/pipeline/repositories.js +11 -0
- package/dist/domain/pipeline/repositories.js.map +1 -0
- package/dist/domain/pipeline/services.d.ts +77 -0
- package/dist/domain/pipeline/services.d.ts.map +1 -0
- package/dist/domain/pipeline/services.js +156 -0
- package/dist/domain/pipeline/services.js.map +1 -0
- package/dist/domain/pipeline/value-objects.d.ts +117 -0
- package/dist/domain/pipeline/value-objects.d.ts.map +1 -0
- package/dist/domain/pipeline/value-objects.js +313 -0
- package/dist/domain/pipeline/value-objects.js.map +1 -0
- package/dist/domain/rag/value-objects.d.ts +9 -2
- package/dist/domain/rag/value-objects.d.ts.map +1 -1
- package/dist/domain/rag/value-objects.js +8 -2
- package/dist/domain/rag/value-objects.js.map +1 -1
- package/dist/hooks/event-handlers.d.ts +3 -0
- package/dist/hooks/event-handlers.d.ts.map +1 -1
- package/dist/hooks/event-handlers.js +4 -2
- package/dist/hooks/event-handlers.js.map +1 -1
- package/dist/hooks/logger.d.ts +46 -0
- package/dist/hooks/logger.d.ts.map +1 -0
- package/dist/hooks/logger.js +79 -0
- package/dist/hooks/logger.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +152 -108
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts +29 -0
- package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts.map +1 -0
- package/dist/infrastructure/agent-registry/agent-profile-repository.js +109 -0
- package/dist/infrastructure/agent-registry/agent-profile-repository.js.map +1 -0
- package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts +28 -0
- package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts.map +1 -0
- package/dist/infrastructure/agent-registry/agent-session-adapter.js +61 -0
- package/dist/infrastructure/agent-registry/agent-session-adapter.js.map +1 -0
- package/dist/infrastructure/agent-registry/built-in-profiles.d.ts +19 -0
- package/dist/infrastructure/agent-registry/built-in-profiles.d.ts.map +1 -0
- package/dist/infrastructure/agent-registry/built-in-profiles.js +210 -0
- package/dist/infrastructure/agent-registry/built-in-profiles.js.map +1 -0
- package/dist/infrastructure/azure-sync/azure-auth.d.ts +40 -0
- package/dist/infrastructure/azure-sync/azure-auth.d.ts.map +1 -0
- package/dist/infrastructure/azure-sync/azure-auth.js +94 -0
- package/dist/infrastructure/azure-sync/azure-auth.js.map +1 -0
- package/dist/infrastructure/azure-sync/azure-devops-client.d.ts +43 -0
- package/dist/infrastructure/azure-sync/azure-devops-client.d.ts.map +1 -0
- package/dist/infrastructure/azure-sync/azure-devops-client.js +296 -0
- package/dist/infrastructure/azure-sync/azure-devops-client.js.map +1 -0
- package/dist/infrastructure/azure-sync/index.d.ts +9 -0
- package/dist/infrastructure/azure-sync/index.d.ts.map +1 -0
- package/dist/infrastructure/azure-sync/index.js +12 -0
- package/dist/infrastructure/azure-sync/index.js.map +1 -0
- package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts +39 -0
- package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts.map +1 -0
- package/dist/infrastructure/azure-sync/sqlite-sync-repository.js +202 -0
- package/dist/infrastructure/azure-sync/sqlite-sync-repository.js.map +1 -0
- package/dist/infrastructure/config/index.d.ts +5 -0
- package/dist/infrastructure/config/index.d.ts.map +1 -0
- package/dist/infrastructure/config/index.js +5 -0
- package/dist/infrastructure/config/index.js.map +1 -0
- package/dist/infrastructure/config/yaml-config-repository.d.ts +22 -0
- package/dist/infrastructure/config/yaml-config-repository.d.ts.map +1 -0
- package/dist/infrastructure/config/yaml-config-repository.js +68 -0
- package/dist/infrastructure/config/yaml-config-repository.js.map +1 -0
- package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts +21 -0
- package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts.map +1 -0
- package/dist/infrastructure/domain-map/llm-prompt-factory.js +49 -0
- package/dist/infrastructure/domain-map/llm-prompt-factory.js.map +1 -0
- package/dist/infrastructure/kanban/card-repository.d.ts +6 -0
- package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -1
- package/dist/infrastructure/kanban/card-repository.js +79 -7
- package/dist/infrastructure/kanban/card-repository.js.map +1 -1
- package/dist/infrastructure/pipeline/dagger-adapter.d.ts +50 -0
- package/dist/infrastructure/pipeline/dagger-adapter.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/dagger-adapter.js +153 -0
- package/dist/infrastructure/pipeline/dagger-adapter.js.map +1 -0
- package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts +35 -0
- package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/dagger-scaffold-generator.js +132 -0
- package/dist/infrastructure/pipeline/dagger-scaffold-generator.js.map +1 -0
- package/dist/infrastructure/pipeline/index.d.ts +20 -0
- package/dist/infrastructure/pipeline/index.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/index.js +19 -0
- package/dist/infrastructure/pipeline/index.js.map +1 -0
- package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts +23 -0
- package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/pipeline-template-registry.js +63 -0
- package/dist/infrastructure/pipeline/pipeline-template-registry.js.map +1 -0
- package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts +17 -0
- package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/scaffold-templates-extra.js +467 -0
- package/dist/infrastructure/pipeline/scaffold-templates-extra.js.map +1 -0
- package/dist/infrastructure/pipeline/scaffold-templates.d.ts +23 -0
- package/dist/infrastructure/pipeline/scaffold-templates.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/scaffold-templates.js +476 -0
- package/dist/infrastructure/pipeline/scaffold-templates.js.map +1 -0
- package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts +32 -0
- package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js +197 -0
- package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +300 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/tools/agent-registry-tools.d.ts +11 -0
- package/dist/tools/agent-registry-tools.d.ts.map +1 -0
- package/dist/tools/agent-registry-tools.js +208 -0
- package/dist/tools/agent-registry-tools.js.map +1 -0
- package/dist/tools/azure-sync-tools.d.ts +15 -0
- package/dist/tools/azure-sync-tools.d.ts.map +1 -0
- package/dist/tools/azure-sync-tools.js +332 -0
- package/dist/tools/azure-sync-tools.js.map +1 -0
- package/dist/tools/kanban-card-tools.d.ts.map +1 -1
- package/dist/tools/kanban-card-tools.js +41 -16
- package/dist/tools/kanban-card-tools.js.map +1 -1
- package/dist/tools/kanban-gate-tools.d.ts +7 -0
- package/dist/tools/kanban-gate-tools.d.ts.map +1 -0
- package/dist/tools/kanban-gate-tools.js +106 -0
- package/dist/tools/kanban-gate-tools.js.map +1 -0
- package/dist/tools/kanban-grooming-tools.d.ts +7 -0
- package/dist/tools/kanban-grooming-tools.d.ts.map +1 -0
- package/dist/tools/kanban-grooming-tools.js +180 -0
- package/dist/tools/kanban-grooming-tools.js.map +1 -0
- package/dist/tools/pipeline-tools.d.ts +15 -0
- package/dist/tools/pipeline-tools.d.ts.map +1 -0
- package/dist/tools/pipeline-tools.js +424 -0
- package/dist/tools/pipeline-tools.js.map +1 -0
- package/package.json +7 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/domain/governance/policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,0CAA0C;AAC1C,oBAAY,iBAAiB;IAC3B,qCAAqC;IACrC,KAAK,UAAU;IACf,+CAA+C;IAC/C,OAAO,YAAY;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACtC;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,SAAS,GAAG,IAAI,CAAC;CACrE;
|
|
1
|
+
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/domain/governance/policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,0CAA0C;AAC1C,oBAAY,iBAAiB;IAC3B,qCAAqC;IACrC,KAAK,UAAU;IACf,+CAA+C;IAC/C,OAAO,YAAY;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACtC;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,SAAS,GAAG,IAAI,CAAC;CACrE;AA+VD,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,EAAE,SAAS,UAAU,EAmBjD,CAAC"}
|
|
@@ -284,6 +284,71 @@ const blockShellSensitiveFileRead = {
|
|
|
284
284
|
return null;
|
|
285
285
|
},
|
|
286
286
|
};
|
|
287
|
+
// ── Pipeline Governance ───────────────────────────────────────────────
|
|
288
|
+
/** Warn when pipeline-init is called without a card_id argument. */
|
|
289
|
+
const warnPipelineNoCard = {
|
|
290
|
+
id: "pipeline.warn-no-card",
|
|
291
|
+
description: "Warns when creating a pipeline without linking it to a kanban card. " +
|
|
292
|
+
"Pipelines should be linked to cards for traceability.",
|
|
293
|
+
evaluate(ctx) {
|
|
294
|
+
if (ctx.toolName !== "pipeline-init")
|
|
295
|
+
return null;
|
|
296
|
+
const cardId = ctx.args["card_id"];
|
|
297
|
+
if (cardId === undefined || cardId === null || cardId === "") {
|
|
298
|
+
return {
|
|
299
|
+
rule: "pipeline.warn-no-card",
|
|
300
|
+
message: "Pipeline created without a linked card. Consider providing " +
|
|
301
|
+
"card_id for traceability and governance enforcement.",
|
|
302
|
+
severity: ViolationSeverity.Warning,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
return null;
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
// ── Kanban Governance ─────────────────────────────────────────────────
|
|
309
|
+
/**
|
|
310
|
+
* Block card transitions when required gate tasks are not met.
|
|
311
|
+
* Evaluates on kanban-card-move tool invocations.
|
|
312
|
+
* Note: actual gate enforcement is in CardDomainService — this policy
|
|
313
|
+
* provides an additional layer of visibility at the governance level.
|
|
314
|
+
*/
|
|
315
|
+
const requireGatesBeforeMove = {
|
|
316
|
+
id: "kanban.require-gates-before-move",
|
|
317
|
+
description: "Warn when moving a card — gate tasks should be verified before transitions. " +
|
|
318
|
+
"Actual enforcement is in the domain service.",
|
|
319
|
+
evaluate(ctx) {
|
|
320
|
+
if (ctx.toolName !== "kanban-card-move")
|
|
321
|
+
return null;
|
|
322
|
+
const status = ctx.args["status"];
|
|
323
|
+
// Warn on all forward moves to gated destinations
|
|
324
|
+
if (status === "review" || status === "tested" || status === "done") {
|
|
325
|
+
return {
|
|
326
|
+
rule: "kanban.require-gates-before-move",
|
|
327
|
+
message: `Moving card to "${String(status)}". Ensure all required gate tasks ` +
|
|
328
|
+
`are met. Use kanban-card-gate to verify before moving.`,
|
|
329
|
+
severity: ViolationSeverity.Warning,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
return null;
|
|
333
|
+
},
|
|
334
|
+
};
|
|
335
|
+
/**
|
|
336
|
+
* Warn on rapid successive card transitions.
|
|
337
|
+
* Actual interval enforcement is in CardDomainService,
|
|
338
|
+
* but this governance policy surfaces it as an advisory.
|
|
339
|
+
*/
|
|
340
|
+
const warnRapidTransitions = {
|
|
341
|
+
id: "kanban.warn-rapid-transitions",
|
|
342
|
+
description: "Warn when moving cards — rapid successive transitions may indicate " +
|
|
343
|
+
"rubber-stamping. Domain service enforces minimum interval.",
|
|
344
|
+
evaluate(ctx) {
|
|
345
|
+
if (ctx.toolName !== "kanban-card-move")
|
|
346
|
+
return null;
|
|
347
|
+
// This is advisory only — the domain service has the actual timestamp data
|
|
348
|
+
// and will reject transitions that are too fast.
|
|
349
|
+
return null;
|
|
350
|
+
},
|
|
351
|
+
};
|
|
287
352
|
// ── Default Policy Set ────────────────────────────────────────────────
|
|
288
353
|
/** All built-in governance policies. */
|
|
289
354
|
export const DEFAULT_POLICIES = [
|
|
@@ -300,5 +365,10 @@ export const DEFAULT_POLICIES = [
|
|
|
300
365
|
blockShellEnvFileRead,
|
|
301
366
|
blockSensitiveFileRead,
|
|
302
367
|
blockShellSensitiveFileRead,
|
|
368
|
+
// Pipeline governance
|
|
369
|
+
warnPipelineNoCard,
|
|
370
|
+
// Kanban governance
|
|
371
|
+
requireGatesBeforeMove,
|
|
372
|
+
warnRapidTransitions,
|
|
303
373
|
];
|
|
304
374
|
//# sourceMappingURL=policies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../../src/domain/governance/policies.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../../src/domain/governance/policies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Card Entity - Kanban Aggregate Root
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Includes: state machine enforcement, review iteration tracking,
|
|
9
|
-
* blocking/unblocking with previous status restoration.
|
|
4
|
+
* Primary work unit: backlog -> grooming -> ready -> doing ->
|
|
5
|
+
* review -> tested -> done. State machine enforcement, review
|
|
6
|
+
* iteration tracking, gate tasks, blocking/unblocking.
|
|
10
7
|
*
|
|
11
8
|
* DDD: Aggregate Root with state machine invariants
|
|
12
9
|
* SOLID: SRP - card lifecycle management only
|
|
13
10
|
*/
|
|
14
11
|
import { WorkspaceId, Timestamp } from "../shared/value-objects.js";
|
|
15
|
-
import { CardId, CardStatus, CARD_TRANSITIONS, Priority, EpicId, SprintId } from "./value-objects.js";
|
|
16
|
-
import type { StoryPoints } from "./value-objects.js";
|
|
17
|
-
export { CardId, CardStatus, Priority, EpicId, SprintId, WorkspaceId, CARD_TRANSITIONS, };
|
|
12
|
+
import { CardId, CardStatus, CARD_TRANSITIONS, Priority, EpicId, SprintId, ScopeDocPath, GATED_PHASES } from "./value-objects.js";
|
|
13
|
+
import type { StoryPoints, GateTask, GateTaskDefinition } from "./value-objects.js";
|
|
14
|
+
export { CardId, CardStatus, Priority, EpicId, SprintId, ScopeDocPath, WorkspaceId, CARD_TRANSITIONS, GATED_PHASES, };
|
|
15
|
+
export type { GateTask, GateTaskDefinition };
|
|
18
16
|
export interface AcceptanceCriterion {
|
|
19
17
|
readonly description: string;
|
|
20
18
|
readonly met: boolean;
|
|
@@ -31,12 +29,18 @@ export interface CardProps {
|
|
|
31
29
|
readonly storyPoints?: StoryPoints;
|
|
32
30
|
readonly assignedAgent?: string;
|
|
33
31
|
readonly acceptanceCriteria: readonly AcceptanceCriterion[];
|
|
32
|
+
readonly dependsOn: readonly CardId[];
|
|
33
|
+
readonly blockedBy: readonly CardId[];
|
|
34
|
+
readonly scopeDocPath?: ScopeDocPath;
|
|
34
35
|
readonly reviewIterations: number;
|
|
35
36
|
readonly previousStatus?: CardStatus;
|
|
36
37
|
readonly groomingCompleted: boolean;
|
|
37
38
|
readonly createdAt: Timestamp;
|
|
38
39
|
readonly startedAt?: Timestamp;
|
|
39
40
|
readonly completedAt?: Timestamp;
|
|
41
|
+
readonly pipelineId?: string;
|
|
42
|
+
readonly gateTasks: readonly GateTask[];
|
|
43
|
+
readonly lastTransitionAt?: Timestamp;
|
|
40
44
|
}
|
|
41
45
|
export declare class Card {
|
|
42
46
|
readonly id: CardId;
|
|
@@ -51,11 +55,17 @@ export declare class Card {
|
|
|
51
55
|
private _storyPoints;
|
|
52
56
|
private _assignedAgent;
|
|
53
57
|
private _acceptanceCriteria;
|
|
58
|
+
private _dependsOn;
|
|
59
|
+
private _blockedBy;
|
|
60
|
+
private _scopeDocPath;
|
|
54
61
|
private _reviewIterations;
|
|
55
62
|
private _previousStatus;
|
|
56
63
|
private _groomingCompleted;
|
|
57
64
|
private _startedAt;
|
|
58
65
|
private _completedAt;
|
|
66
|
+
private _pipelineId;
|
|
67
|
+
private _gateTasks;
|
|
68
|
+
private _lastTransitionAt;
|
|
59
69
|
private constructor();
|
|
60
70
|
get status(): CardStatus;
|
|
61
71
|
get priority(): Priority;
|
|
@@ -65,11 +75,22 @@ export declare class Card {
|
|
|
65
75
|
get storyPoints(): StoryPoints | undefined;
|
|
66
76
|
get assignedAgent(): string | undefined;
|
|
67
77
|
get acceptanceCriteria(): readonly AcceptanceCriterion[];
|
|
78
|
+
get dependsOn(): readonly CardId[];
|
|
79
|
+
get blockedBy(): readonly CardId[];
|
|
80
|
+
get scopeDocPath(): ScopeDocPath | undefined;
|
|
68
81
|
get reviewIterations(): number;
|
|
69
82
|
get previousStatus(): CardStatus | undefined;
|
|
70
83
|
get groomingCompleted(): boolean;
|
|
71
84
|
get startedAt(): Timestamp | undefined;
|
|
72
85
|
get completedAt(): Timestamp | undefined;
|
|
86
|
+
/** Optional linked pipeline identifier. */
|
|
87
|
+
get pipelineId(): string | undefined;
|
|
88
|
+
/** Current gate tasks for the card's active phase. */
|
|
89
|
+
get gateTasks(): readonly GateTask[];
|
|
90
|
+
/** Timestamp of the last status transition (for cooldown enforcement). */
|
|
91
|
+
get lastTransitionAt(): Timestamp | undefined;
|
|
92
|
+
/** Link this card to a pipeline run. */
|
|
93
|
+
linkPipeline(pipelineId: string): void;
|
|
73
94
|
/** Create a new card in Backlog status. */
|
|
74
95
|
static create(params: {
|
|
75
96
|
id: CardId;
|
|
@@ -81,21 +102,52 @@ export declare class Card {
|
|
|
81
102
|
}): Card;
|
|
82
103
|
/** Reconstitute from persistence. */
|
|
83
104
|
static reconstitute(props: CardProps): Card;
|
|
84
|
-
/**
|
|
85
|
-
* Move card to a new status.
|
|
86
|
-
* Enforces the state machine transition rules.
|
|
87
|
-
* Special handling for blocked (saves previous status) and
|
|
88
|
-
* review (tracks iteration count).
|
|
89
|
-
*/
|
|
105
|
+
/** Move card to a new status. Enforces state machine, review iterations, blocking. */
|
|
90
106
|
moveTo(newStatus: CardStatus): void;
|
|
91
107
|
/** Mark grooming as completed. Must be in Grooming status. */
|
|
92
108
|
completeGrooming(): void;
|
|
109
|
+
/**
|
|
110
|
+
* Initialize gate tasks from definitions for the current phase.
|
|
111
|
+
* Called when a card enters a gated phase (doing, review, tested).
|
|
112
|
+
* Replaces any existing gate tasks.
|
|
113
|
+
*/
|
|
114
|
+
initGateTasks(definitions: readonly GateTaskDefinition[]): void;
|
|
115
|
+
/**
|
|
116
|
+
* Mark a gate task as met with evidence.
|
|
117
|
+
* @param index 0-based index into the gateTasks array
|
|
118
|
+
* @param evidence Description of evidence (commit hash, test output, etc.)
|
|
119
|
+
*/
|
|
120
|
+
meetGateTask(index: number, evidence: string): void;
|
|
121
|
+
/**
|
|
122
|
+
* Auto-verify gate tasks that support automatic checking.
|
|
123
|
+
* Currently supports "ac-met" — checks if all acceptance criteria are met.
|
|
124
|
+
*/
|
|
125
|
+
autoVerifyGates(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Check if all required gate tasks for the current phase are met.
|
|
128
|
+
* Returns true if there are no gate tasks or all required ones are met.
|
|
129
|
+
*/
|
|
130
|
+
allRequiredGatesMet(): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Get list of unmet required gate tasks (for error messaging).
|
|
133
|
+
*/
|
|
134
|
+
unmetRequiredGates(): readonly GateTask[];
|
|
93
135
|
setDescription(description: string): void;
|
|
94
136
|
assignToEpic(epicId: EpicId): void;
|
|
95
137
|
assignToSprint(sprintId: SprintId): void;
|
|
96
138
|
setStoryPoints(points: StoryPoints): void;
|
|
97
139
|
assignAgent(agent: string): void;
|
|
98
140
|
setPriority(priority: Priority): void;
|
|
141
|
+
/** Link this card's scope document in the vault. */
|
|
142
|
+
setScopeDocPath(path: ScopeDocPath): void;
|
|
143
|
+
/** Add a dependency: this card depends on the given card. */
|
|
144
|
+
addDependsOn(cardId: CardId): void;
|
|
145
|
+
/** Remove a dependency. */
|
|
146
|
+
removeDependsOn(cardId: CardId): void;
|
|
147
|
+
/** Mark this card as blocked by another card. */
|
|
148
|
+
addBlockedBy(cardId: CardId): void;
|
|
149
|
+
/** Remove a blocker. */
|
|
150
|
+
removeBlockedBy(cardId: CardId): void;
|
|
99
151
|
addAcceptanceCriterion(description: string): void;
|
|
100
152
|
meetAcceptanceCriterion(index: number): void;
|
|
101
153
|
get isTerminal(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/kanban/entities.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/kanban/entities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Card Entity - Kanban Aggregate Root
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Includes: state machine enforcement, review iteration tracking,
|
|
9
|
-
* blocking/unblocking with previous status restoration.
|
|
4
|
+
* Primary work unit: backlog -> grooming -> ready -> doing ->
|
|
5
|
+
* review -> tested -> done. State machine enforcement, review
|
|
6
|
+
* iteration tracking, gate tasks, blocking/unblocking.
|
|
10
7
|
*
|
|
11
8
|
* DDD: Aggregate Root with state machine invariants
|
|
12
9
|
* SOLID: SRP - card lifecycle management only
|
|
13
10
|
*/
|
|
14
11
|
import { WorkspaceId, Timestamp } from "../shared/value-objects.js";
|
|
15
|
-
import { CardId, CardStatus, CARD_TRANSITIONS, MAX_REVIEW_ITERATIONS, Priority, EpicId, SprintId, } from "./value-objects.js";
|
|
12
|
+
import { CardId, CardStatus, CARD_TRANSITIONS, MAX_REVIEW_ITERATIONS, Priority, EpicId, SprintId, ScopeDocPath, GATED_PHASES, } from "./value-objects.js";
|
|
16
13
|
// Re-export for convenience (consumers import from entities)
|
|
17
|
-
export { CardId, CardStatus, Priority, EpicId, SprintId, WorkspaceId, CARD_TRANSITIONS, };
|
|
14
|
+
export { CardId, CardStatus, Priority, EpicId, SprintId, ScopeDocPath, WorkspaceId, CARD_TRANSITIONS, GATED_PHASES, };
|
|
18
15
|
export class Card {
|
|
19
16
|
id;
|
|
20
17
|
workspace;
|
|
@@ -28,11 +25,17 @@ export class Card {
|
|
|
28
25
|
_storyPoints;
|
|
29
26
|
_assignedAgent;
|
|
30
27
|
_acceptanceCriteria;
|
|
28
|
+
_dependsOn;
|
|
29
|
+
_blockedBy;
|
|
30
|
+
_scopeDocPath;
|
|
31
31
|
_reviewIterations;
|
|
32
32
|
_previousStatus;
|
|
33
33
|
_groomingCompleted;
|
|
34
34
|
_startedAt;
|
|
35
35
|
_completedAt;
|
|
36
|
+
_pipelineId;
|
|
37
|
+
_gateTasks;
|
|
38
|
+
_lastTransitionAt;
|
|
36
39
|
constructor(props) {
|
|
37
40
|
this.id = props.id;
|
|
38
41
|
this.workspace = props.workspace;
|
|
@@ -45,12 +48,18 @@ export class Card {
|
|
|
45
48
|
this._storyPoints = props.storyPoints;
|
|
46
49
|
this._assignedAgent = props.assignedAgent;
|
|
47
50
|
this._acceptanceCriteria = [...props.acceptanceCriteria];
|
|
51
|
+
this._dependsOn = [...props.dependsOn];
|
|
52
|
+
this._blockedBy = [...props.blockedBy];
|
|
53
|
+
this._scopeDocPath = props.scopeDocPath;
|
|
48
54
|
this._reviewIterations = props.reviewIterations;
|
|
49
55
|
this._previousStatus = props.previousStatus;
|
|
50
56
|
this._groomingCompleted = props.groomingCompleted;
|
|
51
57
|
this.createdAt = props.createdAt;
|
|
52
58
|
this._startedAt = props.startedAt;
|
|
53
59
|
this._completedAt = props.completedAt;
|
|
60
|
+
this._pipelineId = props.pipelineId;
|
|
61
|
+
this._gateTasks = [...props.gateTasks];
|
|
62
|
+
this._lastTransitionAt = props.lastTransitionAt;
|
|
54
63
|
}
|
|
55
64
|
// ── Getters ─────────────────────────────────────────────────────
|
|
56
65
|
get status() {
|
|
@@ -77,6 +86,15 @@ export class Card {
|
|
|
77
86
|
get acceptanceCriteria() {
|
|
78
87
|
return this._acceptanceCriteria;
|
|
79
88
|
}
|
|
89
|
+
get dependsOn() {
|
|
90
|
+
return this._dependsOn;
|
|
91
|
+
}
|
|
92
|
+
get blockedBy() {
|
|
93
|
+
return this._blockedBy;
|
|
94
|
+
}
|
|
95
|
+
get scopeDocPath() {
|
|
96
|
+
return this._scopeDocPath;
|
|
97
|
+
}
|
|
80
98
|
get reviewIterations() {
|
|
81
99
|
return this._reviewIterations;
|
|
82
100
|
}
|
|
@@ -92,6 +110,22 @@ export class Card {
|
|
|
92
110
|
get completedAt() {
|
|
93
111
|
return this._completedAt;
|
|
94
112
|
}
|
|
113
|
+
/** Optional linked pipeline identifier. */
|
|
114
|
+
get pipelineId() {
|
|
115
|
+
return this._pipelineId;
|
|
116
|
+
}
|
|
117
|
+
/** Current gate tasks for the card's active phase. */
|
|
118
|
+
get gateTasks() {
|
|
119
|
+
return this._gateTasks;
|
|
120
|
+
}
|
|
121
|
+
/** Timestamp of the last status transition (for cooldown enforcement). */
|
|
122
|
+
get lastTransitionAt() {
|
|
123
|
+
return this._lastTransitionAt;
|
|
124
|
+
}
|
|
125
|
+
/** Link this card to a pipeline run. */
|
|
126
|
+
linkPipeline(pipelineId) {
|
|
127
|
+
this._pipelineId = pipelineId;
|
|
128
|
+
}
|
|
95
129
|
// ── Factory Methods ─────────────────────────────────────────────
|
|
96
130
|
/** Create a new card in Backlog status. */
|
|
97
131
|
static create(params) {
|
|
@@ -110,6 +144,9 @@ export class Card {
|
|
|
110
144
|
: {}),
|
|
111
145
|
...(params.epicId !== undefined ? { epicId: params.epicId } : {}),
|
|
112
146
|
acceptanceCriteria: [],
|
|
147
|
+
dependsOn: [],
|
|
148
|
+
blockedBy: [],
|
|
149
|
+
gateTasks: [],
|
|
113
150
|
reviewIterations: 0,
|
|
114
151
|
groomingCompleted: false,
|
|
115
152
|
createdAt: Timestamp.now(),
|
|
@@ -120,12 +157,7 @@ export class Card {
|
|
|
120
157
|
return new Card(props);
|
|
121
158
|
}
|
|
122
159
|
// ── State Transitions ───────────────────────────────────────────
|
|
123
|
-
/**
|
|
124
|
-
* Move card to a new status.
|
|
125
|
-
* Enforces the state machine transition rules.
|
|
126
|
-
* Special handling for blocked (saves previous status) and
|
|
127
|
-
* review (tracks iteration count).
|
|
128
|
-
*/
|
|
160
|
+
/** Move card to a new status. Enforces state machine, review iterations, blocking. */
|
|
129
161
|
moveTo(newStatus) {
|
|
130
162
|
const allowed = CARD_TRANSITIONS[this._status];
|
|
131
163
|
if (!allowed.includes(newStatus)) {
|
|
@@ -142,6 +174,10 @@ export class Card {
|
|
|
142
174
|
if (newStatus === CardStatus.Blocked) {
|
|
143
175
|
this._previousStatus = this._status;
|
|
144
176
|
}
|
|
177
|
+
// Reset grooming when card returns to backlog (needs re-grooming)
|
|
178
|
+
if (newStatus === CardStatus.Backlog) {
|
|
179
|
+
this._groomingCompleted = false;
|
|
180
|
+
}
|
|
145
181
|
// Track lifecycle timestamps
|
|
146
182
|
if (newStatus === CardStatus.Doing && this._startedAt === undefined) {
|
|
147
183
|
this._startedAt = Timestamp.now();
|
|
@@ -150,6 +186,7 @@ export class Card {
|
|
|
150
186
|
this._completedAt = Timestamp.now();
|
|
151
187
|
}
|
|
152
188
|
this._status = newStatus;
|
|
189
|
+
this._lastTransitionAt = Timestamp.now();
|
|
153
190
|
}
|
|
154
191
|
/** Mark grooming as completed. Must be in Grooming status. */
|
|
155
192
|
completeGrooming() {
|
|
@@ -158,6 +195,83 @@ export class Card {
|
|
|
158
195
|
}
|
|
159
196
|
this._groomingCompleted = true;
|
|
160
197
|
}
|
|
198
|
+
// ── Gate Task Operations ─────────────────────────────────────────
|
|
199
|
+
/**
|
|
200
|
+
* Initialize gate tasks from definitions for the current phase.
|
|
201
|
+
* Called when a card enters a gated phase (doing, review, tested).
|
|
202
|
+
* Replaces any existing gate tasks.
|
|
203
|
+
*/
|
|
204
|
+
initGateTasks(definitions) {
|
|
205
|
+
this._gateTasks = definitions.map((def) => ({
|
|
206
|
+
description: def.description,
|
|
207
|
+
phase: this._status,
|
|
208
|
+
required: def.required,
|
|
209
|
+
autoVerify: def.autoVerify,
|
|
210
|
+
met: false,
|
|
211
|
+
evidence: undefined,
|
|
212
|
+
metAt: undefined,
|
|
213
|
+
}));
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Mark a gate task as met with evidence.
|
|
217
|
+
* @param index 0-based index into the gateTasks array
|
|
218
|
+
* @param evidence Description of evidence (commit hash, test output, etc.)
|
|
219
|
+
*/
|
|
220
|
+
meetGateTask(index, evidence) {
|
|
221
|
+
const gate = this._gateTasks[index];
|
|
222
|
+
if (gate === undefined) {
|
|
223
|
+
throw new Error(`Card: gate task at index ${index} not found`);
|
|
224
|
+
}
|
|
225
|
+
if (gate.met) {
|
|
226
|
+
throw new Error(`Card: gate task at index ${index} is already met`);
|
|
227
|
+
}
|
|
228
|
+
const trimmed = evidence.trim();
|
|
229
|
+
if (trimmed.length === 0) {
|
|
230
|
+
throw new Error("Card: gate task evidence cannot be empty");
|
|
231
|
+
}
|
|
232
|
+
this._gateTasks[index] = {
|
|
233
|
+
...gate,
|
|
234
|
+
met: true,
|
|
235
|
+
evidence: trimmed,
|
|
236
|
+
metAt: new Date().toISOString(),
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Auto-verify gate tasks that support automatic checking.
|
|
241
|
+
* Currently supports "ac-met" — checks if all acceptance criteria are met.
|
|
242
|
+
*/
|
|
243
|
+
autoVerifyGates() {
|
|
244
|
+
const allAcMet = this._acceptanceCriteria.length > 0 &&
|
|
245
|
+
this._acceptanceCriteria.every((ac) => ac.met);
|
|
246
|
+
for (let i = 0; i < this._gateTasks.length; i++) {
|
|
247
|
+
const gate = this._gateTasks[i];
|
|
248
|
+
if (gate === undefined || gate.met)
|
|
249
|
+
continue;
|
|
250
|
+
if (gate.autoVerify === "ac-met" && allAcMet) {
|
|
251
|
+
this._gateTasks[i] = {
|
|
252
|
+
...gate,
|
|
253
|
+
met: true,
|
|
254
|
+
evidence: "Auto-verified: all acceptance criteria met",
|
|
255
|
+
metAt: new Date().toISOString(),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Check if all required gate tasks for the current phase are met.
|
|
262
|
+
* Returns true if there are no gate tasks or all required ones are met.
|
|
263
|
+
*/
|
|
264
|
+
allRequiredGatesMet() {
|
|
265
|
+
return this._gateTasks
|
|
266
|
+
.filter((g) => g.required)
|
|
267
|
+
.every((g) => g.met);
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get list of unmet required gate tasks (for error messaging).
|
|
271
|
+
*/
|
|
272
|
+
unmetRequiredGates() {
|
|
273
|
+
return this._gateTasks.filter((g) => g.required && !g.met);
|
|
274
|
+
}
|
|
161
275
|
// ── Mutators ────────────────────────────────────────────────────
|
|
162
276
|
setDescription(description) {
|
|
163
277
|
this._description = description.trim();
|
|
@@ -181,6 +295,46 @@ export class Card {
|
|
|
181
295
|
setPriority(priority) {
|
|
182
296
|
this._priority = priority;
|
|
183
297
|
}
|
|
298
|
+
/** Link this card's scope document in the vault. */
|
|
299
|
+
setScopeDocPath(path) {
|
|
300
|
+
this._scopeDocPath = path;
|
|
301
|
+
}
|
|
302
|
+
/** Add a dependency: this card depends on the given card. */
|
|
303
|
+
addDependsOn(cardId) {
|
|
304
|
+
if (cardId.equals(this.id)) {
|
|
305
|
+
throw new Error("Card: cannot depend on itself");
|
|
306
|
+
}
|
|
307
|
+
if (this._dependsOn.some((id) => id.equals(cardId))) {
|
|
308
|
+
throw new Error(`Card: already depends on ${cardId.value}`);
|
|
309
|
+
}
|
|
310
|
+
this._dependsOn.push(cardId);
|
|
311
|
+
}
|
|
312
|
+
/** Remove a dependency. */
|
|
313
|
+
removeDependsOn(cardId) {
|
|
314
|
+
const index = this._dependsOn.findIndex((id) => id.equals(cardId));
|
|
315
|
+
if (index === -1) {
|
|
316
|
+
throw new Error(`Card: dependency on ${cardId.value} not found`);
|
|
317
|
+
}
|
|
318
|
+
this._dependsOn.splice(index, 1);
|
|
319
|
+
}
|
|
320
|
+
/** Mark this card as blocked by another card. */
|
|
321
|
+
addBlockedBy(cardId) {
|
|
322
|
+
if (cardId.equals(this.id)) {
|
|
323
|
+
throw new Error("Card: cannot be blocked by itself");
|
|
324
|
+
}
|
|
325
|
+
if (this._blockedBy.some((id) => id.equals(cardId))) {
|
|
326
|
+
throw new Error(`Card: already blocked by ${cardId.value}`);
|
|
327
|
+
}
|
|
328
|
+
this._blockedBy.push(cardId);
|
|
329
|
+
}
|
|
330
|
+
/** Remove a blocker. */
|
|
331
|
+
removeBlockedBy(cardId) {
|
|
332
|
+
const index = this._blockedBy.findIndex((id) => id.equals(cardId));
|
|
333
|
+
if (index === -1) {
|
|
334
|
+
throw new Error(`Card: blocker ${cardId.value} not found`);
|
|
335
|
+
}
|
|
336
|
+
this._blockedBy.splice(index, 1);
|
|
337
|
+
}
|
|
184
338
|
addAcceptanceCriterion(description) {
|
|
185
339
|
const trimmed = description.trim();
|
|
186
340
|
if (trimmed.length === 0) {
|
|
@@ -189,6 +343,15 @@ export class Card {
|
|
|
189
343
|
this._acceptanceCriteria.push({ description: trimmed, met: false });
|
|
190
344
|
}
|
|
191
345
|
meetAcceptanceCriterion(index) {
|
|
346
|
+
const allowedStatuses = [
|
|
347
|
+
CardStatus.Doing,
|
|
348
|
+
CardStatus.Review,
|
|
349
|
+
CardStatus.Tested,
|
|
350
|
+
];
|
|
351
|
+
if (!allowedStatuses.includes(this._status)) {
|
|
352
|
+
throw new Error(`Card: acceptance criteria can only be met in doing/review/tested status, ` +
|
|
353
|
+
`current: "${this._status}"`);
|
|
354
|
+
}
|
|
192
355
|
const criterion = this._acceptanceCriteria[index];
|
|
193
356
|
if (criterion === undefined) {
|
|
194
357
|
throw new Error(`Card: acceptance criterion at index ${index} not found`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/domain/kanban/entities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/domain/kanban/entities.ts"],"names":[],"mappings":"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"}
|