reviewflow 3.37.0 → 3.38.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.
Files changed (79) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/main/routes.js +2 -2
  3. package/dist/main/routes.js.map +1 -1
  4. package/dist/main/server.d.ts +18 -0
  5. package/dist/main/server.d.ts.map +1 -1
  6. package/dist/main/server.js +24 -5
  7. package/dist/main/server.js.map +1 -1
  8. package/dist/mcp/mcpServerStdio.d.ts +190 -0
  9. package/dist/mcp/mcpServerStdio.d.ts.map +1 -1
  10. package/dist/mcp/mcpServerStdio.js +23 -1
  11. package/dist/mcp/mcpServerStdio.js.map +1 -1
  12. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.guard.d.ts +1 -1
  13. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.d.ts +2 -2
  14. package/dist/modules/ember-chat/entities/emberMemory/emberMemory.guard.d.ts +1 -0
  15. package/dist/modules/ember-chat/entities/emberMemory/emberMemory.guard.d.ts.map +1 -1
  16. package/dist/modules/ember-chat/entities/emberMemory/emberMemory.guard.js +2 -1
  17. package/dist/modules/ember-chat/entities/emberMemory/emberMemory.guard.js.map +1 -1
  18. package/dist/modules/ember-chat/interface-adapters/controllers/mcp/recordInsight.handler.d.ts +16 -0
  19. package/dist/modules/ember-chat/interface-adapters/controllers/mcp/recordInsight.handler.d.ts.map +1 -0
  20. package/dist/modules/ember-chat/interface-adapters/controllers/mcp/recordInsight.handler.js +40 -0
  21. package/dist/modules/ember-chat/interface-adapters/controllers/mcp/recordInsight.handler.js.map +1 -0
  22. package/dist/modules/ember-chat/interface-adapters/gateways/emberAnswerTransport.claude.gateway.d.ts +7 -3
  23. package/dist/modules/ember-chat/interface-adapters/gateways/emberAnswerTransport.claude.gateway.d.ts.map +1 -1
  24. package/dist/modules/ember-chat/interface-adapters/gateways/emberAnswerTransport.claude.gateway.js +7 -4
  25. package/dist/modules/ember-chat/interface-adapters/gateways/emberAnswerTransport.claude.gateway.js.map +1 -1
  26. package/dist/modules/ember-chat/interface-adapters/gateways/emberMemory.fileSystem.gateway.d.ts.map +1 -1
  27. package/dist/modules/ember-chat/interface-adapters/gateways/emberMemory.fileSystem.gateway.js +8 -1
  28. package/dist/modules/ember-chat/interface-adapters/gateways/emberMemory.fileSystem.gateway.js.map +1 -1
  29. package/dist/modules/ember-chat/services/emberSystemPrompt.d.ts +1 -1
  30. package/dist/modules/ember-chat/services/emberSystemPrompt.d.ts.map +1 -1
  31. package/dist/modules/ember-chat/services/emberSystemPrompt.js +15 -2
  32. package/dist/modules/ember-chat/services/emberSystemPrompt.js.map +1 -1
  33. package/dist/modules/ember-chat/usecases/askEmber/askEmber.usecase.d.ts.map +1 -1
  34. package/dist/modules/ember-chat/usecases/askEmber/askEmber.usecase.js +1 -1
  35. package/dist/modules/ember-chat/usecases/askEmber/askEmber.usecase.js.map +1 -1
  36. package/dist/tests/acceptance/190-ember-live-answers-subscription.acceptance.test.js +1 -1
  37. package/dist/tests/acceptance/190-ember-live-answers-subscription.acceptance.test.js.map +1 -1
  38. package/dist/tests/acceptance/193-ember-record-recurring-insight.acceptance.test.d.ts +2 -0
  39. package/dist/tests/acceptance/193-ember-record-recurring-insight.acceptance.test.d.ts.map +1 -0
  40. package/dist/tests/acceptance/193-ember-record-recurring-insight.acceptance.test.js +100 -0
  41. package/dist/tests/acceptance/193-ember-record-recurring-insight.acceptance.test.js.map +1 -0
  42. package/dist/tests/acceptance/197-trusted-actor-provenance-gate.acceptance.test.d.ts +2 -0
  43. package/dist/tests/acceptance/197-trusted-actor-provenance-gate.acceptance.test.d.ts.map +1 -0
  44. package/dist/tests/acceptance/197-trusted-actor-provenance-gate.acceptance.test.js +413 -0
  45. package/dist/tests/acceptance/197-trusted-actor-provenance-gate.acceptance.test.js.map +1 -0
  46. package/dist/tests/acceptance/199-review-output-egress-scan.acceptance.test.d.ts +2 -0
  47. package/dist/tests/acceptance/199-review-output-egress-scan.acceptance.test.d.ts.map +1 -0
  48. package/dist/tests/acceptance/199-review-output-egress-scan.acceptance.test.js +159 -0
  49. package/dist/tests/acceptance/199-review-output-egress-scan.acceptance.test.js.map +1 -0
  50. package/dist/tests/acceptance/201-transport-provenance-hardening.acceptance.test.d.ts +2 -0
  51. package/dist/tests/acceptance/201-transport-provenance-hardening.acceptance.test.d.ts.map +1 -0
  52. package/dist/tests/acceptance/201-transport-provenance-hardening.acceptance.test.js +72 -0
  53. package/dist/tests/acceptance/201-transport-provenance-hardening.acceptance.test.js.map +1 -0
  54. package/dist/tests/stubs/emberMemory.stub.d.ts.map +1 -1
  55. package/dist/tests/stubs/emberMemory.stub.js +8 -1
  56. package/dist/tests/stubs/emberMemory.stub.js.map +1 -1
  57. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js +96 -0
  58. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js.map +1 -1
  59. package/dist/tests/units/mcp/mcpServerStdioTools.test.d.ts +2 -0
  60. package/dist/tests/units/mcp/mcpServerStdioTools.test.d.ts.map +1 -0
  61. package/dist/tests/units/mcp/mcpServerStdioTools.test.js +21 -0
  62. package/dist/tests/units/mcp/mcpServerStdioTools.test.js.map +1 -0
  63. package/dist/tests/units/modules/ember-chat/controllers/mcp/recordInsight.handler.test.d.ts +2 -0
  64. package/dist/tests/units/modules/ember-chat/controllers/mcp/recordInsight.handler.test.d.ts.map +1 -0
  65. package/dist/tests/units/modules/ember-chat/controllers/mcp/recordInsight.handler.test.js +79 -0
  66. package/dist/tests/units/modules/ember-chat/controllers/mcp/recordInsight.handler.test.js.map +1 -0
  67. package/dist/tests/units/modules/ember-chat/entities/emberMemory.guard.test.js +22 -1
  68. package/dist/tests/units/modules/ember-chat/entities/emberMemory.guard.test.js.map +1 -1
  69. package/dist/tests/units/modules/ember-chat/gateways/emberAnswerTransport.claude.gateway.test.js +20 -2
  70. package/dist/tests/units/modules/ember-chat/gateways/emberAnswerTransport.claude.gateway.test.js.map +1 -1
  71. package/dist/tests/units/modules/ember-chat/gateways/emberMemory.fileSystem.gateway.test.js +33 -0
  72. package/dist/tests/units/modules/ember-chat/gateways/emberMemory.fileSystem.gateway.test.js.map +1 -1
  73. package/dist/tests/units/modules/ember-chat/services/emberSystemPrompt.test.js +25 -14
  74. package/dist/tests/units/modules/ember-chat/services/emberSystemPrompt.test.js.map +1 -1
  75. package/dist/tests/units/modules/ember-chat/stubs/emberMemory.stub.test.d.ts +2 -0
  76. package/dist/tests/units/modules/ember-chat/stubs/emberMemory.stub.test.d.ts.map +1 -0
  77. package/dist/tests/units/modules/ember-chat/stubs/emberMemory.stub.test.js +24 -0
  78. package/dist/tests/units/modules/ember-chat/stubs/emberMemory.stub.test.js.map +1 -0
  79. package/package.json +1 -1
