@teqfw/di 2.0.3 → 2.0.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/CHANGELOG.md +13 -0
- package/README.md +220 -149
- package/ai/AGENTS.md +8 -7
- package/ai/package-api.ts +440 -0
- package/dist/esm.js +1 -1
- package/dist/umd.js +1 -1
- package/package.json +1 -2
- package/src/AGENTS.md +5 -5
- package/src/Container.mjs +9 -6
- package/src/Def/Parser.mjs +7 -7
- package/src/Dto/DepId.mjs +8 -13
- package/src/Dto/Resolver/Config/Namespace.mjs +13 -18
- package/src/Dto/Resolver/Config.mjs +14 -20
- package/src/Enum/Composition.mjs +1 -1
- package/src/Enum/Life.mjs +1 -1
- package/src/Enum/Platform.mjs +1 -1
- package/types.d.ts +8 -5
- package/jsconfig.json +0 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.5 - 2026-03-13 - Convention alignment release
|
|
4
|
+
|
|
5
|
+
- Fixed the `Container.get` JSDoc return typing.
|
|
6
|
+
- Removed `jsconfig.json` from the published package metadata.
|
|
7
|
+
- Aligned DTO and Enum modules with the updated TeqFW convention documents.
|
|
8
|
+
- Updated package version metadata to `2.0.5`.
|
|
9
|
+
|
|
10
|
+
## 2.0.4 - 2026-03-10 - LLM-first project positioning
|
|
11
|
+
|
|
12
|
+
- Reframed `README.md` around TeqFW architecture, runtime linking, and LLM-agent-oriented development.
|
|
13
|
+
- Rewrote `PHILOSOPHY.md` into a concise statement of TeqFW principles for human and machine-oriented development.
|
|
14
|
+
- Updated package version metadata to `2.0.4`.
|
|
15
|
+
|
|
3
16
|
## 2.0.3 - 2026-03-07 - Package agent interface
|
|
4
17
|
|
|
5
18
|
- Added `ai/` to the published package file list.
|
package/README.md
CHANGED
|
@@ -3,17 +3,141 @@
|
|
|
3
3
|

|
|
4
4
|

