@exchanet/enet 1.0.7 → 1.0.8
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/.enet/modular-design.md +4 -4
- package/manifest.schema.json +191 -0
- package/package.json +6 -2
- package/registry.json +2 -2
package/.enet/modular-design.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
# METHOD
|
|
1
|
+
# METHOD MODULAR DESIGN — Agent Instructions
|
|
2
2
|
> Universal Modular Architecture · v1.0.0 · @exchanet
|
|
3
3
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## YOUR PRIMARY DIRECTIVE / TU DIRECTIVA PRINCIPAL
|
|
7
7
|
|
|
8
|
-
You are building a modular application using Method
|
|
8
|
+
You are building a modular application using Method Modular Design. Every module you create must be self-describing via a `manifest.json` file. The manifest is written **before any code**. The system reads manifests to automatically generate the Admin Panel, dashboard, and settings UI. You never manually wire backend logic to the Admin Panel — the manifest does it.
|
|
9
9
|
|
|
10
|
-
Estás construyendo una aplicación modular usando Method
|
|
10
|
+
Estás construyendo una aplicación modular usando Method Modular Design. Cada módulo que crees debe ser auto-descriptivo a través de un archivo `manifest.json`. El manifest se escribe **antes de cualquier código**. El sistema lee los manifests para generar automáticamente el Panel Admin, dashboard y UI de configuración. Nunca cablearás manualmente la lógica backend al Panel Admin — el manifest lo hace.
|
|
11
11
|
|
|
12
12
|
**If a module has no manifest, it does not exist.**
|
|
13
13
|
**Si un módulo no tiene manifest, no existe.**
|
|
@@ -133,4 +133,4 @@ Before marking any module complete / Antes de marcar cualquier módulo como comp
|
|
|
133
133
|
---
|
|
134
134
|
|
|
135
135
|
*For full documentation / Para documentación completa: `METHOD.md`*
|
|
136
|
-
*Method
|
|
136
|
+
*Method Modular Design v1.0.0 · @exchanet · MIT*
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://github.com/exchanet/method-reflex/manifest.schema.json",
|
|
4
|
+
"title": "Method REFLEX — Module Manifest",
|
|
5
|
+
"description": "Universal contract for self-describing modules. Every module must have a valid manifest.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["id", "name", "version", "type", "section"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
|
|
10
|
+
"definitions": {
|
|
11
|
+
"handlerRef": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"pattern": "^[A-Z][a-zA-Z0-9]*\\.[a-z][a-zA-Z0-9]*$",
|
|
14
|
+
"description": "ClassName.methodName — e.g. ActivityLogger.getAll"
|
|
15
|
+
},
|
|
16
|
+
"capabilityType": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"enum": ["view", "action", "metric", "widget", "page", "theme", "component-override"]
|
|
19
|
+
},
|
|
20
|
+
"uiWidget": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"enum": ["text", "textarea", "number", "slider", "toggle", "select", "multiselect", "code", "color", "date", "tags"]
|
|
23
|
+
},
|
|
24
|
+
"settingType": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"enum": ["integer", "number", "string", "boolean", "select", "multiselect"]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
"properties": {
|
|
31
|
+
"id": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
34
|
+
"minLength": 2,
|
|
35
|
+
"maxLength": 64,
|
|
36
|
+
"description": "Unique module identifier. kebab-case. Used in URLs, API paths, and settings namespace."
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
"name": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"minLength": 2,
|
|
42
|
+
"maxLength": 100,
|
|
43
|
+
"description": "Human-readable module name. Shown in Admin Panel navigation."
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
"version": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
|
|
49
|
+
"description": "Semantic version: major.minor.patch"
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
"type": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"enum": ["core", "functional", "integration", "ui"],
|
|
55
|
+
"description": "core: system-level. functional: business logic. integration: external services. ui: themes and components."
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
"section": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
61
|
+
"description": "Admin Panel navigation group. Modules with the same section are grouped together."
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
"description": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"maxLength": 500,
|
|
67
|
+
"description": "Optional. Human-readable description of the module."
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
"icon": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"description": "Optional. Icon name from the project's icon library."
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"type": "array",
|
|
77
|
+
"items": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"pattern": "^[a-z][a-z0-9-]*$"
|
|
80
|
+
},
|
|
81
|
+
"description": "Module IDs that must be booted before this module."
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
"hooks": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"patternProperties": {
|
|
87
|
+
"^[a-z][a-z0-9]*(\\.[a-z][a-z0-9]*)*$": {
|
|
88
|
+
"$ref": "#/definitions/handlerRef"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"additionalProperties": false,
|
|
92
|
+
"description": "Events this module listens to. Format: { 'event.name': 'ClassName.method' }"
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
"settings": {
|
|
96
|
+
"type": "object",
|
|
97
|
+
"patternProperties": {
|
|
98
|
+
"^[a-z][a-z0-9_]*$": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"required": ["type", "label", "default"],
|
|
101
|
+
"additionalProperties": false,
|
|
102
|
+
"properties": {
|
|
103
|
+
"type": { "$ref": "#/definitions/settingType" },
|
|
104
|
+
"label": { "type": "string" },
|
|
105
|
+
"description": { "type": "string" },
|
|
106
|
+
"default": {},
|
|
107
|
+
"ui": { "$ref": "#/definitions/uiWidget" },
|
|
108
|
+
"options": {
|
|
109
|
+
"type": "array",
|
|
110
|
+
"items": {
|
|
111
|
+
"oneOf": [
|
|
112
|
+
{ "type": "string" },
|
|
113
|
+
{
|
|
114
|
+
"type": "object",
|
|
115
|
+
"required": ["label", "value"],
|
|
116
|
+
"properties": {
|
|
117
|
+
"label": { "type": "string" },
|
|
118
|
+
"value": {}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"description": "Required when type is select or multiselect."
|
|
124
|
+
},
|
|
125
|
+
"min": { "type": "number" },
|
|
126
|
+
"max": { "type": "number" },
|
|
127
|
+
"required": { "type": "boolean", "default": false }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"additionalProperties": false,
|
|
132
|
+
"description": "Configuration fields. Auto-rendered as forms in Admin Panel. Read via context.settings.get('key'). Never hardcode."
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
"capabilities": {
|
|
136
|
+
"type": "array",
|
|
137
|
+
"minItems": 0,
|
|
138
|
+
"items": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"required": ["type", "label"],
|
|
141
|
+
"additionalProperties": false,
|
|
142
|
+
"properties": {
|
|
143
|
+
"type": { "$ref": "#/definitions/capabilityType" },
|
|
144
|
+
"label": { "type": "string" },
|
|
145
|
+
"description": { "type": "string" },
|
|
146
|
+
"icon": { "type": "string" },
|
|
147
|
+
"data": {
|
|
148
|
+
"$ref": "#/definitions/handlerRef",
|
|
149
|
+
"description": "Handler that returns data. Required for: view, metric, widget."
|
|
150
|
+
},
|
|
151
|
+
"handler": {
|
|
152
|
+
"$ref": "#/definitions/handlerRef",
|
|
153
|
+
"description": "Handler that executes an operation. Required for: action."
|
|
154
|
+
},
|
|
155
|
+
"component": {
|
|
156
|
+
"type": "string",
|
|
157
|
+
"pattern": "^[A-Z][a-zA-Z0-9]*$",
|
|
158
|
+
"description": "Custom UI component name. For widget and page types."
|
|
159
|
+
},
|
|
160
|
+
"route": {
|
|
161
|
+
"type": "string",
|
|
162
|
+
"pattern": "^/[a-z0-9-/]*$",
|
|
163
|
+
"description": "URL route for page capabilities. Relative to /admin/{module-id}/"
|
|
164
|
+
},
|
|
165
|
+
"dangerous": {
|
|
166
|
+
"type": "boolean",
|
|
167
|
+
"default": false,
|
|
168
|
+
"description": "If true, Admin Panel shows a confirmation dialog before executing."
|
|
169
|
+
},
|
|
170
|
+
"permissions": {
|
|
171
|
+
"type": "array",
|
|
172
|
+
"items": {
|
|
173
|
+
"type": "string",
|
|
174
|
+
"pattern": "^[a-z][a-z0-9-]*:[a-z][a-z0-9-]*$"
|
|
175
|
+
},
|
|
176
|
+
"description": "Required permissions. Format: 'scope:action' e.g. 'users:delete'"
|
|
177
|
+
},
|
|
178
|
+
"target": {
|
|
179
|
+
"type": "string",
|
|
180
|
+
"description": "For component-override: the component name to replace."
|
|
181
|
+
},
|
|
182
|
+
"variables": {
|
|
183
|
+
"type": "object",
|
|
184
|
+
"description": "For theme capabilities: CSS custom property values."
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"description": "What this module exposes. Each capability becomes a UI element in Admin Panel or dashboard."
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exchanet/enet",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "enet — exchanet methods manager. Install, scaffold and manage AI coding methods.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"enet": "src/index.js"
|
|
@@ -25,13 +25,17 @@
|
|
|
25
25
|
},
|
|
26
26
|
"keywords": [
|
|
27
27
|
"exchanet",
|
|
28
|
-
"method-
|
|
28
|
+
"method-modular-design",
|
|
29
|
+
"method-enterprise-builder",
|
|
30
|
+
"method-iris",
|
|
29
31
|
"method-pdca-t",
|
|
32
|
+
"military-grade",
|
|
30
33
|
"modular-architecture",
|
|
31
34
|
"vibe-coding",
|
|
32
35
|
"cursor",
|
|
33
36
|
"windsurf",
|
|
34
37
|
"copilot",
|
|
38
|
+
"claudecode",
|
|
35
39
|
"ai-coding"
|
|
36
40
|
],
|
|
37
41
|
"author": "Francisco J Bernades (@exchanet)",
|
package/registry.json
CHANGED
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"id": "pdca-t",
|
|
26
26
|
"name": "Method PDCA-T",
|
|
27
27
|
"description": "≥99% test coverage, zero vulnerabilities, systematic quality validation cycles. Use alongside Modular Design for pro-grade results.",
|
|
28
|
-
"repo": "exchanet/method_pdca-
|
|
29
|
-
"version": "
|
|
28
|
+
"repo": "exchanet/method_pdca-t_coding",
|
|
29
|
+
"version": "3.0.0",
|
|
30
30
|
"tags": ["quality", "testing", "security", "coverage", "validation"],
|
|
31
31
|
"adapters": {
|
|
32
32
|
"cursor": ".cursor/rules/METHOD-PDCA-T.md",
|