@@ -40,6 +40,7 @@ function projectDirFor(projectPath, homeDir) {
40
40
  const FAST_OPTIONS = (homeDir) => ({
41
41
  homeDir,
42
42
  pollIntervalMs: 1,
43
+ buildMcpConfig: () => '{"mcpServers":{}}',
43
44
  });
44
45
  describe('EmberAnswerTransportClaudeGateway (integration with real filesystem)', () => {
45
46
  let homeDir;
@@ -81,12 +82,28 @@ describe('EmberAnswerTransportClaudeGateway (integration with real filesystem)',
81
82
  expect(subscriber.error).toBeNull();
82
83
  const dispatch = sessionGateway.dispatchCalls[0];
83
84
  expect(dispatch.jobType).toBe('ember-chat');
84
- expect(dispatch.flags.allowedTools).toBe('Read,Glob,Grep');
85
+ expect(dispatch.flags.allowedTools).toBe('Read,Glob,Grep,mcp__review-progress__record_insight');
85
86
  expect(dispatch.flags.disallowedTools).toBe('Edit,Write,Bash,Task');
86
- expect(dispatch.flags.mcpConfigJson).toBe('{"mcpServers":{}}');
87
87
  expect(dispatch.flags.permissionMode).toBe('auto');
88
88
  expect(sessionGateway.stopCalls).toEqual(['stub-session']);
89
89
  });
90
+ it('dispatches with the MCP config resolved lazily from buildMcpConfig', async () => {
91
+ const dir = projectDirFor(homeDir, homeDir);
92
+ writeFileSync(join(dir, 'stub-session-mcp.jsonl'), JSON.stringify({
93
+ type: 'assistant',
94
+ message: { content: [{ type: 'text', text: 'ok' }], stop_reason: 'end_turn' },
95
+ }) + '\n');
96
+ const mcpConfig = '{"mcpServers":{"review-progress":{"command":"node","args":["mcpServer.js"]}}}';
97
+ const gateway = new EmberAnswerTransportClaudeGateway(sessionGateway, {
98
+ homeDir,
99
+ pollIntervalMs: 1,
100
+ buildMcpConfig: () => mcpConfig,
101
+ });
102
+ const { subscriber, finished } = settled();
103
+ gateway.start(startOptions(), subscriber);
104
+ await finished;
105
+ expect(sessionGateway.dispatchCalls[0].flags.mcpConfigJson).toBe(mcpConfig);
106
+ });
90
107
  it('reports ember-answer-dispatch-failed and never stops a session when dispatch fails', async () => {
91
108
  sessionGateway.setDispatchResult({ status: 'failed', rawStderr: 'not logged in' });
92
109
  const gateway = new EmberAnswerTransportClaudeGateway(sessionGateway, FAST_OPTIONS(homeDir));
@@ -143,6 +160,7 @@ describe('EmberAnswerTransportClaudeGateway (integration with real filesystem)',
143
160
  const gateway = new EmberAnswerTransportClaudeGateway(sessionGateway, {
144
161
  homeDir,
145
162
  pollIntervalMs: 1,
163
+ buildMcpConfig: () => '{"mcpServers":{}}',
146
164
  });
147
165
  const { subscriber, finished } = settled();
148
166
  gateway.start(startOptions(), subscriber);
@@ -1 +1 @@
1
- {"version":3,"file":"emberAnswerTransport.claude.gateway.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/ember-chat/gateways/emberAnswerTransport.claude.gateway.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emberAnswerTransport.claude.gateway.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/ember-chat/gateways/emberAnswerTransport.claude.gateway.test.ts"],"names":[],"mappings":"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"}
@@ -78,5 +78,38 @@ describe('EmberMemoryFileSystemGateway', () => {
78
78
  expect(loaded?.insights).toEqual(['Régression du vendredi.']);
79
79
  expect(loaded?.turns).toHaveLength(1);
80
80
  });
81
+ it('records the same insight only once (a repeated finding does not pile up)', async () => {
82
+ const gateway = new EmberMemoryFileSystemGateway({ homeDir });
83
+ await gateway.appendInsight(PROJECT_A, 'Le projet alpha régresse chaque vendredi.');
84
+ await gateway.appendInsight(PROJECT_A, 'Le projet alpha régresse chaque vendredi.');
85
+ expect((await gateway.load(PROJECT_A))?.insights).toEqual([
86
+ 'Le projet alpha régresse chaque vendredi.',
87
+ ]);
88
+ });
89
+ it('treats a trailing-whitespace variant as the same insight', async () => {
90
+ const gateway = new EmberMemoryFileSystemGateway({ homeDir });
91
+ await gateway.appendInsight(PROJECT_A, 'Régression du vendredi.');
92
+ await gateway.appendInsight(PROJECT_A, ' Régression du vendredi. ');
93
+ expect((await gateway.load(PROJECT_A))?.insights).toEqual(['Régression du vendredi.']);
94
+ });
95
+ it('records two genuinely different insights in order', async () => {
96
+ const gateway = new EmberMemoryFileSystemGateway({ homeDir });
97
+ await gateway.appendInsight(PROJECT_A, 'Régression du vendredi.');
98
+ await gateway.appendInsight(PROJECT_A, 'Couverture en baisse sur le module paiement.');
99
+ expect((await gateway.load(PROJECT_A))?.insights).toEqual([
100
+ 'Régression du vendredi.',
101
+ 'Couverture en baisse sur le module paiement.',
102
+ ]);
103
+ });
104
+ it('never records a blank insight', async () => {
105
+ const gateway = new EmberMemoryFileSystemGateway({ homeDir });
106
+ await gateway.appendInsight(PROJECT_A, ' ');
107
+ expect(await gateway.load(PROJECT_A)).toBeNull();
108
+ });
109
+ it('keeps a recorded insight isolated from another project', async () => {
110
+ const gateway = new EmberMemoryFileSystemGateway({ homeDir });
111
+ await gateway.appendInsight(PROJECT_A, 'Le projet alpha régresse chaque vendredi.');
112
+ expect(await gateway.load(PROJECT_B)).toBeNull();
113
+ });
81
114
  });
82
115
  //# sourceMappingURL=emberMemory.fileSystem.gateway.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emberMemory.fileSystem.gateway.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/ember-chat/gateways/emberMemory.fileSystem.gateway.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAErE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oFAAoF,CAAC;AAClI,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAEnC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAE9D,MAAM,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAE9F,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;QACrG,MAAM,MAAM,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1F,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAE1F,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE3C,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/E,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE5C,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CACnB,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAChE,CAAC;QACF,aAAa,CAAC,QAAQ,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC;QAErE,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,MAAM,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,2CAA2C,CAAC,CAAC;QAEnF,MAAM,MAAM,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"emberMemory.fileSystem.gateway.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/ember-chat/gateways/emberMemory.fileSystem.gateway.test.ts"],"names":[],"mappings":"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"}
@@ -9,26 +9,27 @@ const EMPTY_GROUNDING = {
9
9
  worktrees: [],
10
10
  memory: null,
11
11
  };
12
+ const PROJECT_PATH = '/projects/alpha';
12
13
  describe('buildEmberSystemPrompt', () => {
13
14
  it('names the four review-data sources as the only data sources', () => {
14
- const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING);
15
+ const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING, PROJECT_PATH);
15
16
  expect(prompt).toContain('reviewScores');
16
17
  expect(prompt).toContain('insights');
17
18
  expect(prompt).toContain('jobHistory');
18
19
  expect(prompt).toContain('worktrees');
19
20
  });
20
21
  it('instructs to decline rather than invent when asked outside review data', () => {
21
- const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING);
22
+ const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING, PROJECT_PATH);
22
23
  expect(prompt.toLowerCase()).toContain('review');
23
24
  expect(prompt).toMatch(/ne sait répondre|ne sais pas|reviews/i);
24
25
  });
