openxiangda 2.22.7 → 2.23.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.
package/dist/core.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { BusinessProcessCommand, BusinessProcessCommandQuery, BusinessProcessCommandList, DataAuditEntry, DataAuditPage, DataAggregateMeasureType, DataAggregatePage, DataAggregateQuery, DataBatchQueryItemResult, DataBatchQueryOperation, DataBatchQueryRequest, DataBatchQueryResult, DataExportRequest, DataFieldOption, DataFieldSourcePage, DataFieldSourceQuery, DataFieldSourceLaunchBinding, DataFieldSurface, DataFilePreview, DataFileRef, DataFileUploadPlan, DataPage, DataQuery, DataRecord, DataResourceSurface, DataTransactionOperation, DataTransactionRequest, DataTransactionResult, DataWhere, DirectoryEntry, DirectoryEntryPage, DirectoryResolveRequest, LabeledValue, NativeAuthorizationManagementCatalog, NativeAuthorizationMutationReceipt, NativeRoleManagementAction, NativeRoleManagementAuthority, NativeRoleManagementGrant, NativeRoleManagementGrantMutationResult, NativeRoleManagementGrantPage, NativeRoleMembership, NativeRoleMembershipMutationResult, NativeRoleMembershipPage, NativeScopeGrant, NotificationDeliveryV2, NotificationMessageDetailV2, NotificationReadReceiptV2, ResourceReferenceValue, RuntimeAuthorizationContext, RuntimeAuthorizationIdentity, StableAddressValue, StableLocationValue, SubjectProfile, WorkflowDetailNavigation, WorkflowBusinessData, WorkflowBusinessDataStatus, WorkflowCommandResult, WorkflowDetailSurfaceV2, WorkflowInstance, WorkflowSurface, WorkflowTask, WorkflowTimeline, WorkflowWorkCenterItem, } from 'openxiangda-contracts/browser';
1
+ export type { BusinessProcessCommand, BusinessProcessCommandQuery, BusinessProcessCommandList, DataAuditEntry, DataAuditPage, DataAggregateMeasureType, DataAggregatePage, DataAggregateQuery, DataBatchQueryItemResult, DataBatchQueryOperation, DataBatchQueryRequest, DataBatchQueryResult, DataExportRequest, DataFieldOption, DataFieldSourcePage, DataFieldSourceQuery, DataFieldSourceLaunchBinding, DataFieldSurface, DataFilePreview, DataFileRef, DataFileUploadPlan, DataFileDownloadSession, DataFileOutputRequest, DataFileOutputPlan, DataPage, DataQuery, DataRecord, DataResourceSurface, DataTransactionOperation, DataTransactionRequest, DataTransactionResult, DataWhere, DirectoryEntry, DirectoryEntryPage, DirectoryResolveRequest, LabeledValue, NativeAuthorizationManagementCatalog, NativeAuthorizationMutationReceipt, NativeRoleManagementAction, NativeRoleManagementAuthority, NativeRoleManagementGrant, NativeRoleManagementGrantMutationResult, NativeRoleManagementGrantPage, NativeRoleMembership, NativeRoleMembershipMutationResult, NativeRoleMembershipPage, NativeScopeGrant, NotificationDeliveryV2, NotificationMessageDetailV2, NotificationReadReceiptV2, ResourceReferenceValue, RuntimeAuthorizationContext, RuntimeAuthorizationIdentity, StableAddressValue, StableLocationValue, SubjectProfile, WorkflowDetailNavigation, WorkflowBusinessData, WorkflowBusinessDataStatus, WorkflowCommandResult, WorkflowDetailSurfaceV2, WorkflowInstance, WorkflowSurface, WorkflowTask, WorkflowTimeline, WorkflowWorkCenterItem, } from 'openxiangda-contracts/browser';
2
2
  export * from './browser/platform-client';
3
3
  export * from './browser/runtime-meta';
4
4
  export * from './browser/components/platform-fields/resource-query';
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,EACZ,oCAAoC,EACpC,kCAAkC,EAClC,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,uCAAuC,EACvC,6BAA6B,EAC7B,oBAAoB,EACpB,kCAAkC,EAClC,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qDAAqD,CAAC;AACpE,mBAAmB,6DAA6D,CAAC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,EACZ,oCAAoC,EACpC,kCAAkC,EAClC,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,uCAAuC,EACvC,6BAA6B,EAC7B,oBAAoB,EACpB,kCAAkC,EAClC,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qDAAqD,CAAC;AACpE,mBAAmB,6DAA6D,CAAC"}
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAiEA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qDAAqD,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAoEA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qDAAqD,CAAC"}
package/dist/react.d.ts CHANGED
@@ -16,8 +16,8 @@ export * from './browser/Shell';
16
16
  export * from './browser/resource-definitions';
