openxiangda 2.0.0-alpha.37 → 2.0.0-alpha.38
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",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.38",
|
|
4
4
|
"description": "Unified OpenXiangda 2.0 CLI, SDK, React runtime, NestJS integration and AI skill distribution.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -49,12 +49,12 @@
|
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"dayjs": "1.11.18",
|
|
51
51
|
"docx-preview": "0.3.7",
|
|
52
|
-
"openxiangda-cli": "2.0.0-alpha.
|
|
53
|
-
"openxiangda-contracts": "2.0.0-alpha.
|
|
54
|
-
"openxiangda-devkit-core": "2.0.0-alpha.
|
|
55
|
-
"openxiangda-mcp": "2.0.0-alpha.
|
|
56
|
-
"openxiangda-nest": "2.0.0-alpha.
|
|
57
|
-
"openxiangda-skill-kit": "2.0.0-alpha.
|
|
52
|
+
"openxiangda-cli": "2.0.0-alpha.124",
|
|
53
|
+
"openxiangda-contracts": "2.0.0-alpha.60",
|
|
54
|
+
"openxiangda-devkit-core": "2.0.0-alpha.78",
|
|
55
|
+
"openxiangda-mcp": "2.0.0-alpha.78",
|
|
56
|
+
"openxiangda-nest": "2.0.0-alpha.71",
|
|
57
|
+
"openxiangda-skill-kit": "2.0.0-alpha.99",
|
|
58
58
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
@@ -10,14 +10,14 @@ Treat requirement discovery, architecture, authorization, development, testing a
|
|
|
10
10
|
Before a workspace exists, use this Skill's exact npm version:
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
pnpm dlx openxiangda@2.0.0-alpha.
|
|
14
|
-
pnpm dlx openxiangda@2.0.0-alpha.
|
|
13
|
+
pnpm dlx openxiangda@2.0.0-alpha.38 login --base-url <platform>
|
|
14
|
+
pnpm dlx openxiangda@2.0.0-alpha.38 create <directory>
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Inside an application, use only its locked executable through `pnpm openxiangda`. Never invoke a bare global `openxiangda`, because that executable may belong to stable 1.x. Moving tags such as `latest` and `alpha` are forbidden. To install or refresh this same Skill from the package, run:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
pnpm dlx openxiangda@2.0.0-alpha.
|
|
20
|
+
pnpm dlx openxiangda@2.0.0-alpha.38 skill install --force
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Use this order:
|
|
@@ -107,6 +107,11 @@ without `access` inherits the resource read/create/update capability. Each
|
|
|
107
107
|
access array is all-of; `false` is explicit deny. The same arrays drive the
|
|
108
108
|
generated UI and platform field policies.
|
|
109
109
|
|
|
110
|
+
For `uuid` fields, omission never generates a value. Only the resource system
|
|
111
|
+
field `id` is platform-generated. An omitted optional UUID remains `null`; a
|
|
112
|
+
required UUID must be supplied explicitly and cannot rely on an implicit
|
|
113
|
+
database default.
|
|
114
|
+
|
|
110
115
|
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.
|
|
111
116
|
|
|
112
117
|
Generated list, detail, audit and preview surfaces render the stored canonical
|
|
@@ -160,6 +160,19 @@ Use direct card actions first for approve/reject. Return, transfer, delegate and
|
|
|
160
160
|
|
|
161
161
|
Consume typed participant/task/instance facts with durable idempotency. Order Workflow message projection by `instanceId + instanceSequence`; never assume global event order. Terminal instance facts dominate stale participant facts and update every historical message for that instance.
|
|
162
162
|
|
|
163
|
+
For Native Data facts, the platform owns the capture plan under the exact Event
|
|
164
|
+
revision, Data revision, AuthZ revision and resource tuple selected by the
|
|
165
|
+
Native Head. Adding a snapshot field or extending RLS may create a new plan;
|
|
166
|
+
applications do not version it and must not remove the field to satisfy an old
|
|
167
|
+
plan. Historical replay uses the data and plan digest frozen in the original
|
|
168
|
+
fact, so it never gains fields from the current Head.
|
|
169
|
+
|
|
170
|
+
Every Workflow fact v2 carries the immutable instance identity envelope:
|
|
171
|
+
`workflowCode`, `definitionVersion`, `bindingVersion`, `instanceId`,
|
|
172
|
+
`generation`, `businessKey`, `instanceSequence`, `revision`, `dataRef`, and
|
|
173
|
+
`dataRevision`, plus `actor` and `cause`. Treat missing identity as an invalid
|
|
174
|
+
fact; never infer historical versions from the current Workflow Head.
|
|
175
|
+
|
|
163
176
|
Use Fake Channel before a real Adapter. Verify create, update, close, reconcile, duplicate, out-of-order, restart, retryable failure, terminal failure and unknown delivery before DingTalk or campus canaries.
|
|
164
177
|
|
|
165
178
|
## Verification
|