openxiangda-skill-kit 2.0.0-alpha.126 → 2.0.0-alpha.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openxiangda-skill-kit",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.129",
|
|
4
4
|
"description": "Validation and deterministic packaging for OpenXiangda 2.0 AI skills.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"README.md"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"openxiangda-devkit-core": "2.0.0-alpha.
|
|
20
|
+
"openxiangda-devkit-core": "2.0.0-alpha.105"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"tsx": "4.23.12",
|
|
@@ -248,6 +248,17 @@ caller creates it once together with the idempotency key and reuses both on
|
|
|
248
248
|
every retry. Platform-created record timestamps remain the source of truth
|
|
249
249
|
when no separate business time is required.
|
|
250
250
|
|
|
251
|
+
The Nest SDK automatically carries the platform Gateway `x-request-id` from a
|
|
252
|
+
verified Named Action into its nested Data API, directory, workflow, and
|
|
253
|
+
notification calls. Do not generate or replace that header in application
|
|
254
|
+
code. If a strict authorization projection is temporarily unavailable, keep
|
|
255
|
+
the complete command and `idempotencyKey` unchanged when retrying after the
|
|
256
|
+
platform reports recovery: the Native transaction receipt returns the already
|
|
257
|
+
committed items with `replayed: true` and does not repeat mutations or events.
|
|
258
|
+
`OPENXIANGDA_AUTHORIZATION_PROJECTION_NOT_READY` is a fail-closed, retryable
|
|
259
|
+
platform readiness response; it is not evidence that an earlier idempotent
|
|
260
|
+
business transaction was rolled back. Diagnose it with the returned request id.
|
|
261
|
+
|
|
251
262
|
When declaring a lower-level transaction directly, use only the current
|
|
252
263
|
contract:
|
|
253
264
|
|
|
@@ -113,15 +113,20 @@ normal authorized role union with that Perspective before capability, field,
|
|
|
113
113
|
row-policy and RLS evaluation. Omit the header for the complete union. Never
|
|
114
114
|
use Perspective to guard writes, workflows or custom actions.
|
|
115
115
|
|
|
116
|
-
`required: true`
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
`required: true` is a logical application rule: generated forms show it as
|
|
117
|
+
required, and the Native Data API rejects omission on create or explicit null
|
|
118
|
+
on create/update. It does not create PostgreSQL `NOT NULL`; every authored
|
|
119
|
+
business column remains physically nullable so fields can be added or made
|
|
120
|
+
required without a historical-data backfill. Older rows may therefore contain
|
|
121
|
+
null when they predate the rule. A field without `access` inherits the resource
|
|
122
|
+
read/create/update capability. Each access array is all-of; `false` is explicit
|
|
123
|
+
deny. The same arrays drive the generated UI and platform field policies.
|
|
120
124
|
|
|
121
125
|
For `uuid` fields, omission never generates a value. Only the resource system
|
|
122
126
|
field `id` is platform-generated. An omitted optional UUID remains `null`; a
|
|
123
|
-
required UUID must be supplied
|
|
124
|
-
database default.
|
|
127
|
+
required UUID must be supplied by a current create request and cannot rely on
|
|
128
|
+
an implicit database default. This is Data API validation, not a physical
|
|
129
|
+
`NOT NULL` constraint.
|
|
125
130
|
|
|
126
131
|
Field types are semantic, not PostgreSQL storage aliases. Use the catalog in the generated `AGENTS.md`: for example `text.short`, `number.integer`, `user.single`, `department.multiple`, `resource-ref.single`, `file`, `address` and `subtable`. The compiler alone chooses storage columns and constraints. Reference fields store JSON display values. For `resource-ref.*`, `resourceCode`, `value`, `label`, optional `description` and optional `snapshot` are convenient historical display data only: the target resource remains authoritative, the platform does not create a foreign key or refresh/check the stored JSON, and business actions that need current target state must query it by `resourceCode` plus `value`. A resource source `labelField` must point to `text.short` or `text.long`; a `serial-number` field can be listed in `searchFields`, `descriptionFields` or `snapshotFields`, but it is not a display label. File limits exist only under `file`; `maxCount` owns the single/multiple bound and `maxSizeMb` owns the per-file size bound. There is no `file.multiple` key.
|
|
127
132
|
|