17
17
  export * from './browser/workflow-definitions';
18
18
  export * from './browser/workflow-launch';
19
- export { createResourceFormDraftClient, type ResourceFormDraft, createAnonymousPublicClient, applicationFileIntentUrl, executeApplicationOperation, issueApplicationFileIntent, loadApplicationOperationSurfaces, loadSubjectReadSurface, type AnonymousPublicDraft, type AnonymousPublicRecord, } from './browser/platform-client';
20
- export type { ApplicationOperationReceiptV2, ApplicationFileIntentV2, ApplicationOperationSurfaceCatalogV2, ApplicationOperationSurfaceV2, WorkflowCommandResult, } from 'openxiangda-contracts/browser';
19
+ export { createResourceFormDraftClient, type ResourceFormDraft, createAnonymousPublicClient, applicationFileIntentUrl, executeApplicationOperation, issueApplicationFileIntent, loadApplicationOperationSurfaces, loadSubjectReadSurface, logoutCurrentUser, type AnonymousPublicDraft, type AnonymousPublicRecord, } from './browser/platform-client';
20
+ export type { ApplicationOperationReceiptV2, ApplicationLogoutReceiptV2, ApplicationFileIntentV2, ApplicationOperationSurfaceCatalogV2, ApplicationOperationSurfaceV2, WorkflowCommandResult, } from 'openxiangda-contracts/browser';
21
21
  export * from './browser/components/resource/GeneratedResourceCrud';
22
22
  export * from './browser/components/resource/ResourceBatchActions';
23
23
  export * from './browser/components/resource/StandardResourcePages';
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC;AAEzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACrG,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EACL,6BAA6B,EAC7B,KAAK,iBAAiB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,oCAAoC,EACpC,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qCAAqC,CAAC;AACpD,cAAc,qDAAqD,CAAC;AACpE,mBAAmB,6DAA6D,CAAC"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC;AAEzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACrG,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EACL,6BAA6B,EAC7B,KAAK,iBAAiB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,uBAAuB,EACvB,oCAAoC,EACpC,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qCAAqC,CAAC;AACpD,cAAc,qDAAqD,CAAC;AACpE,mBAAmB,6DAA6D,CAAC"}
package/dist/react.js CHANGED
@@ -16,7 +16,7 @@ export * from './browser/Shell';
16
16
  export * from './browser/resource-definitions';
17
17
  export * from './browser/workflow-definitions';
18
18
  export * from './browser/workflow-launch';
19
- export { createResourceFormDraftClient, createAnonymousPublicClient, applicationFileIntentUrl, executeApplicationOperation, issueApplicationFileIntent, loadApplicationOperationSurfaces, loadSubjectReadSurface, } from './browser/platform-client';
19
+ export { createResourceFormDraftClient, createAnonymousPublicClient, applicationFileIntentUrl, executeApplicationOperation, issueApplicationFileIntent, loadApplicationOperationSurfaces, loadSubjectReadSurface, logoutCurrentUser, } from './browser/platform-client';
20
20
  export * from './browser/components/resource/GeneratedResourceCrud';
21
21
  export * from './browser/components/resource/ResourceBatchActions';
