agent-enderun 0.6.1 → 0.6.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.
Files changed (72) hide show
  1. package/.enderun/PROJECT_MEMORY.md +110 -2
  2. package/.enderun/STATUS.md +3 -3
  3. package/.enderun/agents/analyst.md +97 -10
  4. package/.enderun/agents/backend.md +258 -14
  5. package/.enderun/agents/explorer.md +67 -2
  6. package/.enderun/agents/frontend.md +404 -66
  7. package/.enderun/agents/git.md +19 -2
  8. package/.enderun/agents/manager.md +412 -45
  9. package/.enderun/agents/mobile.md +62 -18
  10. package/.enderun/agents/native.md +60 -10
  11. package/.enderun/blueprints/backend/errors/blueprint.json +11 -0
  12. package/.enderun/blueprints/backend/errors/domain-error.ts +34 -55
  13. package/.enderun/knowledge/framework_vs_user_project_boundary.md +52 -0
  14. package/.enderun/knowledge/frontend_professionalization_guidelines.md +108 -0
  15. package/.enderun/knowledge/hermes_live_test_guidelines.md +90 -0
  16. package/.enderun/knowledge/manager_authority_audit_enforcement.md +104 -0
  17. package/.enderun/knowledge/project_scaffold_guidelines.md +99 -0
  18. package/.enderun/knowledge/reference_application_guidelines.md +90 -0
  19. package/.enderun/messages/2026-05-23-backend-to-manager-auth-errors-reply.json +23 -0
  20. package/.enderun/messages/2026-05-23-manager-to-backend-auth-errors.json +26 -0
  21. package/ENDERUN.md +10 -3
  22. package/README.md +185 -625
  23. package/antigravity.md +15 -0
  24. package/bin/cli.js +92 -27
  25. package/docs/README.md +33 -3
  26. package/docs/getting-started.md +497 -0
  27. package/docs/roadmap.md +200 -0
  28. package/framework-mcp/README.md +1 -1
  29. package/framework-mcp/dist/index.js +0 -0
  30. package/framework-mcp/dist/tools/academy.js +6 -8
  31. package/framework-mcp/dist/tools/codebase.js +6 -6
  32. package/framework-mcp/dist/tools/contract.js +94 -4
  33. package/framework-mcp/dist/tools/database.js +1 -1
  34. package/framework-mcp/dist/tools/framework.js +8 -12
  35. package/framework-mcp/dist/tools/git.js +2 -2
  36. package/framework-mcp/dist/tools/knowledge.js +4 -4
  37. package/framework-mcp/dist/tools/memory.js +5 -7
  38. package/framework-mcp/dist/tools/messages.js +6 -6
  39. package/framework-mcp/dist/tools/repository.js +4 -4
  40. package/framework-mcp/dist/tools/scaffold.js +6 -3
  41. package/framework-mcp/dist/tools/security.js +4 -4
  42. package/framework-mcp/dist/utils.js +1 -1
  43. package/framework-mcp/package.json +1 -1
  44. package/framework-mcp/src/schemas.ts +7 -0
  45. package/framework-mcp/src/tools/academy.ts +5 -9
  46. package/framework-mcp/src/tools/codebase.ts +6 -6
  47. package/framework-mcp/src/tools/contract.ts +114 -4
  48. package/framework-mcp/src/tools/database.ts +1 -1
  49. package/framework-mcp/src/tools/framework.ts +9 -12
  50. package/framework-mcp/src/tools/git.ts +2 -2
  51. package/framework-mcp/src/tools/knowledge.ts +5 -6
  52. package/framework-mcp/src/tools/memory.ts +5 -6
  53. package/framework-mcp/src/tools/messages.ts +94 -28
  54. package/framework-mcp/src/tools/repository.ts +5 -6
  55. package/framework-mcp/src/tools/scaffold.ts +9 -6
  56. package/framework-mcp/src/tools/security.ts +4 -4
  57. package/framework-mcp/src/utils.ts +2 -2
  58. package/gemini.md +4 -4
  59. package/package.json +11 -7
  60. package/panda.config.ts +3 -1
  61. package/.enderun/benchmarks/.gitkeep +0 -0
  62. package/.enderun/blueprints/backend/middleware/error-handler.ts +0 -24
  63. package/.enderun/blueprints/backend/types/api.ts +0 -20
  64. package/.enderun/blueprints/backend/types/brands.ts +0 -12
  65. package/.enderun/blueprints/backend/types/constants.ts +0 -34
  66. package/.enderun/blueprints/backend/types/index.ts +0 -49
  67. package/.enderun/blueprints/backend/types/logs.ts +0 -16
  68. package/.enderun/blueprints/backend/types/models.ts +0 -65
  69. package/.enderun/blueprints/frontend/ui/Button.tsx +0 -60
  70. package/.enderun/blueprints/frontend/ui/Input.tsx +0 -43
  71. package/.enderun/monitoring/.gitkeep +0 -0
  72. package/gemini-extension.json +0 -13
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-enderun",
3
- "version": "0.6.1",
3
+ "version": "0.6.5",
4
4
  "description": "The Supreme AI Governance & Orchestration Framework for Enterprise Development",
