@auto-engineer/server-implementer 1.124.0 → 1.125.0

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @auto-engineer/server-implementer@1.124.0 build /home/runner/work/auto-engineer/auto-engineer/packages/server-implementer
2
+ > @auto-engineer/server-implementer@1.125.0 build /home/runner/work/auto-engineer/auto-engineer/packages/server-implementer
3
3
  > tsc && tsx ../../scripts/fix-esm-imports.ts
4
4
 
5
5
  Fixed ESM imports in dist/
@@ -1,5 +1,5 @@
1
1
 
2
- > @auto-engineer/server-implementer@1.123.0 test /home/runner/work/auto-engineer/auto-engineer/packages/server-implementer
2
+ > @auto-engineer/server-implementer@1.124.0 test /home/runner/work/auto-engineer/auto-engineer/packages/server-implementer
3
3
  > vitest run --reporter=dot
4
4
 
5
5
 
@@ -9,6 +9,6 @@
9
9
 
10
10
   Test Files  6 passed (6)
11
11
   Tests  36 passed (36)
12
-  Start at  13:15:00
13
-  Duration  14.75s (transform 1.99s, setup 0ms, collect 23.53s, tests 1.33s, environment 13ms, prepare 4.85s)
12
+  Start at  16:38:54
13
+  Duration  12.36s (transform 2.71s, setup 0ms, collect 21.12s, tests 941ms, environment 2ms, prepare 4.51s)
14
14
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @auto-engineer/server-implementer@1.123.0 type-check /home/runner/work/auto-engineer/auto-engineer/packages/server-implementer
2
+ > @auto-engineer/server-implementer@1.124.0 type-check /home/runner/work/auto-engineer/auto-engineer/packages/server-implementer
3
3
  > tsc --noEmit
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
  # @auto-engineer/server-implementer
2
2
 