|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
**Runtime dependency linker for JavaScript applications designed for development with LLM agents.**
|
|
7
7
|
|
|
8
|
-
`@teqfw/di`
|
|
9
|
-
It does not infer dependencies from constructor signatures.
|
|
8
|
+
`@teqfw/di` is the core infrastructure of the **Tequila Framework (TeqFW)** — an architectural approach for building web applications in which **humans design system architecture and specifications, while LLM agents generate and maintain the implementation.**
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
Instead of wiring modules through static imports, TeqFW applications declare **explicit dependency contracts**, and the container performs **deterministic runtime linking**.
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
The result is an application architecture that is easier to:
|
|
14
13
|
|
|
15
|
-
-
|
|
16
|
-
-
|
|
14
|
+
- analyze
|
|
15
|
+
- generate
|
|
16
|
+
- refactor
|
|
17
|
+
- extend
|
|
18
|
+
|
|
19
|
+
— both for **human developers and AI agents**.
|
|
20
|
+
|
|
21
|
+
## The Shift in Software Development
|
|
22
|
+
|
|
23
|
+
Large language models are becoming a permanent part of the development process.
|
|
24
|
+
|
|
25
|
+
However, most software architectures were designed for **human-written code**, not for **code generated and maintained by AI agents**.
|
|
26
|
+
|
|
27
|
+
Typical JavaScript applications rely on:
|
|
28
|
+
|
|
29
|
+
- static imports
|
|
30
|
+
- implicit dependency graphs
|
|
31
|
+
- tight coupling to file structure
|
|
32
|
+
- constructor-based dependency inference
|
|
33
|
+
|
|
34
|
+
These patterns work well for humans but are difficult for automated agents to reason about reliably.
|
|
35
|
+
|
|
36
|
+
**TeqFW proposes a different architecture.**
|
|
37
|
+
|
|
38
|
+
Modules declare **explicit dependency contracts**, and a runtime container resolves those contracts deterministically.
|
|
39
|
+
|
|
40
|
+
This transforms the dependency graph into something that can be **analyzed, generated and modified programmatically.**
|
|
41
|
+
|
|
42
|
+
## What This Library Provides
|
|
43
|
+
|
|
44
|
+
`@teqfw/di` implements the runtime container that enables this architecture.
|
|
45
|
+
|
|
46
|
+
It provides:
|
|
47
|
+
|
|
48
|
+
- deterministic runtime linking of ES modules
|
|
49
|
+
- explicit dependency contracts (**CDC — Canonical Dependency Codes**)
|
|
50
|
+
- module dependency descriptors (`__deps__`)
|
|
51
|
+
- namespace-based module resolution
|
|
52
|
+
- runtime lifecycle management
|
|
53
|
+
- wrapper-based behavioral extensions
|
|
54
|
+
|
|
55
|
+
The container acts as a **runtime linker for JavaScript applications**.
|
|
56
|
+
|
|
57
|
+
## Designed for Development with LLM Agents
|
|
58
|
+
|
|
59
|
+
When software is generated or maintained by LLM agents, several structural problems appear.
|
|
60
|
+
|
|
61
|
+
| Problem | Traditional Architecture | TeqFW Approach |
|
|
62
|
+
| ---------------- | ------------------------ | ------------------ |
|
|
63
|
+
| Dependencies | implicit imports | explicit contracts |
|
|
64
|
+
| Dependency graph | implicit | deterministic |
|
|
65
|
+
| Refactoring | fragile | stable |
|
|
66
|
+
| Testing | manual wiring | container driven |
|
|
67
|
+
| AI compatibility | accidental | intentional |
|
|
68
|
+
|
|
69
|
+
TeqFW structures the application so that **LLM agents can reliably understand and modify the system.**
|
|
70
|
+
|
|
71
|
+
## Agent-Driven Implementation
|
|
72
|
+
|
|
73
|
+
Starting from version **2.0.0**, the source code of this library is **written primarily by Codex agents**.
|
|
74
|
+
|
|
75
|
+
The development workflow follows **specification-driven development**:
|
|
76
|
+
|
|
77
|
+
1. The human architect defines **product specifications**
|
|
78
|
+
2. LLM agents generate the implementation
|
|
79
|
+
3. The generated code is reviewed and integrated
|
|
80
|
+
|
|
81
|
+
This workflow follows the **ADSM methodology (Agent-Driven Software Management)** developed by **Alex Gusev**.
|
|
82
|
+
|
|
83
|
+
Earlier versions of the library (<2.0.0) were written manually.
|
|
84
|
+
The current version demonstrates how software can be developed using **human-defined architecture and AI-generated code**.
|
|
85
|
+
|
|
86
|
+
## Learn the Architecture (Interactive Onboarding)
|
|
87
|
+
|
|
88
|
+
Understanding this architecture can take time.
|
|
89
|
+
|
|
90
|
+
To make onboarding easier, an **interactive AI assistant** [is available](https://fly.wiredgeese.com/flancer/gpt/teqfw/guide/di/).
|
|
91
|
+
|
|
92
|
+
The assistant can explain:
|
|
93
|
+
|
|
94
|
+
- how the container works
|
|
95
|
+
- what Canonical Dependency Codes are
|
|
96
|
+
- how modules declare dependencies
|
|
97
|
+
- how runtime linking works
|
|
98
|
+
- how to integrate the library in real applications
|
|
99
|
+
|
|
100
|
+
The assistant acts as **interactive documentation** for the project.
|
|
101
|
+
|
|
102
|
+
Custom onboarding assistants like this can also be created **as a service** for other projects and libraries.
|
|
103
|
+
|
|
104
|
+
## Agent Interface (Documentation for LLM Agents)
|
|
105
|
+
|
|
106
|
+
This package includes **agent interface documentation** intended for LLM agents that use the library as an npm dependency.
|
|
107
|
+
|
|
108
|
+
These documents are distributed inside the package in:
|
|
109
|
+
|
|
110
|
+
```txt
|
|
111
|
+
./ai/
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
The files in this directory describe the **public interface of the package in an agent-friendly form**.
|
|
115
|
+
|
|
116
|
+
They explain:
|
|
117
|
+
|
|
118
|
+
- the container API
|
|
119
|
+
- dependency descriptors (`__deps__`)
|
|
120
|
+
- Canonical Dependency Codes (CDC)
|
|
121
|
+
- dependency resolution behavior
|
|
122
|
+
- integration patterns
|
|
123
|
+
|
|
124
|
+
Human developers typically read the README and source code, while **LLM agents can rely on the documentation in `./ai/`.**
|
|
125
|
+
|
|
126
|
+
## Tequila Framework Philosophy
|
|
127
|
+
|
|
128
|
+
`@teqfw/di` is the core building block of the **Tequila Framework (TeqFW)** ecosystem.
|
|
129
|
+
|
|
130
|
+
TeqFW is based on several architectural principles:
|
|
131
|
+
|
|
132
|
+
- runtime late binding between components
|
|
133
|
+
- namespace-based module organization
|
|
134
|
+
- modular monolith architecture
|
|
135
|
+
- pure JavaScript without compilation
|
|
136
|
+
- system structures optimized for collaboration with LLM agents
|
|
137
|
+
|
|
138
|
+
Full philosophy:
|
|
139
|
+
|
|
140
|
+
`PHILOSOPHY.md`
|
|
17
141
|
|
|
18
142
|
## Installation
|
|
19
143
|
|
|
@@ -21,13 +145,13 @@ This branch is the v2 line.
|
|
|
21
145
|
npm install @teqfw/di
|
|
22
146
|
```
|
|
23
147
|
|
|
24
|
-
## Quick
|
|
148
|
+
## Quick Example
|
|
25
149
|
|
|
26
|
-
###
|
|
150
|
+
### Define modules
|
|
27
151
|
|
|
28
152
|
`src/App/Child.mjs`
|
|
29
153
|
|
|
30
|
-
```
|
|
154
|
+
```javascript
|
|
31
155
|
export default function App_Child() {
|
|
32
156
|
return { name: "child" };
|
|
33
157
|
}
|
|
@@ -35,7 +159,7 @@ export default function App_Child() {
|
|
|
35
159
|
|
|
36
160
|
`src/App/Root.mjs`
|
|
37
161
|
|
|
38
|
-
```
|
|
162
|
+
```javascript
|
|
39
163
|
export const __deps__ = {
|
|
40
164
|
child: "App_Child$",
|
|
41
165
|
};
|
|
@@ -48,9 +172,9 @@ export default function App_Root({ child }) {
|
|
|
48
172
|
}
|
|
49
173
|
```
|
|
50
174
|
|
|
51
|
-
###
|
|
175
|
+
### Configure container
|
|
52
176
|
|
|
53
|
-
```
|
|
177
|
+
```javascript
|
|
54
178
|
import path from "node:path";
|
|
55
179
|
import { fileURLToPath } from "node:url";
|
|
56
180
|
import Container from "@teqfw/di";
|
|
@@ -59,68 +183,73 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
59
183
|
const __dirname = path.dirname(__filename);
|
|
60
184
|
|
|
61
185
|
const container = new Container();
|
|
186
|
+
|
|
62
187
|
container.addNamespaceRoot("App_", path.resolve(__dirname, "./src/App"), ".mjs");
|
|
63
188
|
|
|
64
189
|
const root = await container.get("App_Root$");
|
|
65
|
-
|
|
66
|
-
console.log(root.
|
|
67
|
-
console.log(
|
|
190
|
+
|
|
191
|
+
console.log(root.name);
|
|
192
|
+
console.log(root.child.name);
|
|
68
193
|
```
|
|
69
194
|
|
|
70
|
-
|
|
195
|
+
The container:
|
|
71
196
|
|
|
72
|
-
|
|
197
|
+
- loads modules
|
|
198
|
+
- resolves dependency contracts
|
|
199
|
+
- constructs the object graph
|
|
200
|
+
- returns **frozen linked objects**
|
|
73
201
|
|
|
74
|
-
|
|
202
|
+
## Dependency Contracts (`__deps__`)
|
|
203
|
+
|
|
204
|
+
Modules declare dependencies using a static export.
|
|
205
|
+
|
|
206
|
+
```javascript
|
|
75
207
|
export const __deps__ = {
|
|
76
|
-
localName: "
|
|
208
|
+
localName: "Dependency_CDC",
|
|
77
209
|
};
|
|
78
210
|
```
|
|
79
211
|
|
|
80
|
-
Rules
|
|
212
|
+
Rules:
|
|
213
|
+
|
|
214
|
+
- if `__deps__` is absent — module has no dependencies
|
|
215
|
+
- keys correspond to constructor argument names
|
|
216
|
+
- values are CDC dependency identifiers
|
|
217
|
+
- dependencies are resolved recursively
|
|
81
218
|
|
|
82
|
-
|
|
83
|
-
- keys are local argument names passed into factory/class constructor
|
|
84
|
-
- values are CDC strings
|
|
85
|
-
- dependencies are resolved recursively before instantiation
|
|
219
|
+
## Canonical Dependency Codes (CDC)
|
|
86
220
|
|
|
87
|
-
|
|
221
|
+
CDC identifiers describe **how dependencies should be resolved**.
|
|
88
222
|
|
|
89
|
-
|
|
223
|
+
General form:
|
|
90
224
|
|
|
91
|
-
```
|
|
225
|
+
```txt
|
|
92
226
|
[PlatformPrefix]ModuleName[__ExportName][LifecycleAndWrappers]
|
|
93
227
|
```
|
|
94
228
|
|
|
95
|
-
Where:
|
|
96
|
-
|
|
97
|
-
- `PlatformPrefix`: `node_` | `npm_` | omitted (`teq` by default)
|
|
98
|
-
- `Export segment`: `__ExportName`
|
|
99
|
-
- `Lifecycle marker`: `$` | `$$` | `$$$`
|
|
100
|
-
- `Wrappers`: `_<wrapperId>` suffixes after lifecycle marker
|
|
101
|
-
|
|
102
229
|
Examples:
|
|
103
230
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
231
|
+
```txt
|
|
232
|
+
App_Service
|
|
233
|
+
App_Service$
|
|
234
|
+
App_Service__build$$
|
|
235
|
+
App_Service$$_wrapLog_wrapTrace
|
|
236
|
+
node_fs
|
|
237
|
+
npm_lodash
|
|
238
|
+
```
|
|
110
239
|
|
|
111
|
-
|
|
240
|
+
Where:
|
|
112
241
|
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
242
|
+
- `$` singleton lifecycle
|
|
243
|
+
- `$$` new instance lifecycle
|
|
244
|
+
- wrappers modify runtime behavior
|
|
116
245
|
|
|
117
246
|
## Public API
|
|
118
247
|
|
|
119
|
-
```
|
|
248
|
+
```javascript
|
|
120
249
|
const container = new Container();
|
|
121
250
|
```
|
|
122
251
|
|
|
123
|
-
|
|
252
|
+
Configuration methods (before first `get`):
|
|
124
253
|
|
|
125
254
|
- `setParser(parser)`
|
|
126
255
|
- `addNamespaceRoot(prefix, target, defaultExt)`
|
|
@@ -128,137 +257,79 @@ Builder stage methods (only before first `get`):
|
|
|
128
257
|
- `addPostprocess(fn)`
|
|
129
258
|
- `enableLogging()`
|
|
130
259
|
- `enableTestMode()`
|
|
131
|
-
- `register(cdc, mock)`
|
|
132
|
-
|
|
133
|
-
Resolution:
|
|
134
|
-
|
|
135
|
-
- `await container.get(cdc)`
|
|
136
|
-
|
|
137
|
-
Behavioral guarantees:
|
|
138
|
-
|
|
139
|
-
- configuration is locked after first `get`
|
|
140
|
-
- fail-fast pipeline
|
|
141
|
-
- deterministic linking under identical contracts and config
|
|
142
|
-
- produced values are frozen
|
|
143
|
-
- container enters failed state after fatal linking error
|
|
144
|
-
|
|
145
|
-
## Wrappers
|
|
146
|
-
|
|
147
|
-
Wrappers are postprocess plugins registered during container configuration.
|
|
148
|
-
They are activated by wrapper markers in the CDC string and applied to the produced value after instantiation.
|
|
149
|
-
|
|
150
|
-
Wrappers:
|
|
260
|
+
- `register(cdc, mock)`
|
|
151
261
|
|
|
152
|
-
|
|
153
|
-
- are **not module exports**
|
|
154
|
-
- are applied in declared order
|
|
155
|
-
- must return synchronously
|
|
156
|
-
- run before lifecycle enforcement and freeze
|
|
262
|
+
Dependency resolution:
|
|
157
263
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
```text
|
|
161
|
-
ModuleName$$_wrapperA_wrapperB
|
|
264
|
+
```javascript
|
|
265
|
+
await container.get(cdc);
|
|
162
266
|
```
|
|
163
267
|
|
|
164
|
-
|
|
165
|
-
They declaratively modify how a resolved value behaves.
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
### Example: Logging Wrapper
|
|
268
|
+
Behavior:
|
|
170
269
|
|
|
171
|
-
|
|
270
|
+
- deterministic linking
|
|
271
|
+
- fail-fast resolution pipeline
|
|
272
|
+
- immutable returned objects
|
|
273
|
+
- container enters failed state on fatal errors
|
|
172
274
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
```js
|
|
176
|
-
export default function App_Service() {
|
|
177
|
-
return {
|
|
178
|
-
sum(a, b) {
|
|
179
|
-
return a + b;
|
|
180
|
-
},
|
|
181
|
-
multiply(a, b) {
|
|
182
|
-
return a * b;
|
|
183
|
-
},
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
#### Container configuration
|
|
189
|
-
|
|
190
|
-
```js
|
|
191
|
-
container.addPostprocessWrapper("logIO", (value) => {
|
|
192
|
-
return new Proxy(value, {
|
|
193
|
-
get(target, prop, receiver) {
|
|
194
|
-
const original = Reflect.get(target, prop, receiver);
|
|
195
|
-
|
|
196
|
-
if (typeof original !== "function") {
|
|
197
|
-
return original;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
return function (...args) {
|
|
201
|
-
console.log(`[CALL] ${String(prop)} ->`, args);
|
|
202
|
-
const result = original.apply(this, args);
|
|
203
|
-
console.log(`[RETURN] ${String(prop)} ->`, result);
|
|
204
|
-
return result;
|
|
205
|
-
};
|
|
206
|
-
},
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
```
|
|
275
|
+
## Wrappers
|
|
210
276
|
|
|
211
|
-
|
|
277
|
+
Wrappers allow cross-cutting behavior to be applied declaratively.
|
|
212
278
|
|
|
213
|
-
|
|
214
|
-
const service = await container.get("App_Service$$_logIO");
|
|
279
|
+
Example CDC:
|
|
215
280
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
// [RETURN] sum -> 5
|
|
281
|
+
```txt
|
|
282
|
+
App_Service$$_log_trace
|
|
219
283
|
```
|
|
220
284
|
|
|
221
|
-
|
|
222
|
-
The wrapper applies cross-cutting behavior declaratively through CDC.
|
|
223
|
-
|
|
224
|
-
This allows:
|
|
285
|
+
Wrappers can implement:
|
|
225
286
|
|
|
287
|
+
- logging
|
|
288
|
+
- metrics
|
|
226
289
|
- tracing
|
|
227
|
-
-
|
|
228
|
-
- access control
|
|
290
|
+
- security checks
|
|
229
291
|
- behavioral instrumentation
|
|
230
292
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
Wrappers therefore act as a declarative DI-level AOP mechanism.
|
|
293
|
+
This acts as a lightweight **DI-level AOP mechanism.**
|
|
234
294
|
|
|
235
|
-
## Test Mode
|
|
295
|
+
## Test Mode
|
|
236
296
|
|
|
237
|
-
```
|
|
297
|
+
```javascript
|
|
238
298
|
container.enableTestMode();
|
|
239
|
-
|
|
299
|
+
|
|
300
|
+
container.register("App_Service$", mockService);
|
|
240
301
|
```
|
|
241
302
|
|
|
242
|
-
|
|
303
|
+
Mocks are resolved before module instantiation.
|
|
243
304
|
|
|
244
305
|
## Browser Usage
|
|
245
306
|
|
|
246
|
-
ESM via jsDelivr:
|
|
247
|
-
|
|
248
307
|
```html
|
|
249
308
|
<script type="module">
|
|
250
309
|
import Container from "https://cdn.jsdelivr.net/npm/@teqfw/di@2/+esm";
|
|
310
|
+
|
|
251
311
|
const container = new Container();
|
|
252
312
|
</script>
|
|
253
313
|
```
|
|
254
314
|
|
|
255
|
-
## Documentation
|
|
315
|
+
## Documentation
|
|
316
|
+
|
|
317
|
+
Detailed documentation lives in `ctx/`:
|
|
318
|
+
|
|
319
|
+
- `ctx/docs/product/overview.md`
|
|
320
|
+
- `ctx/docs/product/default-cdc-profile.md`
|
|
321
|
+
- `ctx/docs/architecture/cdc-profile/default/grammar.md`
|
|
322
|
+
- `ctx/docs/architecture/cdc-profile/default/transformation.md`
|
|
323
|
+
- `ctx/docs/architecture/cdc-profile/default/validation.md`
|
|
324
|
+
- `ctx/docs/code/components/container.md`
|
|
325
|
+
|
|
326
|
+
## Author
|
|
327
|
+
|
|
328
|
+
**Alex Gusev**
|
|
329
|
+
|
|
330
|
+
Creator of:
|
|
256
331
|
|
|
257
|
-
|
|
332
|
+
- **Tequila Framework (TeqFW)**
|
|
333
|
+
- **ADSM (Agent-Driven Software Management)**
|
|
258
334
|
|
|
259
|
-
|
|
260
|
-
- default CDC profile: `ctx/docs/product/default-cdc-profile.md`
|
|
261
|
-
- grammar: `ctx/docs/architecture/cdc-profile/default/grammar.md`
|
|
262
|
-
- transformation: `ctx/docs/architecture/cdc-profile/default/transformation.md`
|
|
263
|
-
- validation: `ctx/docs/architecture/cdc-profile/default/validation.md`
|
|
264
|
-
- container contract: `ctx/docs/code/components/container.md`
|
|
335
|
+
The project explores how software architecture evolves when **LLM agents become active participants in the development process**.
|
package/ai/AGENTS.md
CHANGED
|
@@ -50,13 +50,14 @@ This mechanism separates module implementation from dependency binding and allow
|
|
|
50
50
|
Agents should read the documents in this directory in the following order:
|
|
51
51
|
|
|
52
52
|
1. **AGENTS.md** — overview of the package and navigation of the Agent Interface.
|
|
53
|
-
2. **
|
|
54
|
-
3. **
|
|
55
|
-
4. **
|
|
56
|
-
5. **
|
|
57
|
-
6. **
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
2. **package-api.ts** — machine-readable contract of the supported programmatic API, public entrypoints, structural contracts, and internal exclusions.
|
|
54
|
+
3. **concepts.md** — architectural concepts and design principles.
|
|
55
|
+
4. **container.md** — container responsibilities and dependency resolution pipeline.
|
|
56
|
+
5. **dependency-id.md** — syntax and semantics of dependency identifiers.
|
|
57
|
+
6. **extensions.md** — extension mechanisms such as preprocessors and wrappers.
|
|
58
|
+
7. **usage.md** — minimal usage scenarios and examples.
|
|
59
|
+
|
|
60
|
+
This sequence reflects the intended agent workflow: contract surface first, then architectural model, operational mechanism, dependency addressing, extension points, and practical usage.
|
|
60
61
|
|
|
61
62
|
## Interface Scope
|
|
62
63
|
|