5
5
  "author": "Yusuf BEKAR",
6
6
  "license": "MIT",
@@ -43,15 +43,15 @@
43
43
  ".env.example",
44
44
  "tsconfig.json",
45
45
  "panda.config.ts",
46
- "gemini.md",
47
- "gemini-extension.json",
46
+ "antigravity.md",
48
47
  "cursor.md",
49
48
  "claude.md",
50
49
  "codex.md",
50
+ "gemini.md",
51
51
  "docs"
52
52
  ],
53
53
  "scripts": {
54
- "enderun:build": "npm run build --prefix framework-mcp",
54
+ "enderun:build": "npm run build --workspace=framework-mcp",
55
55
  "enderun:test": "vitest run",
56
56
  "enderun:test:watch": "vitest",
57
57
  "enderun:status": "agent-enderun status",
@@ -66,18 +66,22 @@
66
66
  },
67
67
  "devDependencies": {
68
68
  "@eslint/js": "^9.20.0",
69
+ "@modelcontextprotocol/sdk": "^1.26.0",
70
+ "@pandacss/dev": "^0.53.0",
69
71
  "@types/node": "^22.13.4",
72
+ "agent-enderun": "^0.6.5",
70
73
  "concurrently": "^9.1.2",
71
74
  "eslint": "^9.20.1",
75
+ "ts-morph": "^28.0.0",
72
76
  "tsx": "^4.19.4",
73
77
  "typescript": "^5.9.3",
74
78
  "typescript-eslint": "^8.59.3",
75
79
  "vitest": "^3.0.5",
76
- "@pandacss/dev": "^0.53.0"
80
+ "zod": "^3.24.2"
77
81
  },
78
82
  "enderun": {
79
- "version": "0.5.9",
80
- "initializedAt": "2026-05-19T14:23:38.760Z"
83
+ "version": "0.6.5",
84
+ "initializedAt": "2026-05-23T13:00:32.411Z"
81
85
  },
82
86
  "dependencies": {}
83
87
  }