3
+ ## 1.125.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`7e9da31`](https://github.com/BeOnAuto/auto-engineer/commit/7e9da3151553186c6acd358325606906ae94116a) Thanks [@github-actions[bot]](https://github.com/github-actions%5Bbot%5D)! - - **server-implementer**: add shared findFilesToImplement with priority ordering
8
+ - **server-generator-apollo-emmett**: update missed projection spec snapshot
9
+ - **server-implementer**: strengthen system prompt for scaffolded structure
10
+ - **server-generator-apollo-emmett**: add structural guard to projection template
11
+ - **server-generator-apollo-emmett**: use Record<string, never> in state template
12
+
13
+ ### Patch Changes
14
+
15
+ - [`0ffbeaf`](https://github.com/BeOnAuto/auto-engineer/commit/0ffbeaf7d1c1b4615bc6cec744df54bf98f62d0e) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: scaffold full send in register.ts.ejs with multi-event
16
+
17
+ - [`6914859`](https://github.com/BeOnAuto/auto-engineer/commit/6914859e0a60cc4b0b24c455f257c5a2893d611e) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: add ketchup plan for typical server generation fixes
18
+
19
+ - [`f5b94e2`](https://github.com/BeOnAuto/auto-engineer/commit/f5b94e229ec68238fb61d1d082ae5cd1ad6782b8) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **global**: create ketchup plan for lint fixes in generated server
20
+
21
+ - [`e144ca0`](https://github.com/BeOnAuto/auto-engineer/commit/e144ca08e29c980e165ab0bb9272232d66f34024) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: fix createFieldUsesJSON false positive for inline objects
22
+
23
+ - [`497c35f`](https://github.com/BeOnAuto/auto-engineer/commit/497c35f33dd56f43a833faa960023f62242c1ca5) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: prefix unused query resolver params with underscore
24
+
25
+ - [`3b1217f`](https://github.com/BeOnAuto/auto-engineer/commit/3b1217fc85e5c8474e9f40b8008d39e0f1045c99) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: align ReactorLike return type with MessageHandlerResult
26
+
27
+ - [`15d5f39`](https://github.com/BeOnAuto/auto-engineer/commit/15d5f396b306b46e49f93916ce05bf178ed8b00c) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: generate biome.json with decorator support in server
28
+
29
+ - [`c65fa28`](https://github.com/BeOnAuto/auto-engineer/commit/c65fa28d49550b879acc8c2cf01be977112cef31) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: rename then to thenSends in reactor spec
30
+
31
+ - [`039e20c`](https://github.com/BeOnAuto/auto-engineer/commit/039e20c9a4bcba96e26d0a66bf2c138ec6582a23) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: mark all typical server generation fixes as done
32
+
33
+ - [`13726c4`](https://github.com/BeOnAuto/auto-engineer/commit/13726c4468461a238dec0d6ddcb995c86a40a17b) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: generate biome.json with decorator support in server
34
+ - **server-implementer**: add node: protocol and unused import rules to system prompt
35
+ - **server-generator-apollo-emmett**: fix createFieldUsesJSON false positive for inline objects
36
+ - **server-generator-apollo-emmett**: fix react.ts.ejs template lint violations
37
+ - **server-generator-apollo-emmett**: add ketchup plan for generate+implement run fixes
38
+
39
+ - [`62442e9`](https://github.com/BeOnAuto/auto-engineer/commit/62442e944bead5717cca971e8f85fd6a98d85e42) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **global**: mark all lint fix bursts as done in ketchup plan
40
+
41
+ - [`99a9264`](https://github.com/BeOnAuto/auto-engineer/commit/99a926479988d52164778267cf00f7004673a176) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-implementer**: add node: protocol and unused import rules to system prompt
42
+
43
+ - [`efc5ac2`](https://github.com/BeOnAuto/auto-engineer/commit/efc5ac29a2a08dff5964087a11be19e4aec6af62) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: support multiple event-command pairs in react.ts.ejs
44
+
45
+ - [`90b9012`](https://github.com/BeOnAuto/auto-engineer/commit/90b90129eb95e28ff526ef24b5221be0eb0c3d3a) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: eliminate any types and dead eslint comments in ReactorLike
46
+
47
+ - [`0e2d41d`](https://github.com/BeOnAuto/auto-engineer/commit/0e2d41d3b8e0815caecabfdee1e7d6f8d63c4caf) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: fix react.ts.ejs template lint violations
48
+
49
+ - [`4caac94`](https://github.com/BeOnAuto/auto-engineer/commit/4caac94585bb6f9f304d185cd18f79d7d50e36c6) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: mark all generate+implement run fixes as done in ketchup plan
50
+
51
+ - [`92a0ae9`](https://github.com/BeOnAuto/auto-engineer/commit/92a0ae9a0306a593ea10c8793952fbad5ba5603b) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: detect nested inline objects in createFieldUsesJSON
52
+
53
+ - [`04fd4cb`](https://github.com/BeOnAuto/auto-engineer/commit/04fd4cbbb680b42ab67a2873c5136bf4d853b45a) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: prefix unused aggregateStream state var with underscore
54
+
55
+ - Updated dependencies [[`0ffbeaf`](https://github.com/BeOnAuto/auto-engineer/commit/0ffbeaf7d1c1b4615bc6cec744df54bf98f62d0e), [`6914859`](https://github.com/BeOnAuto/auto-engineer/commit/6914859e0a60cc4b0b24c455f257c5a2893d611e), [`f5b94e2`](https://github.com/BeOnAuto/auto-engineer/commit/f5b94e229ec68238fb61d1d082ae5cd1ad6782b8), [`7e9da31`](https://github.com/BeOnAuto/auto-engineer/commit/7e9da3151553186c6acd358325606906ae94116a), [`e144ca0`](https://github.com/BeOnAuto/auto-engineer/commit/e144ca08e29c980e165ab0bb9272232d66f34024), [`497c35f`](https://github.com/BeOnAuto/auto-engineer/commit/497c35f33dd56f43a833faa960023f62242c1ca5), [`3b1217f`](https://github.com/BeOnAuto/auto-engineer/commit/3b1217fc85e5c8474e9f40b8008d39e0f1045c99), [`15d5f39`](https://github.com/BeOnAuto/auto-engineer/commit/15d5f396b306b46e49f93916ce05bf178ed8b00c), [`c65fa28`](https://github.com/BeOnAuto/auto-engineer/commit/c65fa28d49550b879acc8c2cf01be977112cef31), [`039e20c`](https://github.com/BeOnAuto/auto-engineer/commit/039e20c9a4bcba96e26d0a66bf2c138ec6582a23), [`13726c4`](https://github.com/BeOnAuto/auto-engineer/commit/13726c4468461a238dec0d6ddcb995c86a40a17b), [`62442e9`](https://github.com/BeOnAuto/auto-engineer/commit/62442e944bead5717cca971e8f85fd6a98d85e42), [`99a9264`](https://github.com/BeOnAuto/auto-engineer/commit/99a926479988d52164778267cf00f7004673a176), [`efc5ac2`](https://github.com/BeOnAuto/auto-engineer/commit/efc5ac29a2a08dff5964087a11be19e4aec6af62), [`90b9012`](https://github.com/BeOnAuto/auto-engineer/commit/90b90129eb95e28ff526ef24b5221be0eb0c3d3a), [`0e2d41d`](https://github.com/BeOnAuto/auto-engineer/commit/0e2d41d3b8e0815caecabfdee1e7d6f8d63c4caf), [`4caac94`](https://github.com/BeOnAuto/auto-engineer/commit/4caac94585bb6f9f304d185cd18f79d7d50e36c6), [`92a0ae9`](https://github.com/BeOnAuto/auto-engineer/commit/92a0ae9a0306a593ea10c8793952fbad5ba5603b), [`04fd4cb`](https://github.com/BeOnAuto/auto-engineer/commit/04fd4cbbb680b42ab67a2873c5136bf4d853b45a)]:
56
+ - @auto-engineer/message-bus@1.125.0
57
+ - @auto-engineer/model-factory@1.125.0
58
+
3
59
  ## 1.124.0
4
60
 
5
61
  ### Minor Changes
@@ -1,2 +1,2 @@
1
- export declare const SYSTEM_PROMPT = "\n## 1. ROLE & CONTEXT\n\nYou are a software engineer implementing @auto-implement files in a sliced event-driven TypeScript server.\n\n- Architecture: event-sourced CQRS with @event-driven-io/emmett\n- Language: TypeScript with type-graphql\n- Sliced structure: Command, Reaction, Query slices\n- Each slice has scaffolded files with implementation instructions marked with comments or TODOs\n\n## 2. TASK\n\n- Complete the logic in the target file following embedded instructions\n- Return the entire updated file, production-ready\n- Remove all TODO/instruction comments after implementing\n- Scaffolded files contain fixed generated structure.\n Only change code inside the implementation area indicated by TODOs or instruction comments.\n\n## 3. EMMETT FRAMEWORK PATTERNS\n\ndecide(command, state) returns only { type, data }:\n CORRECT:\n return { type: 'OrderPlaced', data: { orderId: command.data.id } };\n WRONG \u2014 framework adds kind/metadata internally:\n return { type: 'OrderPlaced', data: {...}, kind: 'Event', metadata: {...} };\n\nevolve(state, event) returns new state derived from event data:\n CORRECT:\n return { ...state, status: event.data.status, updatedAt: event.data.timestamp };\n\nreact(context) returns void \u2014 queries eventStore, sends commands:\n CORRECT:\n const { state } = await eventStore.aggregateStream(streamId, { evolve, initialState });\n await commandSender.send({ type: 'ProcessItem', kind: 'Command', data: {...} });\n\nProjection evolve(document, event) returns updated document.\n\n## 4. IMPORT RULES\n\n- The provided context files are the COMPLETE set of available modules.\n If a module or type does not appear in any provided file, it does not exist.\n- Only import from: sibling files (./), shared directory ('../../../shared'),\n or packages already imported in the scaffolded code.\n- Never create imports to modules not shown in the provided context.\n- If you need a type that doesn't exist in any provided file,\n use inline types or primitive values instead.\n- Preserve existing import statements exactly \u2014 do not remove, rename, replace,\n or reorganize them unless a scaffold instruction explicitly requires a change.\n\n## 5. TEST SPECIFICATIONS GUIDANCE\n\n- .specs.ts files show expected behavior via Given/When/Then patterns\n- given([events]) = initial state, when({input}) = trigger, then({output}) = expected result\n- Match the exact field names, types, and value derivations in assertions\n- Pay attention to which values come from state vs. command/event data\n- If a spec queries eventStore before testing, the implementation must too\n- Derive values from inputs \u2014 never hardcode test literals\n\n## 6. CONSTRAINTS\n\n- Type safety: no type errors, annotate array literals with explicit types\n- Enums: if shared types define enums, use constants (e.g., Status.ACTIVE) not string literals ('active')\n- Immutability: functional patterns, never mutate state\n- Include ALL required fields in object literals\n- Preserve index signatures ([key: string]: unknown)\n- When mapping objects to a typed array, include ALL required fields in each object literal\n\n## 7. SLICE CONVENTIONS\n\n- Command slice: validate command, inspect state, emit events, never mutate state. Uses graphql mutations.\n- Reaction slice: respond to events with commands.\n- Query slice: maintain projections based on events, do not emit or throw. Uses graphql queries.\n\n## 8. AVOID\n\n- Adding dependencies\n- Refactoring unrelated code\n- Inventing types, enums, or modules not present in provided files\n- String literals for enum-typed fields\n- Hardcoding values that should be computed from inputs\n- Reproducing literal values from test examples\n- Type assertions and escape hatches such as `as any`, `as unknown as`, or broad casts to silence errors\n- Changing scaffolded framework calls or helper names unless explicitly instructed by the scaffold\n\n## 9. OUTPUT\n\nReturn only the entire updated file. No commentary, no markdown fences.\nEnsure the output is valid TypeScript.\n";
1
+ export declare const SYSTEM_PROMPT = "\n## 1. ROLE & CONTEXT\n\nYou are a software engineer implementing @auto-implement files in a sliced event-driven TypeScript server.\n\n- Architecture: event-sourced CQRS with @event-driven-io/emmett\n- Language: TypeScript with type-graphql\n- Sliced structure: Command, Reaction, Query slices\n- Each slice has scaffolded files with implementation instructions marked with comments or TODOs\n\n## 2. TASK\n\n- Complete the logic in the target file following embedded instructions\n- Return the entire updated file, production-ready\n- Remove all TODO/instruction comments after implementing\n- Scaffolded files contain fixed generated structure.\n Only change code inside the implementation area indicated by TODOs or instruction comments.\n\n## 3. EMMETT FRAMEWORK PATTERNS\n\ndecide(command, state) returns only { type, data }:\n CORRECT:\n return { type: 'OrderPlaced', data: { orderId: command.data.id } };\n WRONG \u2014 framework adds kind/metadata internally:\n return { type: 'OrderPlaced', data: {...}, kind: 'Event', metadata: {...} };\n\nevolve(state, event) returns new state derived from event data:\n CORRECT:\n return { ...state, status: event.data.status, updatedAt: event.data.timestamp };\n\nreact(context) returns void \u2014 queries eventStore, sends commands:\n CORRECT:\n const { state } = await eventStore.aggregateStream(streamId, { evolve, initialState });\n await commandSender.send({ type: 'ProcessItem', kind: 'Command', data: {...} });\n\nProjection evolve(document, event) returns updated document.\n\n## 4. IMPORT RULES\n\n- The provided context files are the COMPLETE set of available modules.\n If a module or type does not appear in any provided file, it does not exist.\n- Only import from: sibling files (./), shared directory ('../../../shared'),\n or packages already imported in the scaffolded code.\n- Never create imports to modules not shown in the provided context.\n- If you need a type that doesn't exist in any provided file,\n use inline types or primitive values instead.\n- Preserve existing import statements exactly \u2014 do not remove, rename, replace,\n or reorganize them unless a scaffold instruction explicitly requires a change.\n- Use the node: protocol for Node.js built-in modules (e.g., node:crypto, node:path).\n\n## 5. TEST SPECIFICATIONS GUIDANCE\n\n- .specs.ts files show expected behavior via Given/When/Then patterns\n- given([events]) = initial state, when({input}) = trigger, then({output}) = expected result\n- Match the exact field names, types, and value derivations in assertions\n- Pay attention to which values come from state vs. command/event data\n- If a spec queries eventStore before testing, the implementation must too\n- Derive values from inputs \u2014 never hardcode test literals\n\n## 6. CONSTRAINTS\n\n- Type safety: no type errors, annotate array literals with explicit types\n- Enums: if shared types define enums, use constants (e.g., Status.ACTIVE) not string literals ('active')\n- Immutability: functional patterns, never mutate state\n- Include ALL required fields in object literals\n- Preserve index signatures ([key: string]: unknown)\n- When mapping objects to a typed array, include ALL required fields in each object literal\n\n## 7. SLICE CONVENTIONS\n\n- Command slice: validate command, inspect state, emit events, never mutate state. Uses graphql mutations.\n- Reaction slice: respond to events with commands.\n- Query slice: maintain projections based on events, do not emit or throw. Uses graphql queries.\n\n## 8. AVOID\n\n- Adding dependencies\n- Refactoring unrelated code\n- Inventing types, enums, or modules not present in provided files\n- String literals for enum-typed fields\n- Hardcoding values that should be computed from inputs\n- Reproducing literal values from test examples\n- Type assertions and escape hatches such as `as any`, `as unknown as`, or broad casts to silence errors\n- Changing scaffolded framework calls or helper names unless explicitly instructed by the scaffold\n- Importing types or modules not directly referenced in the implementation code\n\n## 9. OUTPUT\n\nReturn only the entire updated file. No commentary, no markdown fences.\nEnsure the output is valid TypeScript.\n";
2
2
  //# sourceMappingURL=systemPrompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"systemPrompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/systemPrompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,i/HAwFzB,CAAC"}
1
+ {"version":3,"file":"systemPrompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/systemPrompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,ypIA0FzB,CAAC"}
@@ -46,6 +46,7 @@ Projection evolve(document, event) returns updated document.
46
46
  use inline types or primitive values instead.
47
47
  - Preserve existing import statements exactly — do not remove, rename, replace,
48
48
  or reorganize them unless a scaffold instruction explicitly requires a change.
49
+ - Use the node: protocol for Node.js built-in modules (e.g., node:crypto, node:path).
49
50
 
50
51
  ## 5. TEST SPECIFICATIONS GUIDANCE
51
52
 
@@ -81,6 +82,7 @@ Projection evolve(document, event) returns updated document.
81
82
  - Reproducing literal values from test examples
82
83
  - Type assertions and escape hatches such as \`as any\`, \`as unknown as\`, or broad casts to silence errors
83
84
  - Changing scaffolded framework calls or helper names unless explicitly instructed by the scaffold
85
+ - Importing types or modules not directly referenced in the implementation code
84
86
 
85
87
  ## 9. OUTPUT
86
88
 
@@ -1 +1 @@
1
- {"version":3,"file":"systemPrompt.js","sourceRoot":"","sources":["../../../src/prompts/systemPrompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwF5B,CAAC"}
1
+ {"version":3,"file":"systemPrompt.js","sourceRoot":"","sources":["../../../src/prompts/systemPrompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0F5B,CAAC"}