@vegamo/loom 0.1.3 โ†’ 0.1.6

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 (44) hide show
  1. package/README.md +18 -1
  2. package/dist/agents/core/agent.d.ts.map +1 -1
  3. package/dist/agents/core/agent.js +3 -1
  4. package/dist/agents/core/agent.js.map +1 -1
  5. package/dist/agents/core/prompt.d.ts +2 -1
  6. package/dist/agents/core/prompt.d.ts.map +1 -1
  7. package/dist/agents/core/prompt.js +3 -2
  8. package/dist/agents/core/prompt.js.map +1 -1
  9. package/dist/mocks/router.d.ts.map +1 -1
  10. package/dist/mocks/router.js +16 -2
  11. package/dist/mocks/router.js.map +1 -1
  12. package/dist/serve.d.ts.map +1 -1
  13. package/dist/serve.js +2 -0
  14. package/dist/serve.js.map +1 -1
  15. package/dist/shared/mock-store.d.ts +59 -0
  16. package/dist/shared/mock-store.d.ts.map +1 -0
  17. package/dist/shared/mock-store.js +146 -0
  18. package/dist/shared/mock-store.js.map +1 -0
  19. package/dist/shared/mock-template.d.ts +11 -0
  20. package/dist/shared/mock-template.d.ts.map +1 -0
  21. package/dist/shared/mock-template.js +21 -0
  22. package/dist/shared/mock-template.js.map +1 -0
  23. package/dist/shared/requirement.d.ts +27 -0
  24. package/dist/shared/requirement.d.ts.map +1 -0
  25. package/dist/shared/requirement.js +70 -0
  26. package/dist/shared/requirement.js.map +1 -0
  27. package/dist/shared/schema-utils.d.ts.map +1 -1
  28. package/dist/shared/schema-utils.js +3 -1
  29. package/dist/shared/schema-utils.js.map +1 -1
  30. package/dist/tui/app.d.ts.map +1 -1
  31. package/dist/tui/app.js +18 -0
  32. package/dist/tui/app.js.map +1 -1
  33. package/dist/tui/components/Input.d.ts.map +1 -1
  34. package/dist/tui/components/Input.js +1 -0
  35. package/dist/tui/components/Input.js.map +1 -1
  36. package/dist/view/public/bundle.js +4267 -82915
  37. package/dist/view/public/bundle.js.map +4 -4
  38. package/dist/view/routes/mocks.d.ts +19 -0
  39. package/dist/view/routes/mocks.d.ts.map +1 -0
  40. package/dist/view/routes/mocks.js +165 -0
  41. package/dist/view/routes/mocks.js.map +1 -0
  42. package/dist/view/server.d.ts.map +1 -1
  43. package/dist/view/server.js.map +1 -1
  44. package/package.json +3 -5
package/README.md CHANGED
@@ -165,7 +165,7 @@ Options:
165
165
  - ๐Ÿ“ Module browsing with endpoint counts
166
166
  - ๐Ÿงฉ Entity browsing from `docs/entities`
167
167
  - ๐Ÿ” Real-time search across modules and endpoints
168
- - ๐Ÿ“Š Interactive JSON schema viewer with expand/collapse
168
+ - ๐Ÿ“Š Swagger-like schema table viewer for all request/response sections (query params, path params, headers, body)
169
169
  - ๐Ÿ”— `x-entity-ref` auto-resolve in endpoint request/response rendering
170
170
  - ๐ŸŽจ Clean, responsive UI with dark sidebar
171
171
  - ๐Ÿ”— Direct links to specific endpoints
@@ -424,6 +424,23 @@ Package configuration:
424
424
  - `.npmignore` excludes source files and development artifacts
425
425
  - All runtime dependencies are correctly specified
426
426
 
427
+ ## ๐Ÿ“‹ Changelog
428
+
429
+ ### v0.1.6
430
+ - **Added**: Mock view / Mock edit pages for each endpoint, accessible from the module list
431
+ - **Added**: Sidecar `<name>.mock.json` storage for hand-written mock responses (one active override per endpoint)
432
+ - **Added**: Mock server now responds with the override's HTTP status code (e.g. saving a 400 mock makes `/mock/<path>` return real HTTP 400)
433
+ - **Added**: Status code switcher in Mock view/edit, marking which statuses already have a saved override
434
+ - **Added**: cURL example block on Mock view, generated from the endpoint's `request` schema (path params, query, headers, body all filled with samples)
435
+ - **Added**: Mock.js expression support inside saved mock bodies (`@cname`, `@integer(1,100)`, `'list|1-5': [...]` etc.) โ€” templates are stored as-is and expanded on each request
436
+ - **Removed**: Inline "Mock Testing" section from the endpoint detail page (superseded by the dedicated Mock pages)
437
+
438
+ ### v0.1.4
439
+ - **Fixed**: Query parameters, path parameters, and headers for GET endpoints now display correctly in the Web Viewer
440
+ - **Improved**: All request/response sections use a consistent Swagger-like table view (SchemaTableViewer) with type badges, constraints, and expand/collapse support
441
+ - **Fixed**: Duplicate `setNotFoundHandler` error when starting the Web Viewer (`loom view`) or combined server (`loom serve`)
442
+ - **Removed**: Broken `@stoplight/json-schema-viewer` dependency (incompatible with React 19)
443
+
427
444
  ## ๐Ÿค Contributing
428
445
 
