@genesislcap/ai-assistant 15.62.0 → 15.64.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.
@@ -10,13 +10,23 @@ import { type GenesisWriteOutcome } from './write-outcome';
10
10
  * reopen the gap the review exists to close: the user approves what they read, and anything
11
11
  * re-derived afterwards is something they did not.
12
12
  *
13
- * There is **no pre-write validation pass**. `VALIDATE: true` is accepted and ignored by a
14
- * Create-generated handler — it declares `onCommit` only, so the platform runs it as a plain
15
- * event handler and the row is COMMITTED. Asking for a dry run there would write every row the
16
- * user was still deciding about, then report it as merely checked. What the dry run was buying
17
- * is already done client-side, before anything is sent: required fields, types, enums, dates
18
- * and read-only fields are all checked against the same metadata the server's schema validation
19
- * reads.
13
+ * There is **no pre-write validation pass** — not because one would write, but because it would
14
+ * check nothing new. `VALIDATE: true` runs a handler's `onValidate` and stops there: `onCommit`
15
+ * runs only on a message that is not a validate, after `onValidate` acked (genesis-server
16
+ * 8.15.29, `TransactionalEventHandlerContainer`; the same from 7.2.28 to 10.0.0-beta4). A
17
+ * Create-generated handler declares `onCommit` alone, so its `onValidate` is the platform's
18
+ * default, which acks; on 10.0 a Spring `@EventCommit`-only handler acks a validate without
19
+ * running at all. Recorded on the showcase: `EVENT_COUNTERPARTY_INSERT`, which has no
20
+ * `onValidate`, ACKed a `VALIDATE` and wrote nothing.
21
+ *
22
+ * So on such a handler a dry run checks the payload's schema and nothing more, and that is
23
+ * already done client-side, before anything is sent: required fields, types, enums, dates and
24
+ * read-only fields are all checked against the same metadata the server's schema validation
25
+ * reads. Where a handler does declare an `onValidate`, the commit runs it first, and its refusal
26
+ * comes back as that row's answer; a dry run would only hear it before the user approves rather
27
+ * than after. A dry run is unsafe only on hand-written code that is handed the flag and ignores
28
+ * it — a class implementing a plain, non-validating `AsyncEventHandler` or `SyncEventHandler`, or
29
+ * a Spring method taking `@IsValidateOnly` — which nothing on the wire tells apart from the rest.
20
30
  */
21
31
  export interface GenesisWriteRow {
22
32
  /** Position in the model's original list, so an outcome can be matched back to its row. */
@@ -1 +1 @@
1
- {"version":3,"file":"write-commit.d.ts","sourceRoot":"","sources":["../../../src/genesis/write-commit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,EAAE,EAAE,UAAU,CAAC;IACf,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,gBAAgB;AAChB,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,KAAK,EAAE,MAAM,CAAC;CACf;AAmBD;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,SAA6B,EAAE,EAAE,aAAa,GAC/E,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyD7B"}
1
+ {"version":3,"file":"write-commit.d.ts","sourceRoot":"","sources":["../../../src/genesis/write-commit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,EAAE,EAAE,UAAU,CAAC;IACf,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,gBAAgB;AAChB,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,KAAK,EAAE,MAAM,CAAC;CACf;AAmBD;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,SAA6B,EAAE,EAAE,aAAa,GAC/E,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyD7B"}
@@ -145,8 +145,8 @@ export function mapWriteReply(reply, { mode, op }) {
145
145
  const warnings = warningsOf(message);
146
146
  if (type === 'EVENT_ACK') {
147
147
  // The mode is the whole difference. A dry run ACKs without writing anything, and on a
148
- // generated app it ACKs whatever it is given, so calling that "written" would be the lie
149
- // the review table is built to avoid.
148
+ // generated app it ACKs any payload that passes the schema, so calling that "written" would
149
+ // be the lie the review table is built to avoid.
150
150
  if (mode === 'validate') {
151
151
  return Object.assign({ status: 'checked', committed: false, message: 'Checked.' }, (warnings ? { warnings } : {}));
152
152
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/ai-assistant",
3
3
  "description": "Genesis AI Assistant micro-frontend",
4
- "version": "15.62.0",
4
+ "version": "15.64.0",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "main": "dist/esm/index.js",
7
7
  "types": "dist/ai-assistant.d.ts",
@@ -92,31 +92,31 @@
92
92
  }
93
93
  },
94
94
  "devDependencies": {
95
- "@genesislcap/foundation-comms": "15.62.0",
96
- "@genesislcap/foundation-testing": "15.62.0",
97
- "@genesislcap/genx": "15.62.0",
98
- "@genesislcap/ts-builder": "15.62.0",
99
- "@genesislcap/uvu-playwright-builder": "15.62.0",
100
- "@genesislcap/vite-builder": "15.62.0",
101
- "@genesislcap/webpack-builder": "15.62.0",
95
+ "@genesislcap/foundation-comms": "15.64.0",
96
+ "@genesislcap/foundation-testing": "15.64.0",
97
+ "@genesislcap/genx": "15.64.0",
98
+ "@genesislcap/ts-builder": "15.64.0",
99
+ "@genesislcap/uvu-playwright-builder": "15.64.0",
100
+ "@genesislcap/vite-builder": "15.64.0",
101
+ "@genesislcap/webpack-builder": "15.64.0",
102
102
  "@types/dompurify": "^3.0.5",
103
103
  "@types/marked": "^5.0.2",
104
104
  "esbuild": "0.25.12"
105
105
  },
106
106
  "dependencies": {
107
- "@genesislcap/foundation-ai": "15.62.0",
108
- "@genesislcap/foundation-logger": "15.62.0",
109
- "@genesislcap/foundation-notifications": "15.62.0",
110
- "@genesislcap/foundation-redux": "15.62.0",
111
- "@genesislcap/foundation-ui": "15.62.0",
112
- "@genesislcap/foundation-utils": "15.62.0",
113
- "@genesislcap/rapid-design-system": "15.62.0",
114
- "@genesislcap/web-core": "15.62.0",
107
+ "@genesislcap/foundation-ai": "15.64.0",
108
+ "@genesislcap/foundation-logger": "15.64.0",
109
+ "@genesislcap/foundation-notifications": "15.64.0",
110
+ "@genesislcap/foundation-redux": "15.64.0",
111
+ "@genesislcap/foundation-ui": "15.64.0",
112
+ "@genesislcap/foundation-utils": "15.64.0",
113
+ "@genesislcap/rapid-design-system": "15.64.0",
114
+ "@genesislcap/web-core": "15.64.0",
115
115
  "dompurify": "^3.3.1",
116
116
  "marked": "^17.0.3"
117
117
  },
118
118
  "peerDependencies": {
119
- "@genesislcap/foundation-comms": "^15.62.0"
119
+ "@genesislcap/foundation-comms": "^15.64.0"
120
120
  },
121
121
  "peerDependenciesMeta": {
122
122
  "@genesislcap/foundation-comms": {