22
22
  export * from './browser/components/resource/StandardResourcePages';
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC;AAEzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAmC,MAAM,4BAA4B,CAAC;AACrG,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EACL,6BAA6B,EAE7B,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,sBAAsB,GAGvB,MAAM,2BAA2B,CAAC;AAQnC,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qCAAqC,CAAC;AACpD,cAAc,qDAAqD,CAAC"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC;AAEzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAmC,MAAM,4BAA4B,CAAC;AACrG,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EACL,6BAA6B,EAE7B,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,sBAAsB,EACtB,iBAAiB,GAGlB,MAAM,2BAA2B,CAAC;AASnC,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qCAAqC,CAAC;AACpD,cAAc,qDAAqD,CAAC"}
@@ -269,3 +269,26 @@ import {
269
269
  ```
270
270
 
271
271
  用户动作 send 的 schemaVersion 使用 OPENXIANGDA_NOTIFICATION_BUSINESS_SEND_V2;事件处理 sendFromEvent 使用 OPENXIANGDA_NOTIFICATION_EVENT_SEND_V2。二者的调用上下文和收件人来源不同,不能混用。
272
+ ## 外部处理受控文件
273
+
274
+ 需要水印或归档处理时,Nest DataApi 可签发短期对象下载地址。不要把要求登录态的 content URL 或用户 Cookie 交给外部服务。
275
+
276
+ ```ts
277
+ const source = await data.createFileDownloadSession('documents', sourceFileId, {
278
+ purpose: 'watermark', expiresInSeconds: 120,
279
+ });
280
+ const output = await data.initiateFileOutput('documents', {
281
+ fieldCode: 'file', fileName: 'processed.pdf', contentType: 'application/pdf',
282
+ maxFileSize: 20 * 1024 * 1024, idempotencyKey: jobKey,
283
+ });
284
+ if (output.status === 'pending') {
285
+ // 交给受信任服务:source.downloadUrl、output.uploadUrl、uploadMethod、formFields。
286
+ // 服务须按 POST multipart 原样提交 formFields,并将 file 字段放最后。
287
+ // 服务确认上传后,再调用 completeFileOutput;不要预估或伪造 fileSize。
288
+ const file = await data.completeFileOutput('documents', output.fileId);
289
+ } else {
290
+ const file = output.file; // 同一意图已经完成,复用回执。
291
+ }
292
+ ```
293
+
294
+ 这些方法适用于当前用户、具名业务动作和应用服务身份,沿用各自权限;业务记录绑定仍需正式数据事务。输出目前支持 OSS/MinIO,受字段上限与100MiB硬上限约束,上传凭据五分钟后过期,完成须在额外十分钟内进行。过期错误应由调用者建立新的处理意图,不能无限重试相同过期计划。下载最长五分钟,签发后到期前为短期委托,不能即时撤回。不要在日志、持久草稿或业务数据中保存签名地址、POST policy 或签名字段。
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
68
68
  以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
69
69
 
70
70
  ```bash
71
- pnpm dlx openxiangda@2.22.7 skill install --force
72
- pnpm dlx openxiangda@2.22.7 auth status --base-url <平台地址> --json
73
- pnpm dlx openxiangda@2.22.7 login --cwd my-app --base-url https://platform.example.com
74
- pnpm dlx openxiangda@2.22.7 create my-app --base-url https://platform.example.com
71
+ pnpm dlx openxiangda@2.23.0 skill install --force
72
+ pnpm dlx openxiangda@2.23.0 auth status --base-url <平台地址> --json
73
+ pnpm dlx openxiangda@2.23.0 login --cwd my-app --base-url https://platform.example.com
74
+ pnpm dlx openxiangda@2.23.0 create my-app --base-url https://platform.example.com
75
75
  cd my-app
76
76
  pnpm openxiangda context --json
77
77
  pnpm openxiangda dev
@@ -174,9 +174,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
174
174
  无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
175
175
 
176
176
  ```bash
177
- pnpm dlx openxiangda@2.22.7 auth status --base-url <平台> --json
178
- pnpm dlx openxiangda@2.22.7 source resolve <仓库URL> --base-url <平台> --json
179
- pnpm dlx openxiangda@2.22.7 source clone <仓库URL> <新目录> --base-url <平台> --json
177
+ pnpm dlx openxiangda@2.23.0 auth status --base-url <平台> --json
178
+ pnpm dlx openxiangda@2.23.0 source resolve <仓库URL> --base-url <平台> --json
179
+ pnpm dlx openxiangda@2.23.0 source clone <仓库URL> <新目录> --base-url <平台> --json
180
180
  ```
181
181
 
182
182
  登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "schemaVersion": "openxiangda.documentation/v1",
3
- "version": "2.22.7",
3
+ "version": "2.23.0",
4
4
  "topics": [
5
5
  {
6
6
  "id": "getting-started",
7
7
  "title": "安装与开始开发",
8
8
  "file": "getting-started.md",
9
- "sha256": "9c33c2e7554c71965f8ad0c9e147347f391d2575cd499a6d9fdb2afb17865d9e"
9
+ "sha256": "88f6055af32071ee2908413f366786bd39effe3948ed5580bafa6fa9a2c8c28a"
10
10
  },
11
11
  {
12
12
  "id": "product-design",
@@ -90,7 +90,7 @@
90
90
  "id": "backend",
91
91
  "title": "按需后端与业务动作",
92
92
  "file": "backend.md",
93
- "sha256": "a5924db716d3efabf523b47a1152459b50934682f55c81b22a72b41818b8e7ab"
93
+ "sha256": "b19d6f76a28de2539f8752d0b99fc3fcf0424c1ecb2b3dd6a4fb3e5e84e41806"
94
94
  },
95
95
  {
96
96
  "id": "administration",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda",
3
- "version": "2.22.7",
3
+ "version": "2.23.0",
4
4
  "description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -60,13 +60,13 @@
60
60
  "antd-mobile": "5.42.3",
61
61
  "dayjs": "1.11.18",
62
62
  "docx-preview": "0.3.7",
63
- "openxiangda-cli": "2.5.10",
64
- "openxiangda-contracts": "2.17.2",
65
- "openxiangda-devkit-core": "2.21.0",
63
+ "openxiangda-cli": "2.5.11",
64
+ "openxiangda-contracts": "2.18.0",
65
+ "openxiangda-devkit-core": "2.21.1",
66
66
  "openxiangda-legacy": "npm:openxiangda@1.0.269",
67
- "openxiangda-mcp": "2.0.38",
68
- "openxiangda-nest": "2.4.11",
69
- "openxiangda-skill-kit": "2.3.11",
67
+ "openxiangda-mcp": "2.0.39",
68
+ "openxiangda-nest": "2.5.0",
69
+ "openxiangda-skill-kit": "2.3.12",
70
70
  "xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
71
71
  },
72
72
  "peerDependencies": {
@@ -132,32 +132,37 @@
132
132
  },
133
133
  "openxiangdaRelease": {
134
134
  "schemaVersion": "openxiangda.release-notes/v1",
135
- "version": "2.22.7",
135
+ "version": "2.23.0",
136
136
  "status": "reviewed",
137
- "title": "OpenXiangda 2.22.7:中文单字目录检索",
138
- "summary": "PC 与移动目录选择器支持中文姓氏检索,避免单字输入被组件阻止发出查询。",
139
- "newFeatures": [],
140
- "fixes": [
141
- "成员和部门选择器统一支持单个汉字,并保留普通关键词 2–64 字符约束及无效输入提示。"
137
+ "title": "OpenXiangda 2.23.0:受控文件外部处理",
138
+ "summary": "Nest 支持短期外部下载及未知大小的有界输出文件会话,自定义用户框架获得公开退出登录入口。",
139
+ "newFeatures": [
140
+ "三种 Nest DataApi 身份提供 createFileDownloadSession、initiateFileOutput、completeFileOutput。",
141
+ "输出使用 POST policy 约束大小、类型和暂存对象,完成后返回真实大小的受控文件引用。",
142
+ "openxiangda/react 公开 logoutCurrentUser 及退出回执类型,复用平台身份清理和广播。"
142
143
  ],
144
+ "fixes": [],
143
145
  "affectedUsers": [
144
- "使用平台成员、部门选择器的 2.x 应用。"
146
+ "需要水印、归档等服务端文件处理或自定义用户框架的 V2 应用。"
145
147
  ],
146
148
  "upgradeSteps": [
147
- "升级 openxiangda 至 2.22.7 并重建发布应用;服务端须包含 PL-20 单汉字目录检索修复(server 2bfd3e1)。"
149
+ "先部署包含 server 048009e 的平台版本及输出会话迁移,再升级 openxiangda 至 2.23.0 并重建应用。",
150
+ "外部服务按 uploadMethod=POST 和 formFields 上传 multipart,file 放最后;已完成计划直接使用 file。"
148
151
  ],
149
152
  "knownLimitations": [
150
- "不能仅升级应用而保留拒绝单字查询的旧平台后端;非汉字单字符仍不支持。"
153
+ "输出会话目前支持 OSS 和 MinIO;COS 明确返回能力不可用。旧固定大小 PUT 上传不变。",
154
+ "下载签名最多300秒,授权变动不能即时撤回已签发 URL;不得记录 URL 或转发用户 Cookie。",
155
+ "外部服务部署、网络路由和真实业务验收独立于 npm 发布。"
151
156
  ],
152
157
  "issues": [],
153
158
  "compatibility": {
154
159
  "node": ">=24",
155
160
  "workspaceGenerations": "v2",
156
- "platform": "server 2bfd3e1 或包含该提交的版本",
161
+ "platform": "server 048009e 或包含该提交及数据库迁移的版本",
157
162
  "v1": "独立 V1 不受影响。"
158
163
  },
159
- "sha256": "820e3b753c71e313a1b18697a32a0c039ff2b375c696b66ecee1c399d1a64fdf",
160
- "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.22.7"
164
+ "sha256": "5294829c402c9af8d0dbda1fd13b0ed33d9e38821f0f18191c92f45f1d59875d",
165
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.23.0"
161
166
  },
162
167
  "scripts": {
163
168
  "build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
@@ -0,0 +1,34 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.23.0",
4
+ "status": "reviewed",
5
+ "title": "OpenXiangda 2.23.0:受控文件外部处理",
6
+ "summary": "Nest 支持短期外部下载及未知大小的有界输出文件会话,自定义用户框架获得公开退出登录入口。",
7
+ "newFeatures": [
8
+ "三种 Nest DataApi 身份提供 createFileDownloadSession、initiateFileOutput、completeFileOutput。",
9
+ "输出使用 POST policy 约束大小、类型和暂存对象,完成后返回真实大小的受控文件引用。",
10
+ "openxiangda/react 公开 logoutCurrentUser 及退出回执类型,复用平台身份清理和广播。"
11
+ ],
12
+ "fixes": [],
13
+ "affectedUsers": [
14
+ "需要水印、归档等服务端文件处理或自定义用户框架的 V2 应用。"
15
+ ],
16
+ "upgradeSteps": [
17
+ "先部署包含 server 048009e 的平台版本及输出会话迁移,再升级 openxiangda 至 2.23.0 并重建应用。",
18
+ "外部服务按 uploadMethod=POST 和 formFields 上传 multipart,file 放最后;已完成计划直接使用 file。"
19
+ ],
20
+ "knownLimitations": [
21
+ "输出会话目前支持 OSS 和 MinIO;COS 明确返回能力不可用。旧固定大小 PUT 上传不变。",
22
+ "下载签名最多300秒,授权变动不能即时撤回已签发 URL;不得记录 URL 或转发用户 Cookie。",
23
+ "外部服务部署、网络路由和真实业务验收独立于 npm 发布。"
24
+ ],
25
+ "issues": [],
26
+ "compatibility": {
27
+ "node": ">=24",
28
+ "workspaceGenerations": "v2",
29
+ "platform": "server 048009e 或包含该提交及数据库迁移的版本",
30
+ "v1": "独立 V1 不受影响。"
31
+ },
32
+ "sha256": "5294829c402c9af8d0dbda1fd13b0ed33d9e38821f0f18191c92f45f1d59875d",
33
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.23.0"
34
+ }
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "name": "openxiangda-v2",
6
6
  "description": "使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具体变更出发,通过对话发现模块、完成详细产品设计,由当前 AI Agent 按需用 Image 2.5 等图片能力形成视觉参考,直接实现真实页面并在浏览器修正,再检查和交付应用;维护 1.x 应用时使用对应的 1.x 技能。",
7
- "sha256": "ee239fa4ff6a08ad5d3450583eb9bc0dab325a08b59010b95b84cffb61580abd"
7
+ "sha256": "60be46bd4eec6305136aea8b44c43626915dc1ed9b13f80487e3baa5e07b7da3"
8
8
  }
9
9
  ]
10
10
  }
