@nexia/sdk 0.8.2 → 0.8.4

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.
@@ -0,0 +1,9 @@
1
+ ---
2
+ status: published
3
+ version: 0.7.1
4
+ date: 2026-10-01
5
+ title: Shared App frontend contracts
6
+ description: Compatible frontend contracts for Composer and isolated Apps.
7
+ ---
8
+
9
+ Add host-backed file opening, action presentation and Inspector queries, resource contract Inspector registration, standalone form save bindings and explicit surface modes. Existing App registrations remain supported. Adopt matching Core host bindings before using the new APIs; this package alone does not update a deployed host.
@@ -0,0 +1,9 @@
1
+ ---
2
+ status: published
3
+ version: 0.7.1
4
+ date: 2026-10-01
5
+ title: 공용 앱 프런트엔드 계약
6
+ description: Composer 앱과 격리 앱에서 사용하는 호환 프런트엔드 계약입니다.
7
+ ---
8
+
9
+ 호스트를 통한 파일 열기·액션 표시·Inspector 조회, 리소스 계약 기반 Inspector 등록, 독립 폼 저장 연결과 명시적 화면 모드를 추가합니다. 기존 앱 등록 방식은 유지합니다. 새 API를 사용하기 전에 대응 Core 호스트 연결을 적용하세요. 이 패키지만으로 배포된 호스트가 변경되지는 않습니다.
@@ -0,0 +1,9 @@
1
+ ---
2
+ status: published
3
+ version: 0.7.2
4
+ date: 2026-10-01
5
+ title: Import reference target context
6
+ description: Pass the reviewed legal entity to App reference setup.
7
+ ---
8
+
9
+ Add optional `legalEntityPublicId` to the import reference review contract so the host can pass the selected import target to an App. Existing implementations remain compatible. Adopt the matching Core and People changes to use it; server authorization remains required.
@@ -0,0 +1,9 @@
1
+ ---
2
+ status: published
3
+ version: 0.7.2
4
+ date: 2026-10-01
5
+ title: 가져오기 기초정보 대상 전달
6
+ description: 검토 중인 법인을 앱의 기초정보 생성에 전달합니다.
7
+ ---
8
+
9
+ 가져오기 기초정보 검토 계약에 선택적 `legalEntityPublicId`를 추가해 호스트가 선택한 대상 법인을 앱에 전달할 수 있습니다. 기존 구현과 호환됩니다. 사용하려면 대응하는 Core·People 변경을 함께 반영해야 하며 서버 권한 검증은 계속 필요합니다.
@@ -0,0 +1,20 @@
1
+ ---
2
+ status: published
3
+ version: 0.8.0
4
+ date: 2026-10-03
5
+ title: Shared React App host
6
+ description: App-bound host services and standalone shared-host builds.
7
+ ---
8
+
9
+ # React SDK 0.8.0
10
+
11
+ ## Required upgrade
12
+ - Approved App UI runs in the shared Core 0.7.0 React host. Previous App-frame bundles are incompatible and must be rebuilt; backend Composer/sandbox selection remains independent.
13
+ - Use `nexiaAppConfig(import.meta.url)` from `@nexia/sdk/vite` for standalone App builds. The plugin binds each App's requests to its owning host services, shares supported host peers, bundles App dependencies, and emits `nexia-host.json` plus styles.
14
+ - Replace removed generic Resource Information schema exports with the existing composed Resource form/detail contracts; `resourceFieldValue` reads form fields.
15
+
16
+ ## Host behavior
17
+ - Host-bound App services preserve request ownership across lazy imports and simultaneously mounted Apps. `useReauthenticate` delegates authentication navigation and dirty-work confirmation to Core while preserving the owning App return route.
18
+ - Shared JavaScript execution requires approved App source and dependencies; it does not isolate malicious frontend code. Backend authorization and isolation remain required.
19
+
20
+ Adopt Laravel SDK 0.8.0, Core 0.7.0 and rebuilt App artifacts together. CLI asset serving requires the corresponding alpha.7 release.
@@ -0,0 +1,20 @@
1
+ ---
2
+ status: published
3
+ version: 0.8.0
4
+ date: 2026-10-03
5
+ title: 공용 React 앱 호스트
6
+ description: 앱별 호스트 서비스와 독립 공용 호스트 빌드.
7
+ ---
8
+
9
+ # React SDK 0.8.0
10
+
11
+ ## 필수 전환
12
+ - 승인된 앱 UI는 Core 0.7.0의 공용 React 호스트에서 실행합니다. 이전 앱 프레임 번들은 호환되지 않으므로 다시 빌드해야 합니다. 백엔드의 Composer·sandbox 선택은 별도로 유지됩니다.
13
+ - 독립 앱 빌드에는 `@nexia/sdk/vite`의 `nexiaAppConfig(import.meta.url)`을 사용합니다. 플러그인은 앱 요청을 소유 앱의 호스트 서비스에 연결하고, 지원되는 호스트 의존성을 공유하며, 앱 의존성을 번들에 포함하고 `nexia-host.json`과 스타일을 생성합니다.
14
+ - 제거된 범용 Resource Information 스키마 내보내기는 기존 조합형 Resource 폼·상세 계약으로 전환합니다. 폼 값 조회에는 `resourceFieldValue`를 사용합니다.
15
+
16
+ ## 호스트 동작
17
+ - 지연 로드와 여러 앱의 동시 표시에서도 앱 서비스의 요청 소유권을 유지합니다. `useReauthenticate`는 소유 앱 복귀 경로를 유지하며 인증 이동과 미저장 작업 확인을 Core에 위임합니다.
18
+ - 공용 JavaScript 실행에는 앱 소스와 의존성 승인이 필요하며 악성 프런트엔드 코드를 격리하지 않습니다. 백엔드 권한 검사와 격리는 계속 필요합니다.
19
+
20
+ Laravel SDK 0.8.0, Core 0.7.0, 다시 빌드한 앱 산출물을 함께 적용합니다. CLI 에셋 제공에는 대응 alpha.7 릴리스가 필요합니다.
@@ -0,0 +1,11 @@
1
+ ---
2
+ status: published
3
+ version: 0.8.1
4
+ date: 2026-10-08
5
+ title: Business approval document copy contracts
6
+ description: Declare independent business draft copying with matching Core and App support.
7
+ ---
8
+
9
+ Add optional `copySourceResourceId` to approval business forms. Apps authorize the source and persist an independent draft; never reuse the source as `appDraftRef`.
10
+
11
+ Adopt with Core 0.7.53 and the matching App implementation. Existing integrations remain compatible.
@@ -0,0 +1,11 @@
1
+ ---
2
+ status: published
3
+ version: 0.8.1
4
+ date: 2026-10-08
5
+ title: 업무형 기안 복사 계약
6
+ description: 대응 Core와 App에서 독립된 업무 초안 복사를 지원합니다.
7
+ ---
8
+
9
+ 결재 업무 폼에 선택적 `copySourceResourceId`를 추가합니다. App은 원본 조회 권한을 확인하고 독립된 초안을 저장해야 하며 원본을 `appDraftRef`로 재사용하면 안 됩니다.
10
+
11
+ Core 0.7.53 및 대응 App 구현과 함께 적용하세요. 기존 연동은 호환됩니다.
@@ -0,0 +1,11 @@
1
+ ---
2
+ status: published
3
+ version: 0.8.2
4
+ date: 2026-10-08
5
+ title: Parallel loading for standalone App screens
6
+ description: Standalone App builds preload lazy screens and their shared dependencies together.
7
+ ---
8
+
9
+ `nexiaAppConfig` now uses Vite application output so lazy screens preload their dependency graph instead of fetching each dependency only after its parent arrives. Relative asset URLs preserve the selected runtime asset grant; the shared host imports and `index.js` entry contract remain unchanged.
10
+
11
+ Update the frontend SDK and rebuild and publish the App image to adopt this change. Existing images are unchanged. No PHP SDK or Core contract upgrade is required.
@@ -0,0 +1,11 @@
1
+ ---
2
+ status: published
3
+ version: 0.8.2
4
+ date: 2026-10-08
5
+ title: 독립 앱 화면의 병렬 로딩
6
+ description: 독립 앱 빌드가 지연 로딩 화면과 공통 의존 파일을 함께 불러옵니다.
7
+ ---
8
+
9
+ `nexiaAppConfig`가 Vite 앱 빌드 방식을 사용합니다. 상위 파일을 받은 뒤에야 다음 의존 파일을 요청하던 지연 로딩 경로에서 화면과 의존 파일을 함께 미리 불러옵니다. 상대 자산 URL은 선택한 런타임의 자산 접근 경로를 유지하며, 공통 호스트 모듈과 `index.js` 진입 계약은 유지됩니다.
10
+
11
+ 프런트엔드 SDK를 업데이트하고 앱 이미지를 다시 빌드·게시해야 적용됩니다. 기존 이미지는 바뀌지 않습니다. PHP SDK나 Core 계약 업그레이드는 필요하지 않습니다.
@@ -0,0 +1,12 @@
1
+ ---
2
+ status: published
3
+ version: 0.8.4
4
+ date: 2026-10-12
5
+ title: Shared widget queries and dashboard refresh
6
+ description: Custom App widgets use the host transport and participate in dashboard refresh.
7
+ ---
8
+
9
+ - Use `useWidgetQueryRuntime()` from `@nexia/sdk/host` for scoped widget reads and cancellation.
10
+ - Register active non-preview query keys with `useDashboardDataSource()` to include custom widgets in dashboard refresh and update times.
11
+ - `SelfWorkContext` declares the legal-entity field already supplied by Core. Update typed fixtures accordingly.
12
+ - Requires Core 0.8.0 host bindings. Rebuild consuming App bundles and reload existing browser sessions when adopting the new query endpoint.
@@ -0,0 +1,12 @@
1
+ ---
2
+ status: published
3
+ version: 0.8.4
4
+ date: 2026-10-12
5
+ title: 공통 위젯 조회와 대시보드 새로고침
6
+ description: 사용자 정의 App 위젯이 호스트 조회 기능과 대시보드 새로고침을 사용합니다.
7
+ ---
8
+
9
+ - `@nexia/sdk/host`의 `useWidgetQueryRuntime()`으로 범위가 지정된 위젯 조회와 요청 취소를 처리합니다.
10
+ - 활성 상태이며 미리보기가 아닌 조회 키를 `useDashboardDataSource()`에 등록하면 대시보드 새로고침과 갱신 시각에 참여합니다.
11
+ - `SelfWorkContext`에 Core가 이미 제공하던 법인 필드를 명시합니다. 타입을 사용하는 테스트 데이터를 맞춰 주세요.
12
+ - Core 0.8.0 호스트 연결이 필요합니다. 새 조회 경로 적용 시 사용 App 번들을 다시 빌드하고 기존 브라우저 화면을 새로고침하세요.
package/dist/host.d.ts CHANGED
@@ -252,6 +252,8 @@ export interface NexiaAppFrontendHostBindings {
252
252
  WorkSurface: typeof WorkSurface;
253
253
  };