429
446
  Contributions are welcome! Please follow these steps:
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAkBH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAc,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKtG,qBAAa,KAAK;IAChB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,eAAe,CAAgC;IAEvD,WAAW;IACJ,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAEpC,kBAAkB;IACX,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;gBAEvF,MAAM,EAAE,WAAW;IAmC/B;;;;OAIG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAoJpD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;YACW,OAAO;IAQrB;;;;OAIG;YACW,gBAAgB;IAsB9B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;CAGb"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAmBH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAc,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKtG,qBAAa,KAAK;IAChB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,eAAe,CAAgC;IAEvD,WAAW;IACJ,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAEpC,kBAAkB;IACX,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;gBAEvF,MAAM,EAAE,WAAW;IAmC/B;;;;OAIG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAoJpD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;YACW,OAAO;IAQrB;;;;OAIG;YACW,gBAAgB;IAsB9B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;CAGb"}
@@ -23,6 +23,7 @@ import { Memory } from '../memory/memory.js';
23
23
  import { buildSystemPrompt } from './prompt.js';
24
24
  import { listSchemaFiles } from '../../shared/schema-utils.js';
25
25
  import { listEntityFiles } from '../../shared/entity-utils.js';
26
+ import { loadRequirement } from '../../shared/requirement.js';
26
27
  import { getOutDir } from '../../shared/config.js';
27
28
  import { logger } from '../../shared/logger.js';
28
29
  import { schemaGenTool } from '../../tools/schema-gen.js';
