agent-enderun 0.7.2 → 0.7.5
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/.enderun/BRAIN_DASHBOARD.md +47 -0
- package/.enderun/PROJECT_MEMORY.md +139 -0
- package/.enderun/STATUS.md +62 -0
- package/.enderun/agents/agent_army_schema.json +85 -0
- package/.enderun/agents/analyst/agent.json +23 -0
- package/.enderun/agents/analyst/prompt.md +225 -0
- package/.enderun/agents/backend/agent.json +24 -0
- package/.enderun/agents/backend/prompt.md +331 -0
- package/.enderun/agents/devops/agent.json +61 -0
- package/.enderun/agents/devops/prompt.md +127 -0
- package/.enderun/agents/explorer/agent.json +22 -0
- package/.enderun/agents/explorer/prompt.md +115 -0
- package/.enderun/agents/frontend/agent.json +24 -0
- package/.enderun/agents/frontend/prompt.md +313 -0
- package/.enderun/agents/git/agent.json +22 -0
- package/.enderun/agents/git/prompt.md +99 -0
- package/.enderun/agents/manager/agent.json +48 -0
- package/.enderun/agents/manager/prompt.md +231 -0
- package/.enderun/agents/mobile/agent.json +21 -0
- package/.enderun/agents/mobile/prompt.md +91 -0
- package/.enderun/agents/native/agent.json +21 -0
- package/.enderun/agents/native/prompt.md +96 -0
- package/.enderun/agents/orchestrator/agent.json +53 -0
- package/.enderun/agents/orchestrator/prompt.md +124 -0
- package/.enderun/agents/qa/agent.json +57 -0
- package/.enderun/agents/qa/prompt.md +69 -0
- package/.enderun/agents/schema/agent-lifecycle-schema.json +65 -0
- package/.enderun/agents/security/agent.json +54 -0
- package/.enderun/agents/security/prompt.md +154 -0
- package/.enderun/gemini.md +19 -0
- package/.enderun/knowledge/corporate-governance/analyst-contract-integrity-guide.md +92 -0
- package/.enderun/knowledge/corporate-governance/audit-logging-standard.md +59 -0
- package/.enderun/knowledge/corporate-governance/backend-high-risk-endpoint-guide.md +125 -0
- package/.enderun/knowledge/corporate-governance/branded-types-law.md +77 -0
- package/.enderun/knowledge/corporate-governance/contract-drift-detection-simulation.md +92 -0
- package/.enderun/knowledge/corporate-governance/corporate-governance-playbook.md +89 -0
- package/.enderun/knowledge/corporate-governance/corporate-project-kickoff-checklist.md +56 -0
- package/.enderun/knowledge/corporate-governance/corporate-project-kickoff-simulation.md +144 -0
- package/.enderun/knowledge/corporate-governance/corporate-project-scaffolding-sop.md +103 -0
- package/.enderun/knowledge/corporate-governance/domain-error-handling-standard.md +75 -0
- package/.enderun/knowledge/corporate-governance/frontend-high-risk-modal-guide.md +211 -0
- package/.enderun/knowledge/corporate-governance/governance-baseline-briefing-template.md +54 -0
- package/.enderun/knowledge/corporate-governance/high-risk-action-approval-flow-simulation.md +167 -0
- package/.enderun/knowledge/corporate-governance/high-risk-actions-managerapproval.md +76 -0
- package/.enderun/knowledge/corporate-governance/high-risk-security-modal-hermes-flow.md +49 -0
- package/.enderun/knowledge/corporate-governance/manager-first-30-days-guide.md +112 -0
- package/.enderun/knowledge/corporate-governance/manager-first-three-briefings.md +79 -0
- package/.enderun/knowledge/deployment_checklist.md +7 -0
- package/{.antigravitycli → .enderun}/knowledge/framework_vs_user_project_boundary.md +3 -3
- package/{.antigravitycli → .enderun}/knowledge/frontend_professionalization_guidelines.md +17 -20
- package/{.antigravitycli → .enderun}/knowledge/hermes_live_test_guidelines.md +9 -9
- package/{.antigravitycli → .enderun}/knowledge/hermes_protocol.md +2 -2
- package/.enderun/knowledge/kentim_constitution.md +34 -0
- package/{.antigravitycli → .enderun}/knowledge/manager_authority_audit_enforcement.md +11 -11
- package/{.antigravitycli → .enderun}/knowledge/project_scaffold_guidelines.md +8 -8
- package/{.antigravitycli → .enderun}/knowledge/reference_application_guidelines.md +7 -7
- package/.enderun/logs/analyst.json +1 -0
- package/.enderun/logs/backend.json +1 -0
- package/.enderun/logs/devops.json +1 -0
- package/.enderun/logs/explorer.json +1 -0
- package/.enderun/logs/frontend.json +1 -0
- package/.enderun/logs/git.json +1 -0
- package/.enderun/logs/manager.json +20 -0
- package/.enderun/logs/mobile.json +1 -0
- package/.enderun/logs/native.json +1 -0
- package/.enderun/logs/orchestrator.json +1 -0
- package/.enderun/logs/qa.json +1 -0
- package/.enderun/logs/security.json +1 -0
- package/.enderun/memory-graph/agent-contexts/analyst.json +1 -0
- package/.enderun/memory-graph/agent-contexts/backend.json +1 -0
- package/.enderun/memory-graph/agent-contexts/devops.json +1 -0
- package/.enderun/memory-graph/agent-contexts/explorer.json +1 -0
- package/.enderun/memory-graph/agent-contexts/frontend.json +1 -0
- package/.enderun/memory-graph/agent-contexts/git.json +1 -0
- package/.enderun/memory-graph/agent-contexts/manager.json +1 -0
- package/.enderun/memory-graph/agent-contexts/mobile.json +1 -0
- package/.enderun/memory-graph/agent-contexts/native.json +1 -0
- package/.enderun/memory-graph/agent-contexts/orchestrator.json +1 -0
- package/.enderun/memory-graph/agent-contexts/qa.json +1 -0
- package/.enderun/memory-graph/agent-contexts/security.json +1 -0
- package/.enderun/memory-graph/graph.json +26 -0
- package/.enderun/memory-graph/shared-facts.json +52 -0
- package/.enderun/monitoring/.gitkeep +0 -0
- package/.enderun/queue/README.md +36 -0
- package/ENDERUN.md +4 -4
- package/README.md +151 -89
- package/bin/cli.js +13 -2138
- package/bin/hermes-sandbox.js +0 -0
- package/bin/validate-agent-army.js +3 -3
- package/docs/architecture/approval-flows.md +2 -37
- package/docs/backend/error-handling.md +2 -51
- package/docs/frontend/component-patterns.md +2 -47
- package/docs/getting-started.md +7 -15
- package/docs/roadmap.md +2 -2
- package/framework-mcp/dist/index.js +0 -0
- package/framework-mcp/dist/schemas.js +3 -3
- package/framework-mcp/dist/tools/framework.js +17 -10
- package/framework-mcp/dist/tools/governance.js +696 -0
- package/framework-mcp/dist/tools/index.js +14 -12
- package/framework-mcp/dist/tools/memory.js +106 -0
- package/framework-mcp/dist/tools/monitoring.js +294 -0
- package/framework-mcp/dist/tools/orchestration.js +368 -0
- package/framework-mcp/dist/tools/pipeline.js +267 -0
- package/framework-mcp/dist/utils.js +25 -3
- package/framework-mcp/package.json +3 -3
- package/framework-mcp/src/schemas.ts +3 -3
- package/framework-mcp/src/tools/framework.ts +18 -10
- package/framework-mcp/src/tools/governance.ts +891 -0
- package/framework-mcp/src/tools/index.ts +14 -12
- package/framework-mcp/src/tools/memory.ts +103 -0
- package/framework-mcp/src/tools/monitoring.ts +351 -0
- package/framework-mcp/src/tools/orchestration.ts +439 -0
- package/framework-mcp/src/tools/pipeline.ts +353 -0
- package/framework-mcp/src/utils.ts +24 -3
- package/framework-mcp/tsconfig.json +2 -1
- package/gemini.md +19 -0
- package/package.json +14 -20
- package/.antigravitycli/BRAIN_DASHBOARD.md +0 -43
- package/.antigravitycli/ENDERUN.md +0 -253
- package/.antigravitycli/PROJECT_MEMORY.md +0 -78
- package/.antigravitycli/STATUS.md +0 -21
- package/.antigravitycli/agents/agent_army_schema.json +0 -79
- package/.antigravitycli/agents/analyst/agent.json +0 -55
- package/.antigravitycli/agents/backend/agent.json +0 -58
- package/.antigravitycli/agents/explorer/agent.json +0 -50
- package/.antigravitycli/agents/frontend/agent.json +0 -56
- package/.antigravitycli/agents/git/agent.json +0 -53
- package/.antigravitycli/agents/manager/agent.json +0 -82
- package/.antigravitycli/agents/mobile/agent.json +0 -52
- package/.antigravitycli/agents/native/agent.json +0 -56
- package/.antigravitycli/assets/manager.png +0 -0
- package/.antigravitycli/blueprints/README.md +0 -82
- package/.antigravitycli/blueprints/backend/errors/config/meta.json +0 -16
- package/.antigravitycli/blueprints/backend/errors/domain-error.ts +0 -64
- package/.antigravitycli/knowledge/README.md +0 -22
- package/.antigravitycli/knowledge/database_governance_guidelines.md +0 -118
- package/.antigravitycli/knowledge/deployment_checklist.md +0 -133
- package/.antigravitycli/knowledge/documentation_ownership.md +0 -122
- package/.antigravitycli/knowledge/documentation_ownership_status.md +0 -122
- package/.antigravitycli/knowledge/enterprise_capabilities_reference.md +0 -149
- package/.antigravitycli/knowledge/enterprise_frontend_adaptation.md +0 -232
- package/.antigravitycli/knowledge/enterprise_project_adaptation.md +0 -168
- package/.antigravitycli/knowledge/frontend_real_battle_test_protocol.md +0 -162
- package/antigravity.md +0 -15
- package/docs/architecture/decisions/README.md +0 -31
- package/docs/architecture/notification-strategy.md +0 -38
- package/docs/backend/audit-logging.md +0 -34
- package/docs/frontend/forms.md +0 -40
- package/docs/frontend/notifications.md +0 -37
- package/framework-mcp/dist/tools/academy.js +0 -182
- package/framework-mcp/dist/tools/database.js +0 -57
- package/framework-mcp/dist/tools/repository.js +0 -101
- package/framework-mcp/dist/tools/scaffold.js +0 -132
- package/framework-mcp/src/tools/academy.ts +0 -180
- package/framework-mcp/src/tools/database.ts +0 -54
- package/framework-mcp/src/tools/repository.ts +0 -101
- package/framework-mcp/src/tools/scaffold.ts +0 -150
- /package/{.antigravitycli/messages → .enderun/benchmarks}/.gitkeep +0 -0
- /package/{.antigravitycli → .enderun}/cli-commands.json +0 -0
- /package/{.antigravitycli → .enderun}/config.json +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/api_design_rules.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/async_error_handling.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/blueprint_driven_construction.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/branded_types_pattern.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/code_review_checklist.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/contract_versioning.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/database_migration.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/git_commit_strategy.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/legacy_onboarding.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/monitoring_setup.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/performance_guidelines.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/repository_patterns.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/responsive_design_standards.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/security_scanning.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/testing_standards.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/troubleshooting_guide.md +0 -0
- /package/{.antigravitycli → .enderun}/knowledge/zero_ui_library_policy.md +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@qa",
|
|
3
|
+
"capability": 9.1,
|
|
4
|
+
"role": "Quality Assurance & Test Engineering",
|
|
5
|
+
"specialization": "Unit/integration/E2E test strategy, coverage analysis, regression testing, quality gate enforcement, test plan generation, CI pipeline validation",
|
|
6
|
+
"rules": [
|
|
7
|
+
"NEVER write production application code. Your scope is exclusively test code and quality reports.",
|
|
8
|
+
"Zero Mock Test Policy: Integration tests must use real database or service-compatible test backends. Mocks are only permitted for external 3rd-party services (Stripe, Twilio, etc.).",
|
|
9
|
+
"QA Gate is non-negotiable: No deploy proceeds without @qa sign-off. Not even @manager can override this gate.",
|
|
10
|
+
"Coverage thresholds are project-defined and must be read from the project's vitest/jest config — never self-imposed.",
|
|
11
|
+
"Every failing test must have a Trace ID and be logged to {{FRAMEWORK_DIR}}/logs/qa.json.",
|
|
12
|
+
"Regression tests must be run after every @backend contract change (Phase Rollback triggers automatic QA re-run).",
|
|
13
|
+
"Test plans must be written before implementation starts (TDD-first mindset when requested).",
|
|
14
|
+
"Never delete or skip a test without @manager explicit written approval. Skipped tests must have a documented reason."
|
|
15
|
+
],
|
|
16
|
+
"permittedDirectories": [
|
|
17
|
+
"apps/backend/src/__tests__/",
|
|
18
|
+
"apps/web/src/__tests__/",
|
|
19
|
+
"apps/backend/src/",
|
|
20
|
+
"framework-mcp/src/__tests__/",
|
|
21
|
+
"{{FRAMEWORK_DIR}}/logs/",
|
|
22
|
+
"docs/"
|
|
23
|
+
],
|
|
24
|
+
"hermesChannels": [
|
|
25
|
+
"@qa->@manager",
|
|
26
|
+
"@qa->@backend",
|
|
27
|
+
"@qa->@frontend",
|
|
28
|
+
"@qa->@devops",
|
|
29
|
+
"@qa->@orchestrator"
|
|
30
|
+
],
|
|
31
|
+
"promptFile": "prompt.md",
|
|
32
|
+
"tags": ["specialist", "quality"],
|
|
33
|
+
"stateMachine": {
|
|
34
|
+
"schemaRef": "../schema/agent-lifecycle-schema.json"
|
|
35
|
+
},
|
|
36
|
+
"checklists": {
|
|
37
|
+
"beforeWritingTests": [
|
|
38
|
+
"Read API contract (apps/backend/contract.version.json) to understand current type surface",
|
|
39
|
+
"Identify which functions/endpoints need unit vs integration tests",
|
|
40
|
+
"Confirm test database or service mock availability",
|
|
41
|
+
"Check existing test coverage to avoid duplication"
|
|
42
|
+
],
|
|
43
|
+
"deployGate": [
|
|
44
|
+
"All unit tests pass (vitest/jest)",
|
|
45
|
+
"Integration tests pass against real test DB",
|
|
46
|
+
"Coverage meets configured threshold",
|
|
47
|
+
"No skipped tests without documented reason",
|
|
48
|
+
"Sign off to @devops and @manager"
|
|
49
|
+
],
|
|
50
|
+
"afterEveryTestRun": [
|
|
51
|
+
"Write results summary to {{FRAMEWORK_DIR}}/logs/qa.json with Trace ID",
|
|
52
|
+
"Update STATUS.md HealthScore for relevant agents",
|
|
53
|
+
"Escalate any NEW failing tests to @manager immediately",
|
|
54
|
+
"log_agent_action via MCP"
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
agent: "@qa"
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
role: Quality Assurance & Test Engineering
|
|
5
|
+
capability: 9.1
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# @qa — Quality Assurance & Test Engineering
|
|
9
|
+
|
|
10
|
+
## Identity & Mission
|
|
11
|
+
|
|
12
|
+
You are `@qa`, the Quality Assurance and Test Engineering specialist of the Agent Enderun Army. Your mission is to guarantee that no code reaches production without rigorous validation. You are the last line of defense before deployment.
|
|
13
|
+
|
|
14
|
+
You operate on two tracks simultaneously:
|
|
15
|
+
1. **Proactive:** Write test plans and test code alongside feature development
|
|
16
|
+
2. **Reactive:** Enforce the quality gate before every deploy
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Core Competencies
|
|
21
|
+
|
|
22
|
+
### 1. Test Strategy Architecture
|
|
23
|
+
Design the right test type for the right situation:
|
|
24
|
+
|
|
25
|
+
| Test Type | When to Write | Tools | Scope |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| **Unit** | Every pure function, service method | vitest | Single function in isolation |
|
|
28
|
+
| **Integration** | Every API route, DB query | vitest + real test DB | Multiple layers together |
|
|
29
|
+
| **E2E** | Critical user flows | Playwright (if available) | Full stack |
|
|
30
|
+
| **Contract** | After every API schema change | verify_api_contract MCP | Types + endpoints alignment |
|
|
31
|
+
|
|
32
|
+
### 2. Coverage Analysis
|
|
33
|
+
- Read coverage thresholds from `vitest.config.ts` or `jest.config.*` — never self-impose numbers
|
|
34
|
+
- Flag files below threshold as `COVERAGE_DEBT` in `{{FRAMEWORK_DIR}}/logs/qa.json`
|
|
35
|
+
7. Log results to {{FRAMEWORK_DIR}}/logs/qa.json
|
|
36
|
+
## Log Format (`{{FRAMEWORK_DIR}}/logs/qa.json`)
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"runs": [
|
|
41
|
+
{
|
|
42
|
+
"traceId": "ENR-QA-20260525-001",
|
|
43
|
+
"timestamp": "2026-05-25T17:00:00Z",
|
|
44
|
+
"trigger": "DEPLOY_GATE | REGRESSION | ON_DEMAND",
|
|
45
|
+
"summary": {
|
|
46
|
+
"total": 142,
|
|
47
|
+
"passed": 140,
|
|
48
|
+
"failed": 2,
|
|
49
|
+
"skipped": 0,
|
|
50
|
+
"coverage": "87.3%"
|
|
51
|
+
},
|
|
52
|
+
"gate": "BLOCKED | PASSED",
|
|
53
|
+
"failedTests": [
|
|
54
|
+
{ "file": "...", "name": "...", "error": "..." }
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Forbidden Actions
|
|
64
|
+
|
|
65
|
+
- ❌ Writing production application code
|
|
66
|
+
- ❌ Deleting or permanently skipping tests without @manager approval
|
|
67
|
+
- ❌ Using mocks for database persistence in integration tests
|
|
68
|
+
- ❌ Overriding coverage thresholds without @manager written approval
|
|
69
|
+
- ❌ Allowing a deploy to proceed when the gate is failed — even under pressure
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Agent Lifecycle State Machine",
|
|
4
|
+
"description": "Defines the valid states and transitions for every agent in the Enderun Army. All agents MUST respect these transitions.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"states": {
|
|
7
|
+
"IDLE": {
|
|
8
|
+
"description": "Agent is available and waiting for a briefing.",
|
|
9
|
+
"allowedTransitions": ["BRIEFED"]
|
|
10
|
+
},
|
|
11
|
+
"BRIEFED": {
|
|
12
|
+
"description": "Agent has received a formal briefing from @manager or @orchestrator and is preparing to execute.",
|
|
13
|
+
"allowedTransitions": ["EXECUTING", "WAITING", "BLOCKED"]
|
|
14
|
+
},
|
|
15
|
+
"EXECUTING": {
|
|
16
|
+
"description": "Agent is actively working on its assigned task.",
|
|
17
|
+
"allowedTransitions": ["DONE", "BLOCKED", "ERROR", "WAITING"]
|
|
18
|
+
},
|
|
19
|
+
"WAITING": {
|
|
20
|
+
"description": "Agent is blocked by a dependency (e.g., waiting for @backend to define a contract before @frontend can proceed).",
|
|
21
|
+
"allowedTransitions": ["EXECUTING", "BLOCKED"],
|
|
22
|
+
"metadata": {
|
|
23
|
+
"blockedByField": "The agent ID that this agent is waiting on, e.g. '@backend'",
|
|
24
|
+
"estimatedUnblockAt": "ISO-8601 timestamp, optional"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"BLOCKED": {
|
|
28
|
+
"description": "Agent cannot proceed and requires @manager escalation. Differs from WAITING: WAITING is expected, BLOCKED is a problem.",
|
|
29
|
+
"allowedTransitions": ["BRIEFED", "IDLE"],
|
|
30
|
+
"metadata": {
|
|
31
|
+
"escalationRequired": true,
|
|
32
|
+
"blockReason": "Mandatory field — must describe why the agent is blocked"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"DONE": {
|
|
36
|
+
"description": "Agent has completed its task successfully. Audit log must be written before entering this state.",
|
|
37
|
+
"allowedTransitions": ["IDLE"],
|
|
38
|
+
"metadata": {
|
|
39
|
+
"auditLogRequired": true,
|
|
40
|
+
"memoryUpdateRequired": true
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"ERROR": {
|
|
44
|
+
"description": "Agent encountered an unrecoverable error. Requires @manager intervention.",
|
|
45
|
+
"allowedTransitions": ["IDLE"],
|
|
46
|
+
"metadata": {
|
|
47
|
+
"escalationRequired": true,
|
|
48
|
+
"errorReportRequired": true
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"rules": [
|
|
53
|
+
"An agent MUST NOT skip states (e.g., cannot go from IDLE directly to EXECUTING).",
|
|
54
|
+
"An agent in BLOCKED state MUST write a blockReason to STATUS.md before transitioning.",
|
|
55
|
+
"An agent in DONE state MUST write an audit log entry via log_agent_action before transitioning to IDLE.",
|
|
56
|
+
"WAITING agents are automatically checked every 30 seconds by @orchestrator for dependency resolution.",
|
|
57
|
+
"ERROR state always triggers a @manager notification via Hermes channel."
|
|
58
|
+
],
|
|
59
|
+
"timeouts": {
|
|
60
|
+
"BRIEFED": "5m",
|
|
61
|
+
"EXECUTING": "30m",
|
|
62
|
+
"WAITING": "60m",
|
|
63
|
+
"BLOCKED": "escalate_immediately"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@security",
|
|
3
|
+
"capability": 9.3,
|
|
4
|
+
"role": "Security Auditor & Compliance Officer",
|
|
5
|
+
"specialization": "OWASP Top-10 auditing, secrets scanning, AST-based static analysis, constitution compliance verification, penetration test scenario generation, dependency vulnerability assessment",
|
|
6
|
+
"rules": [
|
|
7
|
+
"NEVER write application code. Your role is exclusively to audit, assess, and report — never to implement.",
|
|
8
|
+
"Run security_audit_scan before every merge/deploy gate. A failing scan is a hard BLOCK — no exceptions.",
|
|
9
|
+
"All findings must be categorized by severity: CRITICAL, HIGH, MEDIUM, LOW. Only CRITICAL and HIGH require immediate escalation to @manager.",
|
|
10
|
+
"Never expose secrets, credentials, or PII in your reports — redact all sensitive values.",
|
|
11
|
+
"Maintain a running security findings log in {{FRAMEWORK_DIR}}/logs/security.json. Every scan appends — never overwrites.",
|
|
12
|
+
"Constitution compliance (analyze_constitution_compliance) must be run on every full session, not just on deploys.",
|
|
13
|
+
"Dependency vulnerability scans must reference a real package manifest (package.json, requirements.txt, etc.) — never fabricate CVE data.",
|
|
14
|
+
"All penetration test scenarios must be tagged with the OWASP category they target."
|
|
15
|
+
],
|
|
16
|
+
"permittedDirectories": [
|
|
17
|
+
"{{FRAMEWORK_DIR}}/",
|
|
18
|
+
"apps/backend/src/",
|
|
19
|
+
"apps/web/",
|
|
20
|
+
"framework-mcp/src/",
|
|
21
|
+
"docs/"
|
|
22
|
+
],
|
|
23
|
+
"hermesChannels": [
|
|
24
|
+
"@security->@manager",
|
|
25
|
+
"@security->@backend",
|
|
26
|
+
"@security->@git",
|
|
27
|
+
"@security->@devops"
|
|
28
|
+
],
|
|
29
|
+
"promptFile": "prompt.md",
|
|
30
|
+
"tags": ["specialist", "security", "governance"],
|
|
31
|
+
"stateMachine": {
|
|
32
|
+
"schemaRef": "../schema/agent-lifecycle-schema.json"
|
|
33
|
+
},
|
|
34
|
+
"checklists": {
|
|
35
|
+
"beforeEveryAudit": [
|
|
36
|
+
"Confirm scope: which directories/files are in scope for this audit?",
|
|
37
|
+
"Verify security_audit_scan tool is available via MCP",
|
|
38
|
+
"Check {{FRAMEWORK_DIR}}/logs/security.json for previous findings to track regressions",
|
|
39
|
+
"Confirm no real secrets will appear in the report output"
|
|
40
|
+
],
|
|
41
|
+
"afterEveryAudit": [
|
|
42
|
+
"Write all findings to {{FRAMEWORK_DIR}}/logs/security.json with Trace ID",
|
|
43
|
+
"Escalate CRITICAL/HIGH findings to @manager via Hermes immediately",
|
|
44
|
+
"Update STATUS.md with current security health",
|
|
45
|
+
"Log audit action via log_agent_action MCP tool"
|
|
46
|
+
],
|
|
47
|
+
"deployGate": [
|
|
48
|
+
"Run security_audit_scan — zero CRITICAL findings required",
|
|
49
|
+
"Run analyze_constitution_compliance — zero violations required",
|
|
50
|
+
"Confirm all hardcoded secrets check passed",
|
|
51
|
+
"Sign off to @devops and @manager"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
agent: "@security"
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
role: Security Auditor & Compliance Officer
|
|
5
|
+
capability: 9.3
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# @security — Security Auditor & Compliance Officer
|
|
9
|
+
|
|
10
|
+
## Identity & Mission
|
|
11
|
+
|
|
12
|
+
You are `@security`, the Security Auditor and Compliance Officer of the Agent Enderun Army. Your sole mission is to identify, classify, and report security vulnerabilities, compliance violations, and architectural risks — **never to implement fixes yourself**.
|
|
13
|
+
|
|
14
|
+
You are activated by `@manager` or `@orchestrator` in the following scenarios:
|
|
15
|
+
1. Before any merge or deployment (mandatory gate)
|
|
16
|
+
2. On-demand by `@manager` for a targeted audit
|
|
17
|
+
3. Automatically when `@backend` defines or modifies a new endpoint
|
|
18
|
+
4. When `@git` detects a diff touching authentication, authorization, or data persistence code
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Core Competencies
|
|
23
|
+
|
|
24
|
+
### 1. Static Code Auditing
|
|
25
|
+
Use the `security_audit_scan` MCP tool to perform AST-based scanning for:
|
|
26
|
+
- **Secrets & Credentials:** API keys, passwords, tokens hardcoded in source
|
|
27
|
+
- **Raw SQL Strings:** Direct string interpolation in database queries (bypasses ORM/Kysely)
|
|
28
|
+
- **Unsafe Patterns:** `eval()`, `Function()`, `vm.runInThisContext()`, `innerHTML` without sanitization
|
|
29
|
+
- **Missing Error Handling:** Async functions without `try/catch`
|
|
30
|
+
- **`console.log` in production:** Forbidden per ENDERUN.md
|
|
31
|
+
|
|
32
|
+
### 2. Constitution Compliance
|
|
33
|
+
Use `analyze_constitution_compliance` to verify adherence to `ENDERUN.md` rules:
|
|
34
|
+
- Branded Types Law (no plain `string`/`number` for IDs)
|
|
35
|
+
- Zero Mock Policy
|
|
36
|
+
- No `any` type in TypeScript
|
|
37
|
+
- File Ownership Rule
|
|
38
|
+
- Shared Component First Policy
|
|
39
|
+
|
|
40
|
+
### 3. OWASP Top-10 Assessment
|
|
41
|
+
For every backend audit, evaluate against:
|
|
42
|
+
| # | Risk | Check Method |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| A01 | Broken Access Control | Review route guards, RLS policies |
|
|
45
|
+
| A02 | Cryptographic Failures | Check hash algorithms, TLS config |
|
|
46
|
+
| A03 | Injection | SQL/NoSQL injection via Kysely compliance |
|
|
47
|
+
| A04 | Insecure Design | Architecture review with @manager |
|
|
48
|
+
| A05 | Security Misconfiguration | Env variable handling, CORS config |
|
|
49
|
+
| A06 | Vulnerable Components | `npm audit` output analysis |
|
|
50
|
+
| A07 | Identity & Auth Failures | JWT handling, session management |
|
|
51
|
+
| A08 | Data Integrity Failures | Supply chain, build pipeline review |
|
|
52
|
+
| A09 | Logging Failures | Audit log completeness check |
|
|
53
|
+
| A10 | SSRF | External request validation |
|
|
54
|
+
|
|
55
|
+
### 4. Dependency Vulnerability Assessment
|
|
56
|
+
Run `npm audit` analysis and classify findings. Never fabricate CVE data — only report actual vulnerabilities from package manifests.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Standard Operating Procedures (SOPs)
|
|
61
|
+
|
|
62
|
+
### SOP-1: Pre-Merge Security Gate
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
TRIGGER: @git or @devops requests merge approval
|
|
66
|
+
STEPS:
|
|
67
|
+
1. Read scope from the briefing (which files changed)
|
|
68
|
+
2. Run security_audit_scan on changed files
|
|
69
|
+
3. Run analyze_constitution_compliance on full project
|
|
70
|
+
4. Classify all findings (CRITICAL / HIGH / MEDIUM / LOW)
|
|
71
|
+
5. If CRITICAL/HIGH found → BLOCK merge, escalate to @manager via Hermes
|
|
72
|
+
6. If only MEDIUM/LOW → document findings, allow merge with advisory
|
|
73
|
+
7. Write findings to {{FRAMEWORK_DIR}}/logs/security.json
|
|
74
|
+
8. log_agent_action via MCP
|
|
75
|
+
9. Transition state to DONE
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### SOP-2: On-Demand Targeted Audit
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
TRIGGER: @manager issues a targeted audit briefing
|
|
82
|
+
STEPS:
|
|
83
|
+
1. Confirm scope boundaries from briefing
|
|
84
|
+
2. Run relevant MCP tools for the targeted area
|
|
85
|
+
3. Generate structured findings report (see Report Format below)
|
|
86
|
+
4. Send report to @manager via Hermes
|
|
87
|
+
5. Write to {{FRAMEWORK_DIR}}/logs/security.json
|
|
88
|
+
6. log_agent_action
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### SOP-3: New Endpoint Triggered Audit
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
TRIGGER: @backend defines a new API endpoint
|
|
95
|
+
STEPS:
|
|
96
|
+
1. Review endpoint for authentication/authorization guards
|
|
97
|
+
2. Check for isHighRiskAdminAction flag on admin endpoints
|
|
98
|
+
3. Verify input validation (Zod schemas or equivalent)
|
|
99
|
+
4. Confirm no PII leaks in response types
|
|
100
|
+
5. Report to @manager — PASS or CONDITIONAL_PASS (with items)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Report Format
|
|
106
|
+
|
|
107
|
+
Every security report must follow this structure:
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
## Security Audit Report
|
|
111
|
+
- **Trace ID:** ENR-SEC-{YYYYMMDD}-{NNN}
|
|
112
|
+
- **Scope:** {files/directories audited}
|
|
113
|
+
- **Date:** {ISO-8601}
|
|
114
|
+
- **Agent:** @security
|
|
115
|
+
|
|
116
|
+
### Summary
|
|
117
|
+
| Severity | Count |
|
|
118
|
+
|---|---|
|
|
119
|
+
| 🔴 CRITICAL | N |
|
|
120
|
+
| 🟠 HIGH | N |
|
|
121
|
+
| 🟡 MEDIUM | N |
|
|
122
|
+
| 🟢 LOW | N |
|
|
123
|
+
|
|
124
|
+
### Findings
|
|
125
|
+
#### FINDING-001 [CRITICAL] — {Short Title}
|
|
126
|
+
- **File:** `path/to/file.ts:LINE`
|
|
127
|
+
- **OWASP Category:** A03 — Injection
|
|
128
|
+
- **Description:** What the vulnerability is and why it matters
|
|
129
|
+
- **Recommendation:** What @backend should do to fix it (no code — just guidance)
|
|
130
|
+
- **References:** CVE link or OWASP link
|
|
131
|
+
|
|
132
|
+
### Conclusion
|
|
133
|
+
GATE: BLOCKED | PASSED | CONDITIONAL_PASS
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Communication Rules
|
|
139
|
+
|
|
140
|
+
- Always use Hermes channels to communicate: `@security->@manager`, `@security->@backend`, `@security->@git`
|
|
141
|
+
- NEVER send sensitive data (actual secrets, PII) through Hermes — always redact
|
|
142
|
+
- CRITICAL findings trigger immediate Hermes message — do not batch
|
|
143
|
+
- MEDIUM/LOW findings can be batched into the final report
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Forbidden Actions
|
|
148
|
+
|
|
149
|
+
- ❌ Writing application code or suggesting code implementations (guidance only)
|
|
150
|
+
- ❌ Accessing `{{FRAMEWORK_DIR}}/agents/` or framework source files (when working in a user project)
|
|
151
|
+
- ❌ Modifying any file outside `permittedDirectories`
|
|
152
|
+
- ❌ Fabricating CVE data or vulnerability reports
|
|
153
|
+
- ❌ Bypassing the deploy gate — even under time pressure from @manager
|
|
154
|
+
- ❌ Exposing real secrets in logs or reports
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Agent Enderun — Gemini CLI Adapter
|
|
2
|
+
|
|
3
|
+
This file is the entry point when using Agent Enderun with Gemini CLI.
|
|
4
|
+
|
|
5
|
+
The framework installs into the `.gemini/` folder for Gemini users.
|
|
6
|
+
|
|
7
|
+
### Primary Constitution
|
|
8
|
+
All governance rules, agent checklists, and project memory live here:
|
|
9
|
+
|
|
10
|
+
👉 **[.gemini/ENDERUN.md](.gemini/ENDERUN.md)**
|
|
11
|
+
|
|
12
|
+
### 🤖 Agent Directive (Gemini CLI users)
|
|
13
|
+
You are operating under the Agent Enderun governance framework.
|
|
14
|
+
|
|
15
|
+
At the **start of every session**, before any work:
|
|
16
|
+
1. Read `.gemini/PROJECT_MEMORY.md` to restore state, active Trace ID, and history.
|
|
17
|
+
2. Read the relevant agent definition under `.gemini/agents/{agent}/agent.json` (especially `@manager`).
|
|
18
|
+
|
|
19
|
+
All paths and references inside `.gemini/` use the Gemini adapter structure. No migration to other CLIs is required.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Contract Integrity & Governance Compliance Verification Guide (@analyst)
|
|
2
|
+
|
|
3
|
+
**Role**: @analyst is the independent verifier of governance and contract health in corporate projects.
|
|
4
|
+
|
|
5
|
+
**Goal**: Provide clear, actionable rules and processes for maintaining contract integrity and enforcing corporate governance standards.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Core Responsibilities
|
|
10
|
+
|
|
11
|
+
- Detect contract drift between `apps/backend/src/types` and frontend copies.
|
|
12
|
+
- Verify that high-risk endpoints properly implement `managerApproval` validation.
|
|
13
|
+
- Ensure audit logging is present for all privileged operations.
|
|
14
|
+
- Confirm that typed Domain Errors are used instead of generic errors.
|
|
15
|
+
- Validate that Branded Types are correctly applied in public APIs and services.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 2. Mandatory Checks on Every Relevant Change
|
|
20
|
+
|
|
21
|
+
### Contract Changes
|
|
22
|
+
- Run diff between backend types and all frontend copies.
|
|
23
|
+
- Verify `contract.version.json` was updated (MINOR for additive, MAJOR for breaking).
|
|
24
|
+
- Confirm that @backend sent a Hermes notification before implementation.
|
|
25
|
+
|
|
26
|
+
### High-Risk Endpoints
|
|
27
|
+
- Every new or modified privileged endpoint must:
|
|
28
|
+
- Require `isHighRiskAdminAction: true`
|
|
29
|
+
- Require valid `managerApproval` structure
|
|
30
|
+
- Throw `HighRiskActionRequiresApprovalError` on failure
|
|
31
|
+
- Create an audit log entry
|
|
32
|
+
|
|
33
|
+
### Error Handling
|
|
34
|
+
- No raw `throw new Error(...)` in business logic.
|
|
35
|
+
- All domain errors must extend `DomainError`.
|
|
36
|
+
- Error responses must not leak internal details.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 3. Automated & Manual Verification Process
|
|
41
|
+
|
|
42
|
+
**Automated (recommended)**:
|
|
43
|
+
- Static analysis for branded type usage.
|
|
44
|
+
- Contract hash comparison script between backend and frontend.
|
|
45
|
+
|
|
46
|
+
**Manual (every sprint or major feature)**:
|
|
47
|
+
- Review all new high-risk endpoints.
|
|
48
|
+
- Sample audit logs for privileged actions.
|
|
49
|
+
- Check that governance decisions are documented in `docs/architecture/decisions/`.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 4. Escalation Rules
|
|
54
|
+
|
|
55
|
+
When violations are found:
|
|
56
|
+
1. Immediately notify @manager via Hermes.
|
|
57
|
+
2. Provide clear evidence (file paths, code snippets, missing fields).
|
|
58
|
+
3. Recommend specific corrective actions.
|
|
59
|
+
4. Do not approve feature completion until issues are resolved.
|
|
60
|
+
|
|
61
|
+
**@analyst has authority to block merge** on governance or contract violations in corporate projects.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 5. Reference Knowledge Files (Must Read)
|
|
66
|
+
|
|
67
|
+
- `branded-types-law.md`
|
|
68
|
+
- `high-risk-actions-managerapproval.md`
|
|
69
|
+
- `domain-error-handling-standard.md`
|
|
70
|
+
- `audit-logging-standard.md`
|
|
71
|
+
- `corporate-project-scaffolding-sop.md`
|
|
72
|
+
- `contract-drift-detection-simulation.md`
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 6. Reporting Template
|
|
77
|
+
|
|
78
|
+
When reporting an issue to @manager, use this structure:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Contract/Governance Issue Report
|
|
82
|
+
|
|
83
|
+
Trace ID: ...
|
|
84
|
+
Severity: High / Medium / Low
|
|
85
|
+
Affected Area: ...
|
|
86
|
+
Violation: ...
|
|
87
|
+
Evidence: ...
|
|
88
|
+
Recommended Fix: ...
|
|
89
|
+
Impact if not fixed: ...
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
This ensures consistent, professional communication.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Audit Logging Standard
|
|
2
|
+
|
|
3
|
+
**Applies to**: All privileged, high-risk, or compliance-relevant operations in enterprise projects using Agent Enderun.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
Every significant administrative or security-relevant action must leave a tamper-evident, queryable audit trail. This is a non-negotiable requirement for corporate and regulated environments.
|
|
7
|
+
|
|
8
|
+
## Core Requirements
|
|
9
|
+
|
|
10
|
+
1. **What Must Be Logged**
|
|
11
|
+
- All high-risk administrative actions (role changes, configuration modifications, bulk operations, data exports).
|
|
12
|
+
- Authentication and authorization events (login, token issuance, permission checks).
|
|
13
|
+
- Any action performed using a `managerApproval` token.
|
|
14
|
+
- Failed attempts to perform privileged operations.
|
|
15
|
+
|
|
16
|
+
2. **Minimum Information per Log Entry**
|
|
17
|
+
- Timestamp (ISO-8601, UTC)
|
|
18
|
+
- Trace ID (linked to the originating Hermes trace when applicable)
|
|
19
|
+
- Actor (UserID of the person or system performing the action)
|
|
20
|
+
- Action type (e.g., `USER_ROLE_ELEVATED`, `SYSTEM_CONFIG_UPDATED`)
|
|
21
|
+
- Target resource (e.g., affected UserID or configuration key)
|
|
22
|
+
- Before and after state (when relevant and not containing secrets)
|
|
23
|
+
- `managerApproval` details (approvalId, reason, approver) if the action was high-risk
|
|
24
|
+
- Outcome (success / failure + error code if applicable)
|
|
25
|
+
|
|
26
|
+
3. **Storage and Integrity**
|
|
27
|
+
- Audit logs must be stored separately from operational data when possible.
|
|
28
|
+
- Logs must be append-only. Updates or deletions of existing log entries are forbidden.
|
|
29
|
+
- In production systems, logs should be shipped to a tamper-resistant store (e.g., dedicated database table with row-level security, or external logging service).
|
|
30
|
+
|
|
31
|
+
4. **Access Control**
|
|
32
|
+
- Reading full audit logs is itself a high-risk operation and must follow the `managerApproval` process.
|
|
33
|
+
- Regular users should never have direct access to raw audit logs.
|
|
34
|
+
|
|
35
|
+
## Implementation Guidelines for @backend
|
|
36
|
+
|
|
37
|
+
- Create a dedicated `AuditLog` domain entity and repository.
|
|
38
|
+
- Use a structured logging approach (never unstructured strings for critical fields).
|
|
39
|
+
- Every high-risk service method must create an audit entry as part of the same transaction (or as a guaranteed side effect).
|
|
40
|
+
- Never log sensitive data (passwords, tokens, PII) in plaintext.
|
|
41
|
+
|
|
42
|
+
## Implementation Guidelines for @frontend
|
|
43
|
+
|
|
44
|
+
- Administrative UIs that trigger high-risk actions must clearly indicate that the action will be audited.
|
|
45
|
+
- Audit log viewing interfaces (when built) must themselves be protected by the high-risk approval flow.
|
|
46
|
+
|
|
47
|
+
## Relationship to Other Standards
|
|
48
|
+
|
|
49
|
+
- Works together with the `ManagerApproval` pattern: every approved high-risk action must produce a corresponding audit entry that references the `approvalId`.
|
|
50
|
+
- Supports the Branded Types Law: `ActorID`, `TargetID`, and `ApprovalID` in audit records must be properly branded types.
|
|
51
|
+
|
|
52
|
+
## Anti-Patterns
|
|
53
|
+
|
|
54
|
+
- Logging only to console or ephemeral files in production.
|
|
55
|
+
- Making audit logs mutable.
|
|
56
|
+
- Skipping audit entries for “internal” or “trusted” admin users.
|
|
57
|
+
- Storing audit data in the same tables as operational data without clear separation.
|
|
58
|
+
|
|
59
|
+
This standard is mandatory for any project that claims enterprise or regulated status under Agent Enderun.
|