package/panda.config.ts CHANGED
@@ -9,7 +9,9 @@ export default defineConfig({
9
9
  "./src/**/*.{js,jsx,ts,tsx}",
10
10
  "./pages/**/*.{js,jsx,ts,tsx}",
11
11
  "./apps/**/*.{js,jsx,ts,tsx}",
12
- "./packages/ui/src/**/*.{ts,tsx}",
12
+ // Project-internal UI components only (no packages/ui by default)
13
+ "./apps/**/src/components/**/*.{ts,tsx}",
14
+ "./apps/**/src/ui/**/*.{ts,tsx}",
13
15
  ],
14
16
 
15
17
  // Files to exclude
File without changes
@@ -1,24 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { DomainError } from "../errors/domain-error.js";
3
-
4
- /**
5
- * Global Error Handler for Fastify (Template)
6
- * This middleware captures DomainErrors and formats them consistently.
7
- */
8
- export const errorHandler = (error: unknown, request: any, reply: any) => {
9
- // Capture custom domain errors
10
- if (error instanceof DomainError) {
11
- return reply.status(error.statusCode).send(error.toApiResponse());
12
- }
13
-
14
- // Fallback for unknown errors
15
- request.log.error(error);
16
-
17
- return reply.status(500).send({
18
- error: {
19
- code: "INTERNAL_ERROR",
20
- message: "An unexpected error occurred.",
21
- details: process.env.NODE_ENV === "development" ? error.message : undefined
22
- }
23
- });
24
- };
@@ -1,20 +0,0 @@
1
- import { TraceID } from "./brands.js";
2
-
3
- /**
4
- * API Response Wrappers
5
- */
6
- export interface ApiResponse<T> {
7
- data: T;
8
- meta?: {
9
- requestId: TraceID;
10
- timestamp: string;
11
- };
12
- }
13
-
14
- export interface ApiError {
15
- error: {
16
- code: string;
17
- message: string;
18
- details?: unknown;
19
- };
20
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Branded Type Utility
3
- */
4
- export type Brand<K, T> = K & { __brand: T };
5
-
6
- /**
7
- * Entity IDs (Branded)
8
- */
9
- export type TraceID = Brand<string, "TraceID">;
10
- export type AgentID = Brand<string, "AgentID">;
11
- export type ProjectID = Brand<string, "ProjectID">;
12
- export type UserID = Brand<string, "UserID">;
@@ -1,34 +0,0 @@
1
- import { TraceID } from "./brands.js";
2
-
3
- /**
4
- * Project Phases
5
- */
6
- export const PROJECT_PHASES = ["PHASE_0", "PHASE_1", "PHASE_2", "PHASE_3", "PHASE_4"] as const;
7
- export type ProjectPhase = (typeof PROJECT_PHASES)[number];
8
-
9
- /**
10
- * Execution Profiles
11
- */
12
- export const EXECUTION_PROFILES = ["Lightweight", "Full"] as const;
13
- export type ExecutionProfile = (typeof EXECUTION_PROFILES)[number];
14
-
15
- /**
16
- * Task Priorities
17
- */
18
- export const TASK_PRIORITIES = ["P0", "P1", "P2", "P3"] as const;
19
- export type TaskPriority = (typeof TASK_PRIORITIES)[number];
20
-
21
- /**
22
- * Task Statuses
23
- */
24
- export const TASK_STATUSES = ["PENDING", "IN_PROGRESS", "BLOCKED", "COMPLETED", "FAILED"] as const;
25
- export type TaskStatus = (typeof TASK_STATUSES)[number];
26
-
27
- /**
28
- * Action Types & Status
29
- */
30
- export const ACTION_TYPES = ["CREATE", "MODIFY", "DELETE", "RESEARCH", "ORCHESTRATE"] as const;
31
- export type ActionType = (typeof ACTION_TYPES)[number];
32
-
33
- export const ACTION_STATUSES = ["SUCCESS", "FAILURE", "WAITING"] as const;
34
- export type ActionStatus = (typeof ACTION_STATUSES)[number];
@@ -1,49 +0,0 @@
1
- /**
2
- * Agent Enderun — App-Local Types (Modular)
3
- */
4
-
5
- export * from "./brands.js";
6
- export * from "./constants.js";
7
- export * from "./models.js";
8
- export * from "./api.js";
9
- export * from "./logs.js";
10
-
11
- // --- Generated Application Contract ---
12
- export type RoleID = Brand<string, "RoleID">;
13
- export type ReportID = Brand<string, "ReportID">;
14
- export type CustomerID = Brand<string, "CustomerID">;
15
-
16
- export interface AuthSession {
17
- user: User;
18
- token: string;
19
- expiresAt: string;
20
- }
21
-
22
- export interface Role {
23
- id: RoleID;
24
- name: string;
25
- permissions: string[];
26
- }
27
-
28
- export interface Customer {
29
- id: CustomerID;
30
- name: string;
31
- ownerId: UserID;
32
- status: "LEAD" | "ACTIVE" | "AT_RISK";
33
- annualValue: number;
34
- createdAt: string;
35
- }
36
-
37
- export interface ReportMetric {
38
- id: ReportID;
39
- label: string;
40
- value: number;
41
- trend: "UP" | "DOWN" | "FLAT";
42
- }
43
-
44
- export interface DashboardSummary {
45
- customers: Customer[];
46
- users: User[];
47
- roles: Role[];
48
- reports: ReportMetric[];
49
- }
@@ -1,16 +0,0 @@
1
- import { TraceID, AgentID } from "./brands.js";
2
- import { ActionType, ActionStatus } from "./constants.js";
3
-
4
- /**
5
- * Audit & Agent Logging Types
6
- */
7
- export interface AgentActionLog {
8
- timestamp: string;
9
- agent: AgentID;
10
- action: ActionType;
11
- requestId: TraceID | "—";
12
- status: ActionStatus;
13
- summary: string;
14
- files?: string[];
15
- details?: Record<string, unknown>;
16
- }
@@ -1,65 +0,0 @@
1
- import { UserID, TraceID, AgentID } from "./brands.js";
2
- import { ProjectPhase, ExecutionProfile, TaskPriority, TaskStatus } from "./constants.js";
3
-
4
- /**
5
- * Base Entity Fields
6
- */
7
- export interface BaseEntity {
8
- id: string; // Usually ULID
9
- createdAt: string;
10
- updatedAt: string;
11
- deletedAt?: string | null;
12
- }
13
-
14
- /**
15
- * Audit Log Model
16
- */
17
- export interface AuditLog extends BaseEntity {
18
- entityName: string;
19
- entityId: string;
20
- action: "CREATE" | "UPDATE" | "DELETE" | "RESTORE";
21
- userId: UserID;
22
- previousState?: Record<string, unknown> | null;
23
- newState?: Record<string, unknown> | null;
24
- traceId: TraceID;
25
- }
26
-
27
- /**
28
- * User Model
29
- */
30
- export interface User extends BaseEntity {
31
- id: UserID;
32
- email: string;
33
- fullName: string;
34
- role: "ADMIN" | "DEVELOPER" | "VIEWER";
35
- }
36
-
37
- export interface UserProfile extends User {
38
- avatarUrl?: string;
39
- bio?: string;
40
- preferences: Record<string, unknown>;
41
- }
42
-
43
- /**
44
- * Project Status
45
- */
46
- export interface ProjectStatus {
47
- phase: ProjectPhase;
48
- profile: ExecutionProfile;
49
- lastUpdate: string;
50
- activeTraceId: TraceID | null;
51
- blockers: string[];
52
- }
53
-
54
- /**
55
- * Task Model
56
- */
57
- export interface Task {
58
- id: TraceID;
59
- description: string;
60
- agent: AgentID;
61
- priority: TaskPriority;
62
- status: TaskStatus;
63
- createdAt: string;
64
- updatedAt: string;
65
- }
@@ -1,60 +0,0 @@
1
- import { css, cx } from "../../../styled-system/css";
2
- import { type HTMLPandaProps } from "../../../styled-system/types";
3
-
4
- /**
5
- * GOLDEN STANDARD: Button Component
6
- * Uses Semantic Tokens for automatic theme support.
7
- */
8
- export interface ButtonProps extends HTMLPandaProps<"button"> {
9
- variant?: "primary" | "secondary" | "outline" | "ghost";
10
- size?: "sm" | "md" | "lg";
11
- }
12
-
13
- export const Button = (props: ButtonProps) => {
14
- const { variant = "primary", size = "md", className, ...rest } = props;
15
-
16
- const buttonStyles = css({
17
- display: "inline-flex",
18
- alignItems: "center",
19
- justifyContent: "center",
20
- fontWeight: "600",
21
- borderRadius: "md",
22
- cursor: "pointer",
23
- transition: "all 0.2s ease",
24
- _disabled: { opacity: 0.5, cursor: "not-allowed" },
25
- _active: { transform: "scale(0.98)" },
26
-
27
- // Size variants
28
- ...(size === "sm" && { px: "3", py: "1.5", fontSize: "xs" }),
29
- ...(size === "md" && { px: "4", py: "2", fontSize: "sm" }),
30
- ...(size === "lg" && { px: "6", py: "3", fontSize: "md" }),
31
-
32
- // Theme-aware Semantic Tokens
33
- ...(variant === "primary" && {
34
- bg: "accent.default",
35
- color: "accent.fg",
36
- _hover: { bg: "accent.emphasis" },
37
- }),
38
- ...(variant === "secondary" && {
39
- bg: "bg.muted",
40
- color: "text.default",
41
- _hover: { bg: "border.default" },
42
- }),
43
- ...(variant === "outline" && {
44
- bg: "transparent",
45
- border: "1px solid",
46
- borderColor: "border.default",
47
- color: "text.default",
48
- _hover: { bg: "bg.muted" },
49
- }),
50
- ...(variant === "ghost" && {
51
- bg: "transparent",
52
- color: "text.default",
53
- _hover: { bg: "bg.muted" },
54
- }),
55
- });
56
-
57
- return (
58
- <button className={cx(buttonStyles, className)} {...rest} />
59
- );
60
- };
@@ -1,43 +0,0 @@
1
- import { css, cx } from "../../../styled-system/css";
2
- import { type HTMLPandaProps } from "../../../styled-system/types";
3
-
4
- /**
5
- * GOLDEN STANDARD: Input Component
6
- * Fully theme-aware using semantic border and background tokens.
7
- */
8
- export interface InputProps extends HTMLPandaProps<"input"> {
9
- label?: string;
10
- }
11
-
12
- export const Input = (props: InputProps) => {
13
- const { className, ...rest } = props;
14
-
15
- const inputStyles = css({
16
- width: "100%",
17
- px: "4",
18
- py: "2",
19
- borderRadius: "md",
20
- border: "1px solid",
21
- borderColor: "border.default",
22
- bg: "bg.canvas",
23
- color: "text.default",
24
- fontSize: "sm",
25
- outline: "none",
26
- transition: "all 0.2s ease",
27
- _placeholder: { color: "text.muted" },
28
- _focus: {
29
- borderColor: "accent.default",
30
- ring: "2px",
31
- ringColor: "accent.default/20",
32
- },
33
- _disabled: {
34
- opacity: 0.5,
35
- cursor: "not-allowed",
36
- bg: "bg.muted",
37
- },
38
- });
39
-
40
- return (
41
- <input className={cx(inputStyles, className)} {...rest} />
42
- );
43
- };
File without changes
@@ -1,13 +0,0 @@
1
- {
2
- "name": "Agent Enderun",
3
- "description": "Enterprise-grade AI orchestration framework for software teams.",
4
- "instructions": ".gemini/ENDERUN.md",
5
- "mcpServers": {
6
- "agent-enderun": {
7
- "command": "node",
8
- "args": [
9
- "framework-mcp/dist/index.js"
10
- ]
11
- }
12
- }
13
- }