@mc1global/opencode-jarvis 0.1.1 → 0.3.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/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/index.d.ts.map +1 -1
- package/dist/index.js +113 -75
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-session-adapter.js","sourceRoot":"","sources":["../../../src/infrastructure/agent-registry/agent-session-adapter.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;IAAG,CAAC;IAEvD,KAAK,CAAC,aAAa,CAAC,MAGnB;QACC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACpD,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE;SAC1C,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAEvC,8CAA8C;QAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/B,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;YACvB,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,YAAY;gBAC3B,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;oBAC9B,CAAC,CAAC;wBACE,KAAK,EAAE;4BACL,UAAU,EAAE,WAAW;4BACvB,OAAO,EAAE,MAAM,CAAC,OAAO;yBACxB;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,sDAAsD;qBAC7D;iBACF;aACF;SACF,CAAC,CAAC;QAEH,OAAO;YACL,EAAE,EAAE,SAAS;YACb,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAGhB;QACC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/B,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE;YAC9B,IAAI,EAAE;gBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;aACzD;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrD,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in Agent Profiles
|
|
3
|
+
*
|
|
4
|
+
* Defines the 5 standard agent profiles that ship with JARVIS.
|
|
5
|
+
* These are registered at plugin boot via registerOrUpdate() to
|
|
6
|
+
* ensure they always exist with current definitions.
|
|
7
|
+
*
|
|
8
|
+
* Profiles: release-manager, code-reviewer, tester, documenter, security-auditor
|
|
9
|
+
*
|
|
10
|
+
* SOLID: SRP - built-in profile definitions only
|
|
11
|
+
* SOLID: OCP - new profiles can be added without modifying existing ones
|
|
12
|
+
*/
|
|
13
|
+
import type { AgentProfileRegistrationData } from "../../domain/agent-registry/value-objects.js";
|
|
14
|
+
/**
|
|
15
|
+
* All built-in agent profiles shipped with JARVIS.
|
|
16
|
+
* Registered at plugin boot via AgentRegistryService.registerOrUpdate().
|
|
17
|
+
*/
|
|
18
|
+
export declare const BUILT_IN_PROFILES: readonly AgentProfileRegistrationData[];
|
|
19
|
+
//# sourceMappingURL=built-in-profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-in-profiles.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/agent-registry/built-in-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAgNjG;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,4BAA4B,EAMpE,CAAC"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in Agent Profiles
|
|
3
|
+
*
|
|
4
|
+
* Defines the 5 standard agent profiles that ship with JARVIS.
|
|
5
|
+
* These are registered at plugin boot via registerOrUpdate() to
|
|
6
|
+
* ensure they always exist with current definitions.
|
|
7
|
+
*
|
|
8
|
+
* Profiles: release-manager, code-reviewer, tester, documenter, security-auditor
|
|
9
|
+
*
|
|
10
|
+
* SOLID: SRP - built-in profile definitions only
|
|
11
|
+
* SOLID: OCP - new profiles can be added without modifying existing ones
|
|
12
|
+
*/
|
|
13
|
+
import { AgentProfileId, SystemPrompt, ModelPreference, AgentCapabilities, AllowedTools, } from "../../domain/agent-registry/value-objects.js";
|
|
14
|
+
// ── Release Manager ──────────────────────────────────────────────────
|
|
15
|
+
const releaseManager = {
|
|
16
|
+
id: AgentProfileId.create("release-manager"),
|
|
17
|
+
displayName: "Release Manager",
|
|
18
|
+
role: "release-manager",
|
|
19
|
+
systemPrompt: SystemPrompt.create("You are a Release Manager agent specialized in software release workflows. " +
|
|
20
|
+
"Your responsibilities include:\n" +
|
|
21
|
+
"- Managing version bumps (semver) and changelog generation\n" +
|
|
22
|
+
"- Coordinating release pipelines and gate approvals\n" +
|
|
23
|
+
"- Validating that all acceptance criteria and quality gates pass before release\n" +
|
|
24
|
+
"- Creating and managing git tags and GitHub releases\n" +
|
|
25
|
+
"- Monitoring deployment status and rollback procedures\n\n" +
|
|
26
|
+
"Always follow the project's branching strategy. Never force-push to main. " +
|
|
27
|
+
"Require explicit approval before publishing to package registries."),
|
|
28
|
+
modelPreference: ModelPreference.create("default"),
|
|
29
|
+
capabilities: AgentCapabilities.create([
|
|
30
|
+
"release-management",
|
|
31
|
+
"version-control",
|
|
32
|
+
"changelog-generation",
|
|
33
|
+
"pipeline-execution",
|
|
34
|
+
"deployment-coordination",
|
|
35
|
+
]),
|
|
36
|
+
allowedTools: AllowedTools.create([
|
|
37
|
+
"kanban-card-move",
|
|
38
|
+
"kanban-card-get",
|
|
39
|
+
"kanban-card-criteria-meet",
|
|
40
|
+
"kanban-sprint-get",
|
|
41
|
+
"context-session-start",
|
|
42
|
+
"context-session-finish",
|
|
43
|
+
"context-note-add",
|
|
44
|
+
"context-todo-add",
|
|
45
|
+
"context-todo-complete",
|
|
46
|
+
"workspace-info",
|
|
47
|
+
]),
|
|
48
|
+
builtIn: true,
|
|
49
|
+
};
|
|
50
|
+
// ── Code Reviewer ────────────────────────────────────────────────────
|
|
51
|
+
const codeReviewer = {
|
|
52
|
+
id: AgentProfileId.create("code-reviewer"),
|
|
53
|
+
displayName: "Code Reviewer",
|
|
54
|
+
role: "code-reviewer",
|
|
55
|
+
systemPrompt: SystemPrompt.create("You are a Code Reviewer agent specialized in thorough code analysis. " +
|
|
56
|
+
"Your responsibilities include:\n" +
|
|
57
|
+
"- Reviewing code changes for correctness, maintainability, and SOLID compliance\n" +
|
|
58
|
+
"- Identifying potential bugs, security issues, and performance problems\n" +
|
|
59
|
+
"- Enforcing DDD patterns: proper domain boundaries, value objects, entities\n" +
|
|
60
|
+
"- Checking for SRP violations and files exceeding 500 lines\n" +
|
|
61
|
+
"- Verifying test coverage and test quality\n\n" +
|
|
62
|
+
"Be constructive but rigorous. Flag all issues with severity (critical/warning/info). " +
|
|
63
|
+
"Always reference specific file paths and line numbers."),
|
|
64
|
+
modelPreference: ModelPreference.create("default"),
|
|
65
|
+
capabilities: AgentCapabilities.create([
|
|
66
|
+
"code-review",
|
|
67
|
+
"static-analysis",
|
|
68
|
+
"architecture-validation",
|
|
69
|
+
"solid-compliance",
|
|
70
|
+
"ddd-patterns",
|
|
71
|
+
]),
|
|
72
|
+
allowedTools: AllowedTools.create([
|
|
73
|
+
"kanban-card-get",
|
|
74
|
+
"kanban-card-criteria-meet",
|
|
75
|
+
"context-session-start",
|
|
76
|
+
"context-session-finish",
|
|
77
|
+
"context-note-add",
|
|
78
|
+
"context-todo-add",
|
|
79
|
+
"context-todo-complete",
|
|
80
|
+
"rag-search",
|
|
81
|
+
"rag-snippet",
|
|
82
|
+
"domain-map-view",
|
|
83
|
+
]),
|
|
84
|
+
builtIn: true,
|
|
85
|
+
};
|
|
86
|
+
// ── Tester ───────────────────────────────────────────────────────────
|
|
87
|
+
const tester = {
|
|
88
|
+
id: AgentProfileId.create("tester"),
|
|
89
|
+
displayName: "Tester",
|
|
90
|
+
role: "tester",
|
|
91
|
+
systemPrompt: SystemPrompt.create("You are a Testing agent specialized in comprehensive test development. " +
|
|
92
|
+
"Your responsibilities include:\n" +
|
|
93
|
+
"- Writing unit tests, integration tests, and acceptance tests\n" +
|
|
94
|
+
"- Ensuring test coverage for all acceptance criteria on kanban cards\n" +
|
|
95
|
+
"- Validating edge cases, error handling, and boundary conditions\n" +
|
|
96
|
+
"- Running test suites and reporting results with clear pass/fail status\n" +
|
|
97
|
+
"- Maintaining test fixtures and mocks following project conventions\n\n" +
|
|
98
|
+
"Use the project's testing framework (Jest). Follow existing test patterns. " +
|
|
99
|
+
"Tests must be deterministic and not depend on external services."),
|
|
100
|
+
modelPreference: ModelPreference.create("default"),
|
|
101
|
+
capabilities: AgentCapabilities.create([
|
|
102
|
+
"unit-testing",
|
|
103
|
+
"integration-testing",
|
|
104
|
+
"test-coverage-analysis",
|
|
105
|
+
"fixture-management",
|
|
106
|
+
"tdd",
|
|
107
|
+
]),
|
|
108
|
+
allowedTools: AllowedTools.create([
|
|
109
|
+
"kanban-card-get",
|
|
110
|
+
"kanban-card-criteria-meet",
|
|
111
|
+
"kanban-card-move",
|
|
112
|
+
"context-session-start",
|
|
113
|
+
"context-session-finish",
|
|
114
|
+
"context-note-add",
|
|
115
|
+
"context-todo-add",
|
|
116
|
+
"context-todo-complete",
|
|
117
|
+
"rag-search",
|
|
118
|
+
"rag-snippet",
|
|
119
|
+
]),
|
|
120
|
+
builtIn: true,
|
|
121
|
+
};
|
|
122
|
+
// ── Documenter ───────────────────────────────────────────────────────
|
|
123
|
+
const documenter = {
|
|
124
|
+
id: AgentProfileId.create("documenter"),
|
|
125
|
+
displayName: "Documenter",
|
|
126
|
+
role: "documenter",
|
|
127
|
+
systemPrompt: SystemPrompt.create("You are a Documentation agent specialized in technical writing. " +
|
|
128
|
+
"Your responsibilities include:\n" +
|
|
129
|
+
"- Writing and updating Obsidian vault documentation\n" +
|
|
130
|
+
"- Creating domain reference documents for bounded contexts\n" +
|
|
131
|
+
"- Maintaining migration dashboards and phase documentation\n" +
|
|
132
|
+
"- Generating API documentation and architectural decision records\n" +
|
|
133
|
+
"- Keeping README files and inline code documentation current\n\n" +
|
|
134
|
+
"Use the vault-* tools for Obsidian operations. Follow existing document " +
|
|
135
|
+
"structure and templates. Keep documentation concise and actionable."),
|
|
136
|
+
modelPreference: ModelPreference.create("default"),
|
|
137
|
+
capabilities: AgentCapabilities.create([
|
|
138
|
+
"technical-writing",
|
|
139
|
+
"vault-management",
|
|
140
|
+
"api-documentation",
|
|
141
|
+
"architecture-docs",
|
|
142
|
+
"adr-authoring",
|
|
143
|
+
]),
|
|
144
|
+
allowedTools: AllowedTools.create([
|
|
145
|
+
"vault-manage",
|
|
146
|
+
"vault-doc-create",
|
|
147
|
+
"vault-doc-list",
|
|
148
|
+
"vault-doc-search",
|
|
149
|
+
"vault-doc-section-read",
|
|
150
|
+
"vault-doc-section-write",
|
|
151
|
+
"vault-frontmatter-read",
|
|
152
|
+
"vault-frontmatter-write",
|
|
153
|
+
"vault-table-read",
|
|
154
|
+
"vault-table-row-add",
|
|
155
|
+
"vault-table-row-update",
|
|
156
|
+
"context-session-start",
|
|
157
|
+
"context-session-finish",
|
|
158
|
+
"context-note-add",
|
|
159
|
+
"domain-map-view",
|
|
160
|
+
]),
|
|
161
|
+
builtIn: true,
|
|
162
|
+
};
|
|
163
|
+
// ── Security Auditor ─────────────────────────────────────────────────
|
|
164
|
+
const securityAuditor = {
|
|
165
|
+
id: AgentProfileId.create("security-auditor"),
|
|
166
|
+
displayName: "Security Auditor",
|
|
167
|
+
role: "security-auditor",
|
|
168
|
+
systemPrompt: SystemPrompt.create("You are a Security Auditor agent specialized in code security analysis. " +
|
|
169
|
+
"Your responsibilities include:\n" +
|
|
170
|
+
"- Scanning for common vulnerability patterns (injection, XSS, CSRF, etc.)\n" +
|
|
171
|
+
"- Reviewing dependency security (CVEs, outdated packages)\n" +
|
|
172
|
+
"- Validating input sanitization and output encoding\n" +
|
|
173
|
+
"- Checking secrets management (no hardcoded credentials or API keys)\n" +
|
|
174
|
+
"- Enforcing least-privilege access patterns\n\n" +
|
|
175
|
+
"Report findings with severity (critical/high/medium/low) and remediation steps. " +
|
|
176
|
+
"Never dismiss security concerns as unlikely. Flag all potential issues."),
|
|
177
|
+
modelPreference: ModelPreference.create("default"),
|
|
178
|
+
capabilities: AgentCapabilities.create([
|
|
179
|
+
"vulnerability-scanning",
|
|
180
|
+
"dependency-audit",
|
|
181
|
+
"secrets-detection",
|
|
182
|
+
"access-control-review",
|
|
183
|
+
"security-reporting",
|
|
184
|
+
]),
|
|
185
|
+
allowedTools: AllowedTools.create([
|
|
186
|
+
"kanban-card-get",
|
|
187
|
+
"context-session-start",
|
|
188
|
+
"context-session-finish",
|
|
189
|
+
"context-note-add",
|
|
190
|
+
"context-todo-add",
|
|
191
|
+
"context-todo-complete",
|
|
192
|
+
"rag-search",
|
|
193
|
+
"rag-snippet",
|
|
194
|
+
"governance-policies",
|
|
195
|
+
]),
|
|
196
|
+
builtIn: true,
|
|
197
|
+
};
|
|
198
|
+
// ── Export ────────────────────────────────────────────────────────────
|
|
199
|
+
/**
|
|
200
|
+
* All built-in agent profiles shipped with JARVIS.
|
|
201
|
+
* Registered at plugin boot via AgentRegistryService.registerOrUpdate().
|
|
202
|
+
*/
|
|
203
|
+
export const BUILT_IN_PROFILES = [
|
|
204
|
+
releaseManager,
|
|
205
|
+
codeReviewer,
|
|
206
|
+
tester,
|
|
207
|
+
documenter,
|
|
208
|
+
securityAuditor,
|
|
209
|
+
];
|
|
210
|
+
//# sourceMappingURL=built-in-profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-in-profiles.js","sourceRoot":"","sources":["../../../src/infrastructure/agent-registry/built-in-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,MAAM,8CAA8C,CAAC;AAGtD,wEAAwE;AAExE,MAAM,cAAc,GAAiC;IACnD,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAC5C,WAAW,EAAE,iBAAiB;IAC9B,IAAI,EAAE,iBAAiB;IACvB,YAAY,EAAE,YAAY,CAAC,MAAM,CAC/B,6EAA6E;QAC3E,kCAAkC;QAClC,8DAA8D;QAC9D,uDAAuD;QACvD,mFAAmF;QACnF,wDAAwD;QACxD,4DAA4D;QAC5D,4EAA4E;QAC5E,oEAAoE,CACvE;IACD,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;IAClD,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACrC,oBAAoB;QACpB,iBAAiB;QACjB,sBAAsB;QACtB,oBAAoB;QACpB,yBAAyB;KAC1B,CAAC;IACF,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;QAChC,kBAAkB;QAClB,iBAAiB;QACjB,2BAA2B;QAC3B,mBAAmB;QACnB,uBAAuB;QACvB,wBAAwB;QACxB,kBAAkB;QAClB,kBAAkB;QAClB,uBAAuB;QACvB,gBAAgB;KACjB,CAAC;IACF,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,wEAAwE;AAExE,MAAM,YAAY,GAAiC;IACjD,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC;IAC1C,WAAW,EAAE,eAAe;IAC5B,IAAI,EAAE,eAAe;IACrB,YAAY,EAAE,YAAY,CAAC,MAAM,CAC/B,uEAAuE;QACrE,kCAAkC;QAClC,mFAAmF;QACnF,2EAA2E;QAC3E,+EAA+E;QAC/E,+DAA+D;QAC/D,gDAAgD;QAChD,uFAAuF;QACvF,wDAAwD,CAC3D;IACD,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;IAClD,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACrC,aAAa;QACb,iBAAiB;QACjB,yBAAyB;QACzB,kBAAkB;QAClB,cAAc;KACf,CAAC;IACF,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;QAChC,iBAAiB;QACjB,2BAA2B;QAC3B,uBAAuB;QACvB,wBAAwB;QACxB,kBAAkB;QAClB,kBAAkB;QAClB,uBAAuB;QACvB,YAAY;QACZ,aAAa;QACb,iBAAiB;KAClB,CAAC;IACF,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,wEAAwE;AAExE,MAAM,MAAM,GAAiC;IAC3C,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;IACnC,WAAW,EAAE,QAAQ;IACrB,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,YAAY,CAAC,MAAM,CAC/B,yEAAyE;QACvE,kCAAkC;QAClC,iEAAiE;QACjE,wEAAwE;QACxE,oEAAoE;QACpE,2EAA2E;QAC3E,yEAAyE;QACzE,6EAA6E;QAC7E,kEAAkE,CACrE;IACD,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;IAClD,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACrC,cAAc;QACd,qBAAqB;QACrB,wBAAwB;QACxB,oBAAoB;QACpB,KAAK;KACN,CAAC;IACF,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;QAChC,iBAAiB;QACjB,2BAA2B;QAC3B,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;QACxB,kBAAkB;QAClB,kBAAkB;QAClB,uBAAuB;QACvB,YAAY;QACZ,aAAa;KACd,CAAC;IACF,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,wEAAwE;AAExE,MAAM,UAAU,GAAiC;IAC/C,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC;IACvC,WAAW,EAAE,YAAY;IACzB,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,YAAY,CAAC,MAAM,CAC/B,kEAAkE;QAChE,kCAAkC;QAClC,uDAAuD;QACvD,8DAA8D;QAC9D,8DAA8D;QAC9D,qEAAqE;QACrE,kEAAkE;QAClE,0EAA0E;QAC1E,qEAAqE,CACxE;IACD,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;IAClD,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACrC,mBAAmB;QACnB,kBAAkB;QAClB,mBAAmB;QACnB,mBAAmB;QACnB,eAAe;KAChB,CAAC;IACF,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;QAChC,cAAc;QACd,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,wBAAwB;QACxB,yBAAyB;QACzB,wBAAwB;QACxB,yBAAyB;QACzB,kBAAkB;QAClB,qBAAqB;QACrB,wBAAwB;QACxB,uBAAuB;QACvB,wBAAwB;QACxB,kBAAkB;QAClB,iBAAiB;KAClB,CAAC;IACF,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,wEAAwE;AAExE,MAAM,eAAe,GAAiC;IACpD,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,kBAAkB,CAAC;IAC7C,WAAW,EAAE,kBAAkB;IAC/B,IAAI,EAAE,kBAAkB;IACxB,YAAY,EAAE,YAAY,CAAC,MAAM,CAC/B,0EAA0E;QACxE,kCAAkC;QAClC,6EAA6E;QAC7E,6DAA6D;QAC7D,uDAAuD;QACvD,wEAAwE;QACxE,iDAAiD;QACjD,kFAAkF;QAClF,yEAAyE,CAC5E;IACD,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;IAClD,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACrC,wBAAwB;QACxB,kBAAkB;QAClB,mBAAmB;QACnB,uBAAuB;QACvB,oBAAoB;KACrB,CAAC;IACF,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;QAChC,iBAAiB;QACjB,uBAAuB;QACvB,wBAAwB;QACxB,kBAAkB;QAClB,kBAAkB;QAClB,uBAAuB;QACvB,YAAY;QACZ,aAAa;QACb,qBAAqB;KACtB,CAAC;IACF,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,yEAAyE;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA4C;IACxE,cAAc;IACd,YAAY;IACZ,MAAM;IACN,UAAU;IACV,eAAe;CAChB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure Sync Infrastructure — Authentication
|
|
3
|
+
*
|
|
4
|
+
* Token acquisition for Azure DevOps REST API via two strategies:
|
|
5
|
+
* - az cli: uses `az account get-access-token` for Azure DevOps resource
|
|
6
|
+
* - pat: uses AZURE_DEVOPS_PAT environment variable
|
|
7
|
+
*
|
|
8
|
+
* SOLID: SRP — authentication logic only
|
|
9
|
+
* SOLID: OCP — new auth methods added without modifying existing code
|
|
10
|
+
* DDD: Infrastructure adapter implementing domain auth requirements
|
|
11
|
+
*/
|
|
12
|
+
import type { AuthMethod } from "../../domain/azure-sync/value-objects.js";
|
|
13
|
+
import type { Result } from "../../domain/shared/value-objects.js";
|
|
14
|
+
/**
|
|
15
|
+
* Acquires and caches authentication tokens for Azure DevOps REST API.
|
|
16
|
+
* Supports both `az cli` session tokens and Personal Access Tokens (PAT).
|
|
17
|
+
*/
|
|
18
|
+
export declare class AzureAuthProvider {
|
|
19
|
+
private readonly authMethod;
|
|
20
|
+
private cachedToken;
|
|
21
|
+
/** Token refresh buffer — refresh 5 minutes before actual expiry. */
|
|
22
|
+
private static readonly EXPIRY_BUFFER_MS;
|
|
23
|
+
constructor(authMethod: AuthMethod);
|
|
24
|
+
/**
|
|
25
|
+
* Get a valid bearer token for Azure DevOps API calls.
|
|
26
|
+
* For az-cli, acquires and caches OAuth tokens via the CLI.
|
|
27
|
+
* For PAT, returns a Base64-encoded Basic auth token.
|
|
28
|
+
*/
|
|
29
|
+
getToken(): Result<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Get the Authorization header value.
|
|
32
|
+
* Returns "Bearer {token}" for az-cli or "Basic {base64}" for PAT.
|
|
33
|
+
*/
|
|
34
|
+
getAuthHeader(): Result<string>;
|
|
35
|
+
/** Clear the cached token (e.g., on auth failure). */
|
|
36
|
+
clearCache(): void;
|
|
37
|
+
private getPatToken;
|
|
38
|
+
private getAzCliToken;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=azure-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-auth.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/azure-sync/azure-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AASnE;;;GAGG;AACH,qBAAa,iBAAiB;IAMhB,OAAO,CAAC,QAAQ,CAAC,UAAU;IALvC,OAAO,CAAC,WAAW,CAA0B;IAE7C,qEAAqE;IACrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;gBAE5B,UAAU,EAAE,UAAU;IAEnD;;;;OAIG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC;IAO1B;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC;IAU/B,sDAAsD;IACtD,UAAU,IAAI,IAAI;IAMlB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;CA2CtB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure Sync Infrastructure — Authentication
|
|
3
|
+
*
|
|
4
|
+
* Token acquisition for Azure DevOps REST API via two strategies:
|
|
5
|
+
* - az cli: uses `az account get-access-token` for Azure DevOps resource
|
|
6
|
+
* - pat: uses AZURE_DEVOPS_PAT environment variable
|
|
7
|
+
*
|
|
8
|
+
* SOLID: SRP — authentication logic only
|
|
9
|
+
* SOLID: OCP — new auth methods added without modifying existing code
|
|
10
|
+
* DDD: Infrastructure adapter implementing domain auth requirements
|
|
11
|
+
*/
|
|
12
|
+
import { execSync } from "node:child_process";
|
|
13
|
+
import { ok, fail } from "../../domain/shared/value-objects.js";
|
|
14
|
+
/**
|
|
15
|
+
* Acquires and caches authentication tokens for Azure DevOps REST API.
|
|
16
|
+
* Supports both `az cli` session tokens and Personal Access Tokens (PAT).
|
|
17
|
+
*/
|
|
18
|
+
export class AzureAuthProvider {
|
|
19
|
+
authMethod;
|
|
20
|
+
cachedToken;
|
|
21
|
+
/** Token refresh buffer — refresh 5 minutes before actual expiry. */
|
|
22
|
+
static EXPIRY_BUFFER_MS = 5 * 60 * 1000;
|
|
23
|
+
constructor(authMethod) {
|
|
24
|
+
this.authMethod = authMethod;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get a valid bearer token for Azure DevOps API calls.
|
|
28
|
+
* For az-cli, acquires and caches OAuth tokens via the CLI.
|
|
29
|
+
* For PAT, returns a Base64-encoded Basic auth token.
|
|
30
|
+
*/
|
|
31
|
+
getToken() {
|
|
32
|
+
if (this.authMethod === "pat") {
|
|
33
|
+
return this.getPatToken();
|
|
34
|
+
}
|
|
35
|
+
return this.getAzCliToken();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the Authorization header value.
|
|
39
|
+
* Returns "Bearer {token}" for az-cli or "Basic {base64}" for PAT.
|
|
40
|
+
*/
|
|
41
|
+
getAuthHeader() {
|
|
42
|
+
const tokenResult = this.getToken();
|
|
43
|
+
if (!tokenResult.success)
|
|
44
|
+
return tokenResult;
|
|
45
|
+
if (this.authMethod === "pat") {
|
|
46
|
+
return ok(`Basic ${tokenResult.data}`);
|
|
47
|
+
}
|
|
48
|
+
return ok(`Bearer ${tokenResult.data}`);
|
|
49
|
+
}
|
|
50
|
+
/** Clear the cached token (e.g., on auth failure). */
|
|
51
|
+
clearCache() {
|
|
52
|
+
this.cachedToken = undefined;
|
|
53
|
+
}
|
|
54
|
+
// ── Private ─────────────────────────────────────────────────────
|
|
55
|
+
getPatToken() {
|
|
56
|
+
const pat = process.env["AZURE_DEVOPS_PAT"];
|
|
57
|
+
if (!pat || pat.trim().length === 0) {
|
|
58
|
+
return fail("AZURE_DEVOPS_PAT environment variable is not set or empty");
|
|
59
|
+
}
|
|
60
|
+
// PAT auth uses Basic scheme with base64(":PAT")
|
|
61
|
+
const encoded = Buffer.from(`:${pat}`).toString("base64");
|
|
62
|
+
return ok(encoded);
|
|
63
|
+
}
|
|
64
|
+
getAzCliToken() {
|
|
65
|
+
// Return cached token if still valid
|
|
66
|
+
if (this.cachedToken) {
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
if (now < this.cachedToken.expiresAt - AzureAuthProvider.EXPIRY_BUFFER_MS) {
|
|
69
|
+
return ok(this.cachedToken.token);
|
|
70
|
+
}
|
|
71
|
+
this.cachedToken = undefined;
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
const output = execSync('az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "{accessToken:accessToken,expiresOn:expiresOn}" -o json', { encoding: "utf-8", timeout: 15_000, stdio: ["pipe", "pipe", "pipe"] });
|
|
75
|
+
const parsed = JSON.parse(output);
|
|
76
|
+
if (!parsed.accessToken) {
|
|
77
|
+
return fail("az cli returned empty access token");
|
|
78
|
+
}
|
|
79
|
+
const expiresAt = parsed.expiresOn
|
|
80
|
+
? new Date(parsed.expiresOn).getTime()
|
|
81
|
+
: Date.now() + 60 * 60 * 1000; // fallback: 1 hour
|
|
82
|
+
this.cachedToken = {
|
|
83
|
+
token: parsed.accessToken,
|
|
84
|
+
expiresAt,
|
|
85
|
+
};
|
|
86
|
+
return ok(parsed.accessToken);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
90
|
+
return fail(`Failed to acquire az cli token: ${message}. Run 'az login' first.`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=azure-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-auth.js","sourceRoot":"","sources":["../../../src/infrastructure/azure-sync/azure-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure Sync Infrastructure — Azure DevOps REST Client
|
|
3
|
+
*
|
|
4
|
+
* Implements the AzureDevOpsPort using fetch + az cli/PAT authentication.
|
|
5
|
+
* All API calls target Azure DevOps REST API v7.1.
|
|
6
|
+
*
|
|
7
|
+
* SOLID: SRP — HTTP communication with Azure DevOps API only
|
|
8
|
+
* SOLID: DIP — implements domain-defined AzureDevOpsPort interface
|
|
9
|
+
* DDD: Infrastructure adapter for external system integration
|
|
10
|
+
*/
|
|
11
|
+
import type { Result } from "../../domain/shared/value-objects.js";
|
|
12
|
+
import type { AzureDevOpsPort, AzureWorkItem, WorkItemPatchOp, WorkItemResult, AzureIteration, AzureProjectInfo, AzurePullRequest, CreatePullRequestInput } from "../../domain/azure-sync/ports.js";
|
|
13
|
+
import type { AuthMethod, WorkItemType } from "../../domain/azure-sync/value-objects.js";
|
|
14
|
+
/**
|
|
15
|
+
* Azure DevOps REST API client.
|
|
16
|
+
* Implements the domain port interface for all Azure DevOps operations.
|
|
17
|
+
*/
|
|
18
|
+
export declare class AzureDevOpsClient implements AzureDevOpsPort {
|
|
19
|
+
private readonly auth;
|
|
20
|
+
readonly authMethod: AuthMethod;
|
|
21
|
+
constructor(authMethod: AuthMethod);
|
|
22
|
+
testConnection(): Promise<Result<string>>;
|
|
23
|
+
getProjectInfo(org: string, project: string): Promise<Result<AzureProjectInfo>>;
|
|
24
|
+
getWorkItem(org: string, project: string, id: number): Promise<Result<AzureWorkItem>>;
|
|
25
|
+
listWorkItems(org: string, project: string, workItemType: WorkItemType, top?: number): Promise<Result<readonly AzureWorkItem[]>>;
|
|
26
|
+
createWorkItem(org: string, project: string, workItemType: WorkItemType, fields: readonly WorkItemPatchOp[]): Promise<Result<WorkItemResult>>;
|
|
27
|
+
updateWorkItem(org: string, project: string, id: number, fields: readonly WorkItemPatchOp[]): Promise<Result<WorkItemResult>>;
|
|
28
|
+
listIterations(org: string, project: string): Promise<Result<readonly AzureIteration[]>>;
|
|
29
|
+
createIteration(org: string, project: string, name: string, startDate?: string, finishDate?: string): Promise<Result<AzureIteration>>;
|
|
30
|
+
addIterationToTeam(org: string, project: string, iterationId: string): Promise<Result<void>>;
|
|
31
|
+
addParentLink(org: string, project: string, childId: number, parentId: number): Promise<Result<void>>;
|
|
32
|
+
addComment(org: string, project: string, workItemId: number, text: string): Promise<Result<void>>;
|
|
33
|
+
private prPath;
|
|
34
|
+
createPullRequest(org: string, project: string, repository: string, input: CreatePullRequestInput): Promise<Result<AzurePullRequest>>;
|
|
35
|
+
listPullRequests(org: string, project: string, repository: string, status?: "active" | "abandoned" | "completed" | "all", top?: number): Promise<Result<readonly AzurePullRequest[]>>;
|
|
36
|
+
getPullRequest(org: string, project: string, repository: string, pullRequestId: number): Promise<Result<AzurePullRequest>>;
|
|
37
|
+
private apiGet;
|
|
38
|
+
private apiPost;
|
|
39
|
+
private apiPatch;
|
|
40
|
+
private buildUrl;
|
|
41
|
+
private handleResponse;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=azure-devops-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-devops-client.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/azure-sync/azure-devops-client.ts"],"names":[],"mappings":"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"}
|