AI Agents SDE Task Viewer
      • Context
      • Plan
      • Prd
  1. Home
  2. AgentSDE
  3. agent-core
  4. gh-347
  5. plan
  6. prd.json
prd.json(1.8 KB)ยท Apr 8, 2026
{
  "issueNumber": 347,
  "branchName": "rc/multi-tenant",
  "generatedAt": "2026-04-08T12:00:00Z",
  "stories": [
    {
      "id": "S1",
      "title": "Create CredentialManager interface, types, injection token, and CredentialError class",
      "priority": 1,
      "dependsOn": [],
      "acceptanceCriteria": [
        "credential-manager.interface.ts exports CredentialManager interface, PlatformCredentials, LLMCredentials, and CREDENTIAL_MANAGER Symbol",
        "credential-error.ts exports CredentialError extending Error with name='CredentialError'",
        "tsc --noEmit passes"
      ],
      "passes": false,
      "completedAt": null
    },
    {
      "id": "S2",
      "title": "Implement EnvCredentialManager and CredentialModule",
      "priority": 2,
      "dependsOn": [
        "S1"
      ],
      "acceptanceCriteria": [
        "EnvCredentialManager implements CredentialManager interface",
        "getPlatformCredentials returns GITHUB_TOKEN (or HUMAN_PAT fallback) and GITHUB_WEBHOOK_SECRET",
        "getPlatformCredentials throws CredentialError when neither GITHUB_TOKEN nor HUMAN_PAT is set",
        "getLLMCredentials returns ANTHROPIC_API_KEY or empty string",
        "credentialPath parameter is accepted but ignored",
        "CredentialModule provides CREDENTIAL_MANAGER token and exports it",
        "tsc --noEmit passes"
      ],
      "passes": false,
      "completedAt": null
    },
    {
      "id": "S3",
      "title": "Write unit tests and verify all quality checks pass",
      "priority": 3,
      "dependsOn": [
        "S2"
      ],
      "acceptanceCriteria": [
        "env-credential-manager.spec.ts covers: happy path, HUMAN_PAT fallback, missing token error, missing ANTHROPIC_API_KEY",
        "npm run test passes",
        "npm run lint passes",
        "No existing files modified"
      ],
      "passes": false,
      "completedAt": null
    }
  ]
}
PlanPr description