@@ -261,7 +262,8 @@ export class Agent {
261
262
  initSystemPrompt() {
262
263
  const existing = listSchemaFiles(this.toolContext.outDir);
263
264
  const existingEntities = listEntityFiles(this.toolContext.outDir);
264
- const prompt = buildSystemPrompt(existing.map((f) => f.filename), existingEntities.map((f) => f.filename));
265
+ const requirementContent = loadRequirement(this.config.projectDir);
266
+ const prompt = buildSystemPrompt(existing.map((f) => f.filename), existingEntities.map((f) => f.filename), requirementContent);
265
267
  this.memory.add({ role: 'system', content: prompt });
266
268
  }
267
269
  setState(state) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agents/core/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agents/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAItG,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,MAAM,OAAO,KAAK;IACR,GAAG,CAAY;IACf,KAAK,CAAe;IACpB,MAAM,CAAS;IACf,MAAM,CAAc;IACpB,WAAW,CAAc;IACzB,KAAK,GAAe,MAAM,CAAC;IAC3B,eAAe,GAA2B,IAAI,CAAC;IAEvD,WAAW;IACJ,OAAO,CAAsB;IAEpC,kBAAkB;IACX,aAAa,CAA+E;IAEnG,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,cAAc;QACd,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEhD,YAAY;QACZ,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YACrB,aAAa;YACb,kBAAkB;YAClB,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,kBAAkB;SACnB,CAAC,CAAC;QAEH,QAAQ;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAE3B,UAAU;QACV,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,GAAG;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM;SACP,CAAC;QAEF,mBAAmB;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,wBAAwB;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE7C,YAAY;QACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAExD,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,sBAAsB,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC;QAErD,IAAI,CAAC;YACH,OAAO,UAAU,GAAG,OAAO,EAAE,CAAC;gBAC5B,UAAU,EAAE,CAAC;gBAEb,SAAS;gBACT,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC1B,IAAI,QAAqB,CAAC;gBAE1B,IAAI,YAAY,EAAE,CAAC;oBACjB,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;oBACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;oBAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;oBAClC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;gBACtE,CAAC;gBAED,sCAAsC;gBACtC,MAAM,gBAAgB,GAA+B;oBACnD,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC1C,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,UAAmB;wBACzB,QAAQ,EAAE,EAAE,CAAC,QAAQ;qBACtB,CAAC,CAAC;iBACJ,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAElC,iBAAiB;gBACjB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAC9B,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACxC,cAAc,EAAE,CAAC;oBAEjB,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACzB,CAAC,CAAC;oBACH,OAAO;oBACP,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,KAAK,EAAE,cAAc;wBACrB,OAAO,EAAE,WAAW,QAAQ,KAAK;wBACjC,QAAQ;qBACT,CAAC,CAAC;oBAEH,OAAO;oBACP,IAAI,IAA6B,CAAC;oBAClC,IAAI,CAAC;wBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC;oBAAC,OAAO,QAAQ,EAAE,CAAC;wBAClB,MAAM,CAAC,KAAK,CACV,uCAAuC,QAAQ,MAAM,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CACnF,CAAC;wBACF,2BAA2B;wBAC3B,MAAM,WAAW,GAAG;4BAClB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,mCAAmC,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;yBAC5G,CAAC;wBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;4BACd,IAAI,EAAE,MAAM;4BACZ,YAAY,EAAE,QAAQ,CAAC,EAAE;4BACzB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;yBACrC,CAAC,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC;4BACR,IAAI,EAAE,UAAU;4BAChB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE;yBACvE,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,OAAO;oBACP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAE1E,kBAAkB;oBAClB,IAAI,QAAQ,KAAK,cAAc,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBAClD,MAAM,IAAI,GAAG,MAAM,CAAC,IAA6B,CAAC;wBAClD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;4BAClB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACvC,CAAC;oBACH,CAAC;oBAED,gBAAgB;oBAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;wBACd,IAAI,EAAE,MAAM;wBACZ,YAAY,EAAE,QAAQ,CAAC,EAAE;wBACzB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;qBAChC,CAAC,CAAC;oBAEH,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gCACrB,CAAC,CAAE,MAAM,CAAC,IAA6B,EAAE,OAAO,IAAI,MAAM;gCAC1D,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ;yBAC7B;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,SAAS;YACT,MAAM,CAAC,IAAI,CAAC,iCAAiC,OAAO,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtB,OAAO;gBACL,OAAO,EACL,6DAA6D;oBAC7D,8DAA8D;gBAChE,gBAAgB;gBAChB,aAAa,EAAE,cAAc;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEvB,iBAAiB;YACjB,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC/E,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,+DAA+D;IAC/D,cAAc;IACd,+DAA+D;IAE/D;;OAEG;IACK,KAAK,CAAC,OAAO;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAClC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM;SACrC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE3B,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CACxB;YACE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAClC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM;SACrC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,8BAA8B;YAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,SAAS;IACT,+DAA+D;IAEvD,gBAAgB;QACtB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,iBAAiB,CAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAC/B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EACvC,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,QAAQ,CAAC,KAAiB;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,OAAO;QACP,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC;IAEO,IAAI,CAAC,KAAiB;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;CACF"}
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @param existingSchemas ๅฝ“ๅ‰ๅทฒๆœ‰็š„ schema ๆ–‡ไปถๅˆ—่กจ (ๆไพ›ไธŠไธ‹ๆ–‡)
8
8
  * @param existingEntities ๅฝ“ๅ‰ๅทฒๆœ‰็š„ๅฎžไฝ“ๆ–‡ไปถๅˆ—่กจ
9
+ * @param requirementContent requirement.md ็š„ๅ†…ๅฎน (ๅฆ‚ๆžœๅญ˜ๅœจ)
9
10
  */
10
- export declare function buildSystemPrompt(existingSchemas?: string[], existingEntities?: string[]): string;
11
+ export declare function buildSystemPrompt(existingSchemas?: string[], existingEntities?: string[], requirementContent?: string | null): string;
11
12
  //# sourceMappingURL=prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/agents/core/prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,GAAE,MAAM,EAAO,EAC9B,gBAAgB,GAAE,MAAM,EAAO,GAC9B,MAAM,CA6GR"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/agents/core/prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,GAAE,MAAM,EAAO,EAC9B,gBAAgB,GAAE,MAAM,EAAO,EAC/B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,MAAM,CA6GR"}
@@ -6,8 +6,9 @@
6
6
  *
7
7
  * @param existingSchemas ๅฝ“ๅ‰ๅทฒๆœ‰็š„ schema ๆ–‡ไปถๅˆ—่กจ (ๆไพ›ไธŠไธ‹ๆ–‡)
8
8
  * @param existingEntities ๅฝ“ๅ‰ๅทฒๆœ‰็š„ๅฎžไฝ“ๆ–‡ไปถๅˆ—่กจ
9
+ * @param requirementContent requirement.md ็š„ๅ†…ๅฎน (ๅฆ‚ๆžœๅญ˜ๅœจ)
9
10
  */
10
- export function buildSystemPrompt(existingSchemas = [], existingEntities = []) {
11
+ export function buildSystemPrompt(existingSchemas = [], existingEntities = [], requirementContent) {
11
12
  const schemaList = existingSchemas.length > 0
12
13
  ? `\nExisting schema files in docs directory:\n${existingSchemas.map((s) => `- ${s}`).join('\n')}`
13
14
  : '\nNo existing schema files yet.';
@@ -112,6 +113,6 @@ Each schema file groups related API endpoints (e.g., all user-related APIs in on
112
113
 
113
114
  ## Current State
114
115
  ${schemaList}
115
- ${entityList}`;
116
+ ${entityList}${requirementContent ? `\n\n## Project Requirements (from requirement.md)\n\nThe user has provided the following requirements document. Use it as context when designing APIs:\n\n${requirementContent}` : ''}`;
116
117
  }
117
118
  //# sourceMappingURL=prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/agents/core/prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,kBAA4B,EAAE,EAC9B,mBAA6B,EAAE;IAE/B,MAAM,UAAU,GACd,eAAe,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,+CAA+C,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClG,CAAC,CAAC,iCAAiC,CAAC;IACxC,MAAM,UAAU,GACd,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACzB,CAAC,CAAC,8CAA8C,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClG,CAAC,CAAC,iCAAiC,CAAC;IAExC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiGP,UAAU;EACV,UAAU,EAAE,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/agents/core/prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,kBAA4B,EAAE,EAC9B,mBAA6B,EAAE,EAC/B,kBAAkC;IAElC,MAAM,UAAU,GACd,eAAe,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,+CAA+C,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClG,CAAC,CAAC,iCAAiC,CAAC;IACxC,MAAM,UAAU,GACd,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACzB,CAAC,CAAC,8CAA8C,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClG,CAAC,CAAC,iCAAiC,CAAC;IAExC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiGP,UAAU;EACV,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,6JAA6J,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7N,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/mocks/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAa/C;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/mocks/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAe/C;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
@@ -5,6 +5,8 @@
5
5
  */
6
6
  import { listSchemaFiles, readSchemaFile } from '../shared/schema-utils.js';
7
7
  import { generateMockData } from './generator.js';
8
+ import { getActiveMockOverride } from '../shared/mock-store.js';
9
+ import { expandMockTemplate } from '../shared/mock-template.js';
8
10
  import { logger } from '../shared/logger.js';
9
11
  /**
10
12
  * ๅฐ† schema ไธญ็š„่ทฏๅพ„ๅ‚ๆ•ฐๆ ผๅผ่ฝฌๆขไธบ Fastify ๆ ผๅผ
@@ -26,8 +28,20 @@ export async function registerMockRoutes(fastify, docsDir, prefix = '') {
26
28
  for (const endpoint of doc.endpoints) {
27
29
  const fullPath = normalizePath(endpoint.path, prefix);
28
30
  const method = endpoint.method.toLowerCase();
29
- fastify[method](fullPath, async () => {
30
- // ๅ–็ฌฌไธ€ไธชๆˆๅŠŸๅ“ๅบ”็š„ schema ๆฅ็”Ÿๆˆๆ•ฐๆฎ
31
+ const schemaFilename = fileMeta.filename;
32
+ const endpointPath = endpoint.path;
33
+ const endpointMethod = endpoint.method;
34
+ fastify[method](fullPath, async (_request, reply) => {
35
+ // 1. ไผ˜ๅ…ˆ็”จ active override (ไธ€ไธช endpoint ๅฝ“ๅ‰ๅชๆœ‰ไธ€ไปฝ):
36
+ // ๆ—ขๅ†ณๅฎš body, ไนŸๅ†ณๅฎš HTTP ๅ“ๅบ”็Šถๆ€็ 
37
+ const active = getActiveMockOverride(docsDir, schemaFilename, endpointMethod, endpointPath);
38
+ if (active) {
39
+ const code = parseInt(active.statusCode, 10);
40
+ if (!Number.isNaN(code))
41
+ reply.code(code);
42
+ return expandMockTemplate(active.body);
43
+ }
44
+ // 2. fallback: ็”จ็ฌฌไธ€ไธช 2xx ็š„ schema ็”Ÿๆˆ้ป˜่ฎคๆ•ฐๆฎ
31
45
  const successStatus = Object.keys(endpoint.response).find((s) => s.startsWith('2')) || '200';
32
46
  const responseSchema = endpoint.response[successStatus];
33
47
  if (responseSchema) {
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/mocks/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C;;;GAGG;AACH,SAAS,aAAa,CAAC,UAAkB,EAAE,MAAc;IACvD,OAAO,MAAM,GAAG,UAAU,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAwB,EACxB,OAAe,EACf,SAAiB,EAAE;IAEnB,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE9C,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAK/B,CAAC;YAEZ,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnC,yBAAyB;gBACzB,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;gBACzE,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAExD,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBAC1C,CAAC;gBAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/mocks/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C;;;GAGG;AACH,SAAS,aAAa,CAAC,UAAkB,EAAE,MAAc;IACvD,OAAO,MAAM,GAAG,UAAU,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAwB,EACxB,OAAe,EACf,SAAiB,EAAE;IAEnB,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE9C,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAK/B,CAAC;YAEZ,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YACnC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;YAEvC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAClD,+CAA+C;gBAC/C,8BAA8B;gBAC9B,MAAM,MAAM,GAAG,qBAAqB,CAClC,OAAO,EACP,cAAc,EACd,cAAc,EACd,YAAY,CACb,CAAC;gBACF,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1C,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzC,CAAC;gBAED,wCAAwC;gBACxC,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;gBACzE,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACxD,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBAC1C,CAAC;gBAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAeH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CrE"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgBH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CrE"}
package/dist/serve.js CHANGED
@@ -16,6 +16,7 @@ import { fileURLToPath } from 'node:url';
16
16
  import { schemaRoutes } from './view/routes/schema.js';
17
17
  import { docsRoutes } from './view/routes/docs.js';
18
18
  import { entityRoutes } from './view/routes/entities.js';
19
+ import { mockRoutes } from './view/routes/mocks.js';
19
20
  import { registerMockRoutes } from './mocks/router.js';
20
21
  import { logger } from './shared/logger.js';
21
22
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -33,6 +34,7 @@ export async function startServe(options) {
33
34
  await app.register(schemaRoutes, { docsDir });
34
35
  await app.register(docsRoutes, { docsDir });
35
36
  await app.register(entityRoutes, { docsDir });
37
+ await app.register(mockRoutes, { docsDir });
36
38
  // Mock ่ทฏ็”ฑ (ๅธฆ /mock ๅ‰็ผ€)
37
39
  const routeCount = await registerMockRoutes(app, docsDir, '/mock');
38
40
  // SPA fallback: BrowserRouter ๅˆทๆ–ฐๅญ่ทฏๅพ„ๆ—ถ็ปŸไธ€ๅ›ž้€€ๅˆฐ index.html
package/dist/serve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Mock ๅญ˜ๆกฃ่ฏปๅ†™
3
+ *
4
+ * ไผด็”Ÿๆ–‡ไปถๆ–นๆกˆ: docs/foo.schema.json โ†’ docs/foo.mock.json
5
+ *
6
+ * ๆ–‡ไปถ็ป“ๆž„ (version 1):
7
+ * {
8
+ * "version": 1,
9
+ * "endpoints": [
10
+ * {
11
+ * "method": "GET",
12
+ * "path": "/users/:id",
13
+ * "responses": {
14
+ * "200": { "default": <body> }
15
+ * }
16
+ * }
17
+ * ]
18
+ * }
19
+ *
20
+ * ไธญ้—ด็š„ "default" ่ฟ™ไธ€ๅฑ‚ๆ˜ฏๅ ไฝ, ๅŽ็ปญๆ”ฏๆŒ OpenAPI ็š„ๅคš mediaType /
21
+ * ๅคš scenario ๆ—ถ, ๅฏๆผ”ๅŒ–ๆˆ "application/json" / "happy-path" ็ญ‰ key,
22
+ * ่€Œๆ— ้œ€็ ดๅๆ—ขๆœ‰็ป“ๆž„ใ€‚
23
+ */
24
+ export interface MockEndpointEntry {
25
+ method: string;
26
+ path: string;
27
+ responses: {
28
+ [statusCode: string]: {
29
+ [variant: string]: unknown;
30
+ };
31
+ };
32
+ }
33
+ export interface MockDocument {
34
+ version: 1;
35
+ endpoints: MockEndpointEntry[];
36
+ }
37
+ /** ๆŠŠ foo.schema.json ๆ˜ ๅฐ„ๅˆฐ foo.mock.json */
38
+ export declare function mockFilenameFromSchema(schemaFilename: string): string;
39
+ export declare function mockFilepathFromSchema(docsDir: string, schemaFilename: string): string;
40
+ export declare function readMockDocument(filepath: string): MockDocument;
41
+ export declare function writeMockDocument(filepath: string, doc: MockDocument): void;
42
+ /** ๆŸฅๆ‰พไธ€ไธช endpoint ๅœจๆŒ‡ๅฎš status ไธ‹็š„ mock ่ฆ†็›–ๅ€ผ, ๆฒกๆœ‰ๅฐฑ่ฟ”ๅ›ž undefined */
43
+ export declare function getMockOverride(docsDir: string, schemaFilename: string, method: string, endpointPath: string, statusCode: string, variant?: string): unknown | undefined;
44
+ /** ่ทจๆ‰€ๆœ‰ schema ๆ–‡ไปถๆŸฅๆ‰พ mock ่ฆ†็›– (mock ๆœๅŠก็”จ, ไธ็Ÿฅ้“ๆฅๆบ schema) */
45
+ export declare function findMockOverrideAcrossDocs(docsDir: string, method: string, endpointPath: string, statusCode: string, variant?: string): unknown | undefined;
46
+ /**
47
+ * ๆŸฅๆ‰พไธ€ไธช endpoint ๅฝ“ๅ‰ๆฟ€ๆดป็š„ override (status + body)ใ€‚
48
+ * ไธ€ไธช endpoint ๅŒไธ€ๆ—ถ้—ดๅชๆœ‰ไธ€ไปฝ active overrideใ€‚
49
+ * ๅœจๆŒ‡ๅฎš schema ๆ–‡ไปถไธญๆŸฅๆ‰พใ€‚
50
+ */
51
+ export declare function getActiveMockOverride(docsDir: string, schemaFilename: string, method: string, endpointPath: string, variant?: string): {
52
+ statusCode: string;
53
+ body: unknown;
54
+ } | undefined;
55
+ /** ๅ†™ๅ…ฅ/ๆ›ดๆ–ฐไธ€ไธช endpoint ๅœจๆŒ‡ๅฎš status ไธ‹็š„ mock ่ฆ†็›–ๅ€ผ */
56
+ export declare function setMockOverride(docsDir: string, schemaFilename: string, method: string, endpointPath: string, statusCode: string, body: unknown, variant?: string): void;
57
+ /** ๅˆ ้™ค mock ่ฆ†็›–, ่ฎฉ endpoint ๅ›ž้€€ๅˆฐ generator ้ป˜่ฎค */
58
+ export declare function deleteMockOverride(docsDir: string, schemaFilename: string, method: string, endpointPath: string, statusCode: string, variant?: string): void;
59
+ //# sourceMappingURL=mock-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-store.d.ts","sourceRoot":"","sources":["../../src/shared/mock-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE;QACT,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;SAC5B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAID,0CAA0C;AAC1C,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAc/D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAM3E;AAYD,4DAA4D;AAC5D,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAwB,GAChC,OAAO,GAAG,SAAS,CAKrB;AAED,uDAAuD;AACvD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAwB,GAChC,OAAO,GAAG,SAAS,CAUrB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,MAAwB,GAChC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAWnD;AAED,8CAA8C;AAC9C,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,MAAwB,GAChC,IAAI,CAwBN;AAED,8CAA8C;AAC9C,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAwB,GAChC,IAAI,CAgBN"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Mock ๅญ˜ๆกฃ่ฏปๅ†™
3
+ *
4
+ * ไผด็”Ÿๆ–‡ไปถๆ–นๆกˆ: docs/foo.schema.json โ†’ docs/foo.mock.json
5
+ *
6
+ * ๆ–‡ไปถ็ป“ๆž„ (version 1):
7
+ * {
8
+ * "version": 1,
9
+ * "endpoints": [
10
+ * {
11
+ * "method": "GET",
12
+ * "path": "/users/:id",
13
+ * "responses": {
14
+ * "200": { "default": <body> }
15
+ * }
16
+ * }
17
+ * ]
18
+ * }
19
+ *
20
+ * ไธญ้—ด็š„ "default" ่ฟ™ไธ€ๅฑ‚ๆ˜ฏๅ ไฝ, ๅŽ็ปญๆ”ฏๆŒ OpenAPI ็š„ๅคš mediaType /
21
+ * ๅคš scenario ๆ—ถ, ๅฏๆผ”ๅŒ–ๆˆ "application/json" / "happy-path" ็ญ‰ key,
22
+ * ่€Œๆ— ้œ€็ ดๅๆ—ขๆœ‰็ป“ๆž„ใ€‚
23
+ */
24
+ import fs from 'node:fs';
25
+ import path from 'node:path';
26
+ const DEFAULT_VARIANT = 'default';
27
+ /** ๆŠŠ foo.schema.json ๆ˜ ๅฐ„ๅˆฐ foo.mock.json */
28
+ export function mockFilenameFromSchema(schemaFilename) {
29
+ return schemaFilename.replace(/\.schema\.json$/, '.mock.json');
30
+ }
31
+ export function mockFilepathFromSchema(docsDir, schemaFilename) {
32
+ return path.join(docsDir, mockFilenameFromSchema(schemaFilename));
33
+ }
34
+ export function readMockDocument(filepath) {
35
+ if (!fs.existsSync(filepath)) {
36
+ return { version: 1, endpoints: [] };
37
+ }
38
+ try {
39
+ const raw = fs.readFileSync(filepath, 'utf-8');
40
+ const parsed = JSON.parse(raw);
41
+ if (typeof parsed !== 'object' || parsed === null || !Array.isArray(parsed.endpoints)) {
42
+ return { version: 1, endpoints: [] };
43
+ }
44
+ return { version: 1, endpoints: parsed.endpoints };
45
+ }
46
+ catch {
47
+ return { version: 1, endpoints: [] };
48
+ }
49
+ }
50
+ export function writeMockDocument(filepath, doc) {
51
+ const dir = path.dirname(filepath);
52
+ if (!fs.existsSync(dir)) {
53
+ fs.mkdirSync(dir, { recursive: true });
54
+ }
55
+ fs.writeFileSync(filepath, JSON.stringify(doc, null, 2), 'utf-8');
56
+ }
57
+ function findEntry(doc, method, endpointPath) {
58
+ return doc.endpoints.find((e) => e.method.toUpperCase() === method.toUpperCase() && e.path === endpointPath);
59
+ }
60
+ /** ๆŸฅๆ‰พไธ€ไธช endpoint ๅœจๆŒ‡ๅฎš status ไธ‹็š„ mock ่ฆ†็›–ๅ€ผ, ๆฒกๆœ‰ๅฐฑ่ฟ”ๅ›ž undefined */
61
+ export function getMockOverride(docsDir, schemaFilename, method, endpointPath, statusCode, variant = DEFAULT_VARIANT) {
62
+ const filepath = mockFilepathFromSchema(docsDir, schemaFilename);
63
+ const doc = readMockDocument(filepath);
64
+ const entry = findEntry(doc, method, endpointPath);
65
+ return entry?.responses?.[statusCode]?.[variant];
66
+ }
67
+ /** ่ทจๆ‰€ๆœ‰ schema ๆ–‡ไปถๆŸฅๆ‰พ mock ่ฆ†็›– (mock ๆœๅŠก็”จ, ไธ็Ÿฅ้“ๆฅๆบ schema) */
68
+ export function findMockOverrideAcrossDocs(docsDir, method, endpointPath, statusCode, variant = DEFAULT_VARIANT) {
69
+ if (!fs.existsSync(docsDir))
70
+ return undefined;
71
+ const files = fs.readdirSync(docsDir).filter((f) => f.endsWith('.mock.json'));
72
+ for (const f of files) {
73
+ const doc = readMockDocument(path.join(docsDir, f));
74
+ const entry = findEntry(doc, method, endpointPath);
75
+ const value = entry?.responses?.[statusCode]?.[variant];
76
+ if (value !== undefined)
77
+ return value;
78
+ }
79
+ return undefined;
80
+ }
81
+ /**
82
+ * ๆŸฅๆ‰พไธ€ไธช endpoint ๅฝ“ๅ‰ๆฟ€ๆดป็š„ override (status + body)ใ€‚
83
+ * ไธ€ไธช endpoint ๅŒไธ€ๆ—ถ้—ดๅชๆœ‰ไธ€ไปฝ active overrideใ€‚
84
+ * ๅœจๆŒ‡ๅฎš schema ๆ–‡ไปถไธญๆŸฅๆ‰พใ€‚
85
+ */
86
+ export function getActiveMockOverride(docsDir, schemaFilename, method, endpointPath, variant = DEFAULT_VARIANT) {
87
+ const filepath = mockFilepathFromSchema(docsDir, schemaFilename);
88
+ const doc = readMockDocument(filepath);
89
+ const entry = findEntry(doc, method, endpointPath);
90
+ if (!entry)
91
+ return undefined;
92
+ for (const [statusCode, variants] of Object.entries(entry.responses)) {
93
+ if (variants && variants[variant] !== undefined) {
94
+ return { statusCode, body: variants[variant] };
95
+ }
96
+ }
97
+ return undefined;
98
+ }
99
+ /** ๅ†™ๅ…ฅ/ๆ›ดๆ–ฐไธ€ไธช endpoint ๅœจๆŒ‡ๅฎš status ไธ‹็š„ mock ่ฆ†็›–ๅ€ผ */
100
+ export function setMockOverride(docsDir, schemaFilename, method, endpointPath, statusCode, body, variant = DEFAULT_VARIANT) {
101
+ const filepath = mockFilepathFromSchema(docsDir, schemaFilename);
102
+ const doc = readMockDocument(filepath);
103
+ let entry = findEntry(doc, method, endpointPath);
104
+ if (!entry) {
105
+ entry = { method: method.toUpperCase(), path: endpointPath, responses: {} };
106
+ doc.endpoints.push(entry);
107
+ }
108
+ // ๅŒไธ€ endpoint ๅŒไธ€ๆ—ถ้—ดๅชๅ…่ฎธไธ€ไปฝ active override:
109
+ // ๅ†™ๅ…ฅๆ–ฐ status ๅ‰, ๆธ…ๆމๅ…ถๅฎƒ status ๅœจๅŒ variant ไธ‹็š„่ฆ†็›–
110
+ for (const code of Object.keys(entry.responses)) {
111
+ if (code === statusCode)
112
+ continue;
113
+ if (entry.responses[code] && variant in entry.responses[code]) {
114
+ delete entry.responses[code][variant];
115
+ if (Object.keys(entry.responses[code]).length === 0) {
116
+ delete entry.responses[code];
117
+ }
118
+ }
119
+ }
120
+ if (!entry.responses[statusCode]) {
121
+ entry.responses[statusCode] = {};
122
+ }
123
+ entry.responses[statusCode][variant] = body;
124
+ writeMockDocument(filepath, doc);
125
+ }
126
+ /** ๅˆ ้™ค mock ่ฆ†็›–, ่ฎฉ endpoint ๅ›ž้€€ๅˆฐ generator ้ป˜่ฎค */
127
+ export function deleteMockOverride(docsDir, schemaFilename, method, endpointPath, statusCode, variant = DEFAULT_VARIANT) {
128
+ const filepath = mockFilepathFromSchema(docsDir, schemaFilename);
129
+ if (!fs.existsSync(filepath))
130
+ return;
131
+ const doc = readMockDocument(filepath);
132
+ const entry = findEntry(doc, method, endpointPath);
133
+ if (!entry)
134
+ return;
135
+ if (entry.responses[statusCode]) {
136
+ delete entry.responses[statusCode][variant];
137
+ if (Object.keys(entry.responses[statusCode]).length === 0) {
138
+ delete entry.responses[statusCode];
139
+ }
140
+ }
141
+ if (Object.keys(entry.responses).length === 0) {
142
+ doc.endpoints = doc.endpoints.filter((e) => e !== entry);
143
+ }
144
+ writeMockDocument(filepath, doc);
145
+ }
146
+ //# sourceMappingURL=mock-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-store.js","sourceRoot":"","sources":["../../src/shared/mock-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Mock ๆจกๆฟๅฑ•ๅผ€
3
+ *
4
+ * ๅŒ…่ฃ… mockjs, ๆŠŠๅญ˜ๆกฃ้‡Œ็š„ override body ๅฝ“ไฝœ Mock.js ๆจกๆฟ:
5
+ * - ๅญ—็ฌฆไธฒ้‡Œ็š„ "@cname" / "@integer(1,100)" ็ญ‰ไผš่ขซๆฑ‚ๅ€ผ
6
+ * - ๆ•ฐ็ป„็š„ 'key|1-10' ่ฟ™็ฑป่ง„ๅˆ™ไนŸไผšๅฑ•ๅผ€
7
+ *
8
+ * ๅคฑ่ดฅๆ—ถ่ฟ”ๅ›žๅŽŸๅ€ผ, ไธๅฝฑๅ“ mock ๆœๅŠกๅฏ็”จๆ€งใ€‚
9
+ */
10
+ export declare function expandMockTemplate(value: unknown): unknown;
11
+ //# sourceMappingURL=mock-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-template.d.ts","sourceRoot":"","sources":["../../src/shared/mock-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAO1D"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Mock ๆจกๆฟๅฑ•ๅผ€
3
+ *
4
+ * ๅŒ…่ฃ… mockjs, ๆŠŠๅญ˜ๆกฃ้‡Œ็š„ override body ๅฝ“ไฝœ Mock.js ๆจกๆฟ:
5
+ * - ๅญ—็ฌฆไธฒ้‡Œ็š„ "@cname" / "@integer(1,100)" ็ญ‰ไผš่ขซๆฑ‚ๅ€ผ
6
+ * - ๆ•ฐ็ป„็š„ 'key|1-10' ่ฟ™็ฑป่ง„ๅˆ™ไนŸไผšๅฑ•ๅผ€
7
+ *
8
+ * ๅคฑ่ดฅๆ—ถ่ฟ”ๅ›žๅŽŸๅ€ผ, ไธๅฝฑๅ“ mock ๆœๅŠกๅฏ็”จๆ€งใ€‚
9
+ */
10
+ import Mock from 'mockjs';
11
+ export function expandMockTemplate(value) {
12
+ if (value === undefined || value === null)
13
+ return value;
14
+ try {
15
+ return Mock.mock(value);
16
+ }
17
+ catch {
18
+ return value;
19
+ }
20
+ }
21
+ //# sourceMappingURL=mock-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-template.js","sourceRoot":"","sources":["../../src/shared/mock-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * requirement.md ็ฎก็†ๆจกๅ—
3
+ *
4
+ * ๆไพ› requirement.md ็š„็”Ÿๆˆใ€ๅŠ ่ฝฝๅŠŸ่ƒฝ
5
+ * requirement.md ็”จไบŽ็”จๆˆทๅ’Œ Agent ๅไฝœๆ•ด็†้œ€ๆฑ‚๏ผŒไฝœไธบ Agent ็š„ไธŠไธ‹ๆ–‡
6
+ */
7
+ interface GenerateResult {
8
+ status: 'created' | 'overwritten' | 'confirm';
9
+ message: string;
10
+ }
11
+ /**
12
+ * Generate a requirement.md file in the project directory.
13
+ *
14
+ * @param projectDir Project root directory
15
+ * @param force If true, overwrite existing file without prompting
16
+ * @returns Result indicating what happened
17
+ */
18
+ export declare function generateRequirement(projectDir: string, force?: boolean): GenerateResult;
19
+ /**
20
+ * Load the content of requirement.md from the project directory, if it exists.
21
+ *
22
+ * @param projectDir Project root directory
23
+ * @returns The file content, or null if the file doesn't exist
24
+ */
25
+ export declare function loadRequirement(projectDir: string): string | null;
26
+ export {};
27
+ //# sourceMappingURL=requirement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirement.d.ts","sourceRoot":"","sources":["../../src/shared/requirement.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH,UAAU,cAAc;IACtB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,cAAc,CAmB9F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOjE"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * requirement.md ็ฎก็†ๆจกๅ—
3
+ *
4
+ * ๆไพ› requirement.md ็š„็”Ÿๆˆใ€ๅŠ ่ฝฝๅŠŸ่ƒฝ
5
+ * requirement.md ็”จไบŽ็”จๆˆทๅ’Œ Agent ๅไฝœๆ•ด็†้œ€ๆฑ‚๏ผŒไฝœไธบ Agent ็š„ไธŠไธ‹ๆ–‡
6
+ */
7
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ const REQUIREMENT_FILENAME = 'requirement.md';
10
+ const REQUIREMENT_TEMPLATE = `# Project Requirements
11
+
12
+ > This file is used to collaboratively organize requirements between you and the AI agent.
13
+ > It will be automatically loaded as context in each session.
14
+ > Feel free to edit this file to describe your API requirements, business rules, and design decisions.
15
+
16
+ ## Overview
17
+
18
+ <!-- Describe the overall purpose of your API project -->
19
+
20
+ ## API Modules
21
+
22
+ <!-- List the main API modules and their responsibilities -->
23
+
24
+ ## Business Rules
25
+
26
+ <!-- Document important business rules and constraints -->
27
+
28
+ ## Notes
29
+
30
+ <!-- Any additional notes or context for the agent -->
31
+ `;
32
+ /**
33
+ * Generate a requirement.md file in the project directory.
34
+ *
35
+ * @param projectDir Project root directory
36
+ * @param force If true, overwrite existing file without prompting
37
+ * @returns Result indicating what happened
38
+ */
39
+ export function generateRequirement(projectDir, force = false) {
40
+ const filePath = join(projectDir, REQUIREMENT_FILENAME);
41
+ const exists = existsSync(filePath);
42
+ if (exists && !force) {
43
+ return {
44
+ status: 'confirm',
45
+ message: `requirement.md already exists in ${projectDir}. Run /init again to overwrite it.`,
46
+ };
47
+ }
48
+ writeFileSync(filePath, REQUIREMENT_TEMPLATE, 'utf-8');
49
+ return {
50
+ status: exists ? 'overwritten' : 'created',
51
+ message: exists
52
+ ? `requirement.md has been overwritten in ${projectDir}.`
53
+ : `requirement.md has been created in ${projectDir}. Edit it to describe your requirements โ€” it will be loaded as agent context in each session.`,
54
+ };
55
+ }
56
+ /**
57
+ * Load the content of requirement.md from the project directory, if it exists.
58
+ *
59
+ * @param projectDir Project root directory
60
+ * @returns The file content, or null if the file doesn't exist
61
+ */
62
+ export function loadRequirement(projectDir) {
63
+ const filePath = join(projectDir, REQUIREMENT_FILENAME);
64
+ if (!existsSync(filePath)) {
65
+ return null;
66
+ }
67
+ const content = readFileSync(filePath, 'utf-8').trim();
68
+ return content || null;
69
+ }
70
+ //# sourceMappingURL=requirement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirement.js","sourceRoot":"","sources":["../../src/shared/requirement.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAE9C,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB5B,CAAC;AAOF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,QAAiB,KAAK;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,oCAAoC,UAAU,oCAAoC;SAC5F,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAEvD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAC1C,OAAO,EAAE,MAAM;YACb,CAAC,CAAC,0CAA0C,UAAU,GAAG;YACzD,CAAC,CAAC,sCAAsC,UAAU,+FAA+F;KACpJ,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../src/shared/schema-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAG/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAqBjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAM3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,cAAc,CAQzE"}
1
+ {"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../src/shared/schema-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAG/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAuBjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAM3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,cAAc,CAQzE"}
@@ -17,7 +17,9 @@ export function listSchemaFiles(docsDir) {
17
17
  if (!fs.existsSync(docsDir)) {
18
18
  return [];
19
19
  }
20
- const files = fs.readdirSync(docsDir).filter((f) => f.endsWith('.schema.json'));
20
+ const files = fs
21
+ .readdirSync(docsDir)
22
+ .filter((f) => f.endsWith('.schema.json') && !f.endsWith('.mock.json'));
21
23
  return files.map((filename) => {
22
24
  const filepath = path.join(docsDir, filename);
23
25
  const stat = fs.statSync(filepath);