25
26
  it('instructs it stays read-only and performs no writes', () => {
26
- const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING);
27
+ const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING, PROJECT_PATH);
27
28
  expect(prompt.toLowerCase()).toContain('lecture seule');
28
29
  expect(prompt).toMatch(/n'effectue aucune écriture/i);
29
30
  });
30
31
  it('identifies the assistant as Ember', () => {
31
- expect(buildEmberSystemPrompt(EMPTY_GROUNDING)).toContain('Ember');
32
+ expect(buildEmberSystemPrompt(EMPTY_GROUNDING, PROJECT_PATH)).toContain('Ember');
32
33
  });
33
34
  it('embeds the actual review data so the answer is grounded in it', () => {
34
35
  const grounding = {
@@ -37,7 +38,7 @@ describe('buildEmberSystemPrompt', () => {
37
38
  ReviewStatsFactory.create({ mrNumber: 42, score: 3, blocking: 4, warnings: 1 }),
38
39
  ]),
39
40
  };
40
- expect(buildEmberSystemPrompt(grounding)).toContain('42');
41
+ expect(buildEmberSystemPrompt(grounding, PROJECT_PATH)).toContain('42');
41
42
  });
42
43
  it('bounds the prompt under a ceiling even for a huge review history', () => {
43
44
  const reviews = Array.from({ length: 500 }, (_, index) => ReviewStatsFactory.create({ mrNumber: index, score: index % 10 }));
@@ -45,7 +46,7 @@ describe('buildEmberSystemPrompt', () => {
45
46
  ...EMPTY_GROUNDING,
46
47
  reviewScores: ProjectStatsFactory.withReviews(reviews),
47
48
  };
48
- expect(buildEmberSystemPrompt(grounding).length).toBeLessThan(60_000);
49
+ expect(buildEmberSystemPrompt(grounding, PROJECT_PATH).length).toBeLessThan(60_000);
49
50
  });
50
51
  it('keeps the aggregates and the most-recent reviews when capping a huge history', () => {
51
52
  const reviews = Array.from({ length: 500 }, (_, index) => ReviewStatsFactory.create({ mrNumber: index, score: index % 10 }));
@@ -53,7 +54,7 @@ describe('buildEmberSystemPrompt', () => {
53
54
  ...EMPTY_GROUNDING,
54
55
  reviewScores: ProjectStatsFactory.withReviews(reviews),
55
56
  };
56
- const prompt = buildEmberSystemPrompt(grounding);
57
+ const prompt = buildEmberSystemPrompt(grounding, PROJECT_PATH);
57
58
  expect(prompt).toContain('"totalReviews":500');
58
59
  expect(prompt).toContain('"mrNumber":499');
59
60
  expect(prompt).not.toContain('"mrNumber":0');
@@ -64,7 +65,7 @@ describe('buildEmberSystemPrompt', () => {
64
65
  ...EMPTY_GROUNDING,
65
66
  reviewScores: ProjectStatsFactory.withReviews(reviews),
66
67
  };
67
- const prompt = buildEmberSystemPrompt(grounding);
68
+ const prompt = buildEmberSystemPrompt(grounding, PROJECT_PATH);
68
69
  expect(prompt).not.toContain('aucun autre accès');
69
70
  expect(prompt).not.toContain('ni système de fichiers');
70
71
  expect(prompt).not.toContain('résumé agrégé seulement');
@@ -75,13 +76,13 @@ describe('buildEmberSystemPrompt', () => {
75
76
  ...EMPTY_GROUNDING,
76
77
  reviewScores: ProjectStatsFactory.withReviews(reviews),
77
78
  };
78
- const prompt = buildEmberSystemPrompt(grounding);
79
+ const prompt = buildEmberSystemPrompt(grounding, PROJECT_PATH);
79
80
  expect(prompt.toLowerCase()).toContain('à la demande');
80
81
  expect(prompt).toMatch(/peux\s+lire|tu\s+peux\s+consulter/i);
81
82
  expect(prompt.toLowerCase()).toContain('point de départ');
82
83
  });
83
84
  it('omits any conversation-memory section when there is no prior memory', () => {
84
- const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING);
85
+ const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING, PROJECT_PATH);
85
86
  expect(prompt.toLowerCase()).not.toContain('conversation précédente');
86
87
  });
87
88
  it('renders prior conversation turns so a follow-up keeps context', () => {
@@ -96,7 +97,7 @@ describe('buildEmberSystemPrompt', () => {
96
97
  ],
97
98
  }),
98
99
  };
99
- const prompt = buildEmberSystemPrompt(grounding);
100
+ const prompt = buildEmberSystemPrompt(grounding, PROJECT_PATH);
100
101
  expect(prompt.toLowerCase()).toContain('conversation précédente');
101
102
  expect(prompt).toContain('Quel est le statut du projet X ?');
102
103
  expect(prompt).toContain('Le projet X régresse chaque vendredi.');
@@ -106,14 +107,14 @@ describe('buildEmberSystemPrompt', () => {
106
107
  ...EMPTY_GROUNDING,
107
108
  memory: EmberMemoryFactory.create({ turns: [] }),
108
109
  };
109
- expect(buildEmberSystemPrompt(grounding).toLowerCase()).not.toContain('conversation précédente');
110
+ expect(buildEmberSystemPrompt(grounding, PROJECT_PATH).toLowerCase()).not.toContain('conversation précédente');
110
111
  });
111
112
  it('omits any recurring-insights section when there is no recorded insight', () => {
112
113
  const grounding = {
113
114
  ...EMPTY_GROUNDING,
114
115
  memory: EmberMemoryFactory.create({ turns: [], insights: [] }),
115
116
  };
116
- expect(buildEmberSystemPrompt(grounding).toLowerCase()).not.toContain('constats récurrents');
117
+ expect(buildEmberSystemPrompt(grounding, PROJECT_PATH).toLowerCase()).not.toContain('constats récurrents');
117
118
  });
118
119
  it('renders recorded recurring insights so Ember reuses them instead of recomputing', () => {
119
120
  const grounding = {
@@ -123,10 +124,20 @@ describe('buildEmberSystemPrompt', () => {
123
124
  insights: ['Le projet X régresse chaque vendredi.'],
124
125
  }),
125
126
  };
126
- const prompt = buildEmberSystemPrompt(grounding);
127
+ const prompt = buildEmberSystemPrompt(grounding, PROJECT_PATH);
127
128
  expect(prompt.toLowerCase()).toContain('constats récurrents');
128
129
  expect(prompt).toContain('Le projet X régresse chaque vendredi.');
129
130
  expect(prompt.toLowerCase()).toMatch(/réutilise|sans .*recalcul/i);
130
131
  });
132
+ it('instructs Ember to record a derived recurring finding via the record_insight tool', () => {
133
+ const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING, PROJECT_PATH);
134
+ expect(prompt).toContain('record_insight');
135
+ expect(prompt).toContain(PROJECT_PATH);
136
+ });
137
+ it('records only genuine recurring review findings, never arbitrary facts', () => {
138
+ const prompt = buildEmberSystemPrompt(EMPTY_GROUNDING, PROJECT_PATH);
139
+ expect(prompt.toLowerCase()).toMatch(/constat.*récurrent|récurrent/i);
140
+ expect(prompt.toLowerCase()).not.toContain('préférences');
141
+ });
131
142
  });