254
254
  hooks: {
255
+ useWidgetQueryRuntime: () => WidgetQueryRuntime;
256
+ useDashboardDataSource: (queryKey: readonly unknown[], enabled?: boolean) => void;
255
257
  useContextQuery: () => ContextQueryResult;
256
258
  useAffiliatedOperatingUnits: (tenantId: string | undefined, legalEntityPublicId: string | null | undefined, permission: string, enabled?: boolean) => OperatingUnitQueryResult;
257
259
  useAgentToolDataFreshness: (options: AgentToolDataFreshnessInput) => AgentToolDataFreshnessResult;
@@ -463,6 +465,18 @@ export declare function WorkSurface(props: WorkSurfaceProps): ReactNode;
463
465
  export declare function useContextQuery(): ContextQueryResult;
464
466
  export declare function useAffiliatedOperatingUnits(tenantId: string | undefined, legalEntityPublicId: string | null | undefined, permission: string, enabled?: boolean): OperatingUnitQueryResult;
465
467
  export declare function useAgentToolDataInvalidation(enabled?: boolean): void;
468
+ /** Environment-owned, read-only widget queries. The host preserves actor and runtime scope. */
469
+ export interface WidgetQueryRuntime {
470
+ readonly tenantId: string;
471
+ readonly legalEntityPublicId: string | null;
472
+ readonly timezone: string;
473
+ readonly supportsRealtimeInvalidation: boolean;
474
+ query<TResponse = unknown>(tool: string, args?: Record<string, unknown>, signal?: AbortSignal): Promise<TResponse>;
475
+ }
476
+ /** Use the surrounding widget runtime in both host and isolated App renderers. */
477
+ export declare function useWidgetQueryRuntime(): WidgetQueryRuntime;
478
+ /** Register a widget's query with its surrounding dashboard's refresh control. */
479
+ export declare function useDashboardDataSource(queryKey: readonly unknown[], enabled?: boolean): void;
466
480
  export interface AgentToolDataFreshnessInput {
467
481
  enabled: boolean;
468
482
  refreshMs: number;
package/dist/host.js CHANGED
@@ -498,6 +498,14 @@ export function useAffiliatedOperatingUnits(tenantId, legalEntityPublicId, permi
498
498
  export function useAgentToolDataInvalidation(enabled = true) {
499
499
  host().hooks.useAgentToolDataInvalidation(enabled);
500
500
  }
501
+ /** Use the surrounding widget runtime in both host and isolated App renderers. */
502
+ export function useWidgetQueryRuntime() {
503
+ return host().hooks.useWidgetQueryRuntime();
504
+ }
505
+ /** Register a widget's query with its surrounding dashboard's refresh control. */
506
+ export function useDashboardDataSource(queryKey, enabled = true) {
507
+ host().hooks.useDashboardDataSource(queryKey, enabled);
508
+ }
501
509
  /**
502
510
  * The freshness half of a widget's useQuery options, resolved by the host.
503
511
  * Polling pauses while the surrounding Work Tab is parked, the host enforces
@@ -284,6 +284,7 @@ export interface ProfileSlotPropsV1 {
284
284
  }
285
285
  export interface SelfWorkContext {
286
286
  ref: string;
287
+ legalEntity: Pick<LegalEntityContext, 'name' | 'code' | 'public_id'>;
287
288
  label: string;
288
289
  description: string | null;
289
290
  status: string | null;
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@nexia/sdk",
3
- "version": "0.8.2",
3
+ "version": "0.8.4",
4
4
  "description": "Frontend contracts for Nexia App Packages",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
7
7
  "packageManager": "pnpm@11.17.0",
8
8
  "files": [
9
- "dist"
9
+ "dist",
10
+ "changelog"
10
11
  ],
11
12
  "main": "./dist/index.js",
12
13
  "types": "./dist/index.d.ts",