@@ -40,10 +40,10 @@ AI 接到新应用、页面或改版任务时,在同一个 OpenXiangda 工作
40
40
  未创建工作区时使用本 Skill 随根包发布的精确版本:
41
41
 
42
42
  ```bash
43
- pnpm dlx openxiangda@2.22.7 auth status --cwd <应用目录> --base-url <平台地址> --json
44
- pnpm dlx openxiangda@2.22.7 login --cwd <应用目录> --base-url <平台地址>
45
- pnpm dlx openxiangda@2.22.7 create <应用目录> --base-url <同一平台地址>
46
- pnpm dlx openxiangda@2.22.7 skill install --force
43
+ pnpm dlx openxiangda@2.23.0 auth status --cwd <应用目录> --base-url <平台地址> --json
44
+ pnpm dlx openxiangda@2.23.0 login --cwd <应用目录> --base-url <平台地址>
45
+ pnpm dlx openxiangda@2.23.0 create <应用目录> --base-url <同一平台地址>
46
+ pnpm dlx openxiangda@2.23.0 skill install --force
47
47
  ```
48
48
 
49
49
  创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
@@ -269,3 +269,26 @@ import {
269
269
  ```
270
270
 
271
271
  用户动作 send 的 schemaVersion 使用 OPENXIANGDA_NOTIFICATION_BUSINESS_SEND_V2;事件处理 sendFromEvent 使用 OPENXIANGDA_NOTIFICATION_EVENT_SEND_V2。二者的调用上下文和收件人来源不同,不能混用。
272
+ ## 外部处理受控文件
273
+
274
+ 需要水印或归档处理时,Nest DataApi 可签发短期对象下载地址。不要把要求登录态的 content URL 或用户 Cookie 交给外部服务。
275
+
276
+ ```ts
277
+ const source = await data.createFileDownloadSession('documents', sourceFileId, {
278
+ purpose: 'watermark', expiresInSeconds: 120,
279
+ });
280
+ const output = await data.initiateFileOutput('documents', {
281
+ fieldCode: 'file', fileName: 'processed.pdf', contentType: 'application/pdf',
282
+ maxFileSize: 20 * 1024 * 1024, idempotencyKey: jobKey,
283
+ });
284
+ if (output.status === 'pending') {
285
+ // 交给受信任服务:source.downloadUrl、output.uploadUrl、uploadMethod、formFields。
286
+ // 服务须按 POST multipart 原样提交 formFields,并将 file 字段放最后。
287
+ // 服务确认上传后,再调用 completeFileOutput;不要预估或伪造 fileSize。
288
+ const file = await data.completeFileOutput('documents', output.fileId);
289
+ } else {
290
+ const file = output.file; // 同一意图已经完成,复用回执。
291
+ }
292
+ ```
293
+
294
+ 这些方法适用于当前用户、具名业务动作和应用服务身份,沿用各自权限;业务记录绑定仍需正式数据事务。输出目前支持 OSS/MinIO,受字段上限与100MiB硬上限约束,上传凭据五分钟后过期,完成须在额外十分钟内进行。过期错误应由调用者建立新的处理意图,不能无限重试相同过期计划。下载最长五分钟,签发后到期前为短期委托,不能即时撤回。不要在日志、持久草稿或业务数据中保存签名地址、POST policy 或签名字段。
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
68
68
  以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
69
69
 
70
70
  ```bash
71
- pnpm dlx openxiangda@2.22.7 skill install --force
72
- pnpm dlx openxiangda@2.22.7 auth status --base-url <平台地址> --json
73
- pnpm dlx openxiangda@2.22.7 login --cwd my-app --base-url https://platform.example.com
74
- pnpm dlx openxiangda@2.22.7 create my-app --base-url https://platform.example.com
71
+ pnpm dlx openxiangda@2.23.0 skill install --force
72
+ pnpm dlx openxiangda@2.23.0 auth status --base-url <平台地址> --json
73
+ pnpm dlx openxiangda@2.23.0 login --cwd my-app --base-url https://platform.example.com
74
+ pnpm dlx openxiangda@2.23.0 create my-app --base-url https://platform.example.com
75
75
  cd my-app
76
76
  pnpm openxiangda context --json
77
77
  pnpm openxiangda dev
@@ -174,9 +174,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
174
174
  无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
175
175
 
176
176
  ```bash
177
- pnpm dlx openxiangda@2.22.7 auth status --base-url <平台> --json
178
- pnpm dlx openxiangda@2.22.7 source resolve <仓库URL> --base-url <平台> --json
179
- pnpm dlx openxiangda@2.22.7 source clone <仓库URL> <新目录> --base-url <平台> --json
177
+ pnpm dlx openxiangda@2.23.0 auth status --base-url <平台> --json
178
+ pnpm dlx openxiangda@2.23.0 source resolve <仓库URL> --base-url <平台> --json
179
+ pnpm dlx openxiangda@2.23.0 source clone <仓库URL> <新目录> --base-url <平台> --json
180
180
  ```
181
181
 
182
182
  登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回