132
143
  //# sourceMappingURL=emberSystemPrompt.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emberSystemPrompt.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/ember-chat/services/emberSystemPrompt.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emberSystemPrompt.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/ember-chat/services/emberSystemPrompt.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=emberMemory.stub.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emberMemory.stub.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/ember-chat/stubs/emberMemory.stub.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { StubEmberMemoryGateway } from '../../../../../tests/stubs/emberMemory.stub.js';
3
+ const PROJECT_A = '/projects/alpha';
4
+ const INSIGHT = 'Le projet alpha régresse chaque vendredi.';
5
+ describe('StubEmberMemoryGateway insight recording mirrors the filesystem gateway', () => {
6
+ it('records the same insight only once', async () => {
7
+ const gateway = new StubEmberMemoryGateway();
8
+ await gateway.appendInsight(PROJECT_A, INSIGHT);
9
+ await gateway.appendInsight(PROJECT_A, INSIGHT);
10
+ expect((await gateway.load(PROJECT_A))?.insights).toEqual([INSIGHT]);
11
+ });
12
+ it('treats a trailing-whitespace variant as the same insight', async () => {
13
+ const gateway = new StubEmberMemoryGateway();
14
+ await gateway.appendInsight(PROJECT_A, INSIGHT);
15
+ await gateway.appendInsight(PROJECT_A, ` ${INSIGHT} `);
16
+ expect((await gateway.load(PROJECT_A))?.insights).toEqual([INSIGHT]);
17
+ });
18
+ it('never records a blank insight', async () => {
19
+ const gateway = new StubEmberMemoryGateway();
20
+ await gateway.appendInsight(PROJECT_A, ' ');
21
+ expect(await gateway.load(PROJECT_A)).toBeNull();
22
+ });
23
+ });
24
+ //# sourceMappingURL=emberMemory.stub.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emberMemory.stub.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/ember-chat/stubs/emberMemory.stub.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,OAAO,GAAG,2CAA2C,CAAC;AAE5D,QAAQ,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACvF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC7C,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEhD,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC7C,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC;QAEzD,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC7C,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE9C,MAAM,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reviewflow",
3
- "version": "3.37.0",
3
+ "version": "3.38.0",
4
4
  "description": "AI-powered code review automation for GitLab/GitHub using Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/main/server.js",