@xtalpi/agentic-lab-skills 0.0.10 → 0.0.11

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.
Files changed (68) hide show
  1. package/README.md +1 -1
  2. package/package.json +14 -14
  3. package/skills/lab-flow-designer/SKILL.md +612 -612
  4. package/skills/lab-flow-designer/embedded-template/SKILL.md +103 -103
  5. package/skills/lab-flow-designer/embedded-template/pools//345/205/245/345/217/243/346/261/240.md +21 -21
  6. package/skills/lab-flow-designer/embedded-template/pools//345/207/272/345/217/243/346/261/240.md +21 -21
  7. package/skills/lab-flow-designer/embedded-template/scripts//347/244/272/344/276/213/346/225/260/346/215/256/344/270/216/346/240/241/351/252/214/351/227/250/346/216/247.js +142 -142
  8. package/skills/lab-flow-designer/embedded-template/valves//347/244/272/344/276/213/346/225/260/346/215/256/344/270/216/346/240/241/351/252/214/351/227/250/346/216/247.md +114 -114
  9. package/skills/lab-flow-designer/references/agentic-lab-processer.md +122 -122
  10. package/skills/lab-flow-designer/references/agentic-lab-sdk.md +534 -361
  11. package/skills/lab-flow-designer/references/rhea-api/README.md +7 -7
  12. package/skills/lab-flow-designer/references/rhea-api/execute_process_batch.md +58 -58
  13. package/skills/lab-flow-designer/references/skill-package-layout.md +268 -268
  14. package/skills/lab-flow-designer/references//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/346/240/207/345/207/206.md +216 -216
  15. package/skills/lab-flow-designer/templates//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/346/250/241/346/235/277.md +192 -192
  16. package/skills/lab-flow-designer/templates//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/347/244/272/344/276/213.md +207 -207
  17. package/skills/lab-flow-designer/testing/test-processer.mjs +1240 -1240
  18. package/skills/lab-nocobase-flow-generator/SKILL.md +164 -164
  19. package/skills/lab-nocobase-flow-generator/examples/setting/350/241/250/350/216/267/345/217/226/345/244/226/351/203/250/346/234/215/345/212/241.js +70 -70
  20. package/skills/lab-nocobase-flow-generator/examples//346/237/245/350/257/242/345/214/226/345/255/246/345/223/201/344/277/241/346/201/257.js +30 -30
  21. package/skills/lab-nocobase-flow-generator/references/doc-standard.md +84 -84
  22. package/skills/lab-nocobase-flow-generator/references/runtime-api.md +224 -224
  23. package/skills/lab-nocobase-flow-generator/templates//350/204/232/346/234/254/351/200/273/350/276/221/346/226/207/346/241/243/346/250/241/346/235/277.md +121 -121
  24. package/skills/lab-nocobase-flow-generator/templates//350/204/232/346/234/254/351/200/273/350/276/221/346/226/207/346/241/243/347/244/272/344/276/213.md +67 -67
  25. package/skills/lab-orbit-component-builder/SKILL.md +353 -353
  26. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.env.local.example +27 -27
  27. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintignore +7 -7
  28. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintrc.cjs +88 -88
  29. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.nvmrc +1 -1
  30. package/skills/lab-orbit-component-builder/examples/xnb-component-template/AgenticAppAPI.md +268 -268
  31. package/skills/lab-orbit-component-builder/examples/xnb-component-template/Jenkinsfile +106 -106
  32. package/skills/lab-orbit-component-builder/examples/xnb-component-template/OrbitAPI.md +453 -453
  33. package/skills/lab-orbit-component-builder/examples/xnb-component-template/README.md +176 -176
  34. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/public/index.html +12 -12
  35. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/App.vue +151 -151
  36. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/components/DevOpenerLauncher.vue +143 -143
  37. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/global.d.ts +77 -77
  38. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/main.ts +308 -308
  39. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/mockXNBBitable.ts +119 -119
  40. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/shims-vue.d.ts +6 -6
  41. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/utils/devOpenerHost.ts +75 -75
  42. package/skills/lab-orbit-component-builder/examples/xnb-component-template/index.html +13 -13
  43. package/skills/lab-orbit-component-builder/examples/xnb-component-template/package.json +60 -60
  44. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/api/agenticlabTickets.ts +110 -110
  45. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/bitable.ts +4 -4
  46. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/custom-page.ts +4 -4
  47. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/index.ts +1 -1
  48. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/styles/orbit-quasar-host.scss +19 -19
  49. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/context.ts +15 -15
  50. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/xnb-context.ts +70 -70
  51. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useBitablePage.ts +189 -189
  52. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperCellDemo.ts +257 -257
  53. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperTableBitableLifecycle.ts +555 -555
  54. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerInitParams.ts +158 -158
  55. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerTicketIds.ts +32 -32
  56. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/orbitHttpClient.ts +110 -110
  57. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/request.ts +92 -92
  58. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/bitable.vue +67 -67
  59. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/custom-page.vue +140 -140
  60. package/skills/lab-orbit-component-builder/examples/xnb-component-template/tsconfig.json +45 -45
  61. package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.config.ts +170 -170
  62. package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.dev.config.ts +58 -58
  63. package/skills/lab-orbit-component-builder/references/flow-document-human-ui.md +65 -65
  64. package/skills/lab-orbit-component-builder/references/orbit-vue-conventions.md +133 -133
  65. package/skills/lab-orbit-component-builder/references/pool-schema-to-columns.md +67 -67
  66. package/skills/lab-orbit-component-builder/references/vue-template-checklist.md +179 -179
  67. package/skills/lab-orbit-component-builder/references/xnb-context-vue-props.md +49 -49
  68. package/skills/lab-orbit-component-builder/references/xnbitable-vue-parity.md +32 -32
@@ -1,110 +1,110 @@
1
- /**
2
- * AgenticLab App:Ticket 列表 HTTP。
3
- * 请求走 **`orbitRequestJson`**(`src/utils/orbitHttpClient.ts`),优先 **`window.xnb.http.client.request`**,见 **OrbitAPI.md** §6.3。
4
- */
5
-
6
- import { orbitRequestJson } from '@/utils/orbitHttpClient'
7
-
8
- export interface FetchAgenticlabTicketListParams {
9
- /** 无尾部斜杠亦可,如 `https://agenticlab.example.com`;嵌入 Orbit 且仅用 http.client 时仍建议填写以便回退 fetch */
10
- baseUrl: string
11
- /**
12
- * 可选静态 Bearer;为空时依次尝试:
13
- * `await window.xnb.choreo.getUserToken()`(无参)、`VITE_DEV_TOKEN`。
14
- */
15
- token?: string
16
- /** 业务工单号列表,对应 query `ticket_id__in`(多值逗号拼接) */
17
- ticketIds: string[]
18
- limit?: number
19
- offset?: number
20
- }
21
-
22
- function joinBaseAndPath (baseUrl: string, path: string): string {
23
- const trimmed = baseUrl.replace(/\/+$/, '')
24
- const p = path.startsWith('/') ? path : `/${path}`
25
- return `${trimmed}${p}`
26
- }
27
-
28
- async function resolveBearerToken (opts: { token?: string }): Promise<string | undefined> {
29
- if (opts.token != null && opts.token !== '') return opts.token
30
- const w = window as Window & { xnb?: { choreo?: { getUserToken?: () => Promise<string> } } }
31
- const getToken = w.xnb?.choreo?.getUserToken
32
- if (getToken != null) {
33
- try {
34
- return await getToken()
35
- } catch {
36
- return undefined
37
- }
38
- }
39
- const env = import.meta.env.VITE_DEV_TOKEN
40
- return env != null && env !== '' ? env : undefined
41
- }
42
-
43
- /**
44
- * `GET /api/ticket/list`,`ticket_id__in` 为逗号拼接的 ticket 业务号(与 `detail.ticket_id` 对应)。
45
- */
46
- export async function fetchAgenticlabTicketList (params: FetchAgenticlabTicketListParams): Promise<unknown[]> {
47
- const { baseUrl, token, ticketIds, limit = 999999, offset = 0 } = params
48
- if (!baseUrl || ticketIds.length === 0) return []
49
-
50
- const url = joinBaseAndPath(baseUrl, '/api/ticket/list')
51
- const bearer = await resolveBearerToken({ token })
52
- const headers: Record<string, string> = { Accept: 'application/json' }
53
- if (bearer != null && bearer !== '') {
54
- headers.Authorization = `Bearer ${bearer}`
55
- }
56
-
57
- const raw = await orbitRequestJson({
58
- method: 'get',
59
- url,
60
- headers,
61
- query: {
62
- limit,
63
- offset,
64
- ticket_id__in: ticketIds.join(',')
65
- }
66
- })
67
- const body = raw as { code?: number; msg?: string; data?: { list?: unknown[] } }
68
- if (body.code !== 200) {
69
- throw new Error(body.msg != null && body.msg !== '' ? String(body.msg) : `业务 code ${String(body.code)}`)
70
- }
71
- return body.data?.list ?? []
72
- }
73
-
74
- export interface PostAgenticlabExecutionCompleteParams {
75
- baseUrl: string
76
- token?: string
77
- /** 门控 / 执行实例标识,与后端约定一致;缺省可由 opener 或环境变量提供 */
78
- valveId: number
79
- /** 与列表项结构一致的工单对象数组,字段须与 `GET /api/ticket/list` 的 `list[]` 项对齐(含编辑后的 `detail` 等) */
80
- tickets: Record<string, unknown>[]
81
- }
82
-
83
- /**
84
- * `POST /api/execution/complete`:提交编辑后的Ticket列表,由后端完成执行闭环。
85
- */
86
- export async function postAgenticlabExecutionComplete (params: PostAgenticlabExecutionCompleteParams): Promise<void> {
87
- const { baseUrl, token, valveId, tickets } = params
88
- if (!baseUrl) throw new Error('缺少 AgenticLab baseUrl')
89
-
90
- const url = joinBaseAndPath(baseUrl, '/api/execution/complete')
91
- const bearer = await resolveBearerToken({ token })
92
- const headers: Record<string, string> = {
93
- Accept: 'application/json',
94
- 'Content-Type': 'application/json; charset=utf-8'
95
- }
96
- if (bearer != null && bearer !== '') {
97
- headers.Authorization = `Bearer ${bearer}`
98
- }
99
-
100
- const raw = await orbitRequestJson({
101
- method: 'post',
102
- url,
103
- headers,
104
- jsonBody: { valve_id: valveId, tickets }
105
- })
106
- const body = raw as { code?: number; msg?: string }
107
- if (body.code !== 200) {
108
- throw new Error(body.msg != null && body.msg !== '' ? String(body.msg) : `业务 code ${String(body.code)}`)
109
- }
110
- }
1
+ /**
2
+ * AgenticLab App:Ticket 列表 HTTP。
3
+ * 请求走 **`orbitRequestJson`**(`src/utils/orbitHttpClient.ts`),优先 **`window.xnb.http.client.request`**,见 **OrbitAPI.md** §6.3。
4
+ */
5
+
6
+ import { orbitRequestJson } from '@/utils/orbitHttpClient'
7
+
8
+ export interface FetchAgenticlabTicketListParams {
9
+ /** 无尾部斜杠亦可,如 `https://agenticlab.example.com`;嵌入 Orbit 且仅用 http.client 时仍建议填写以便回退 fetch */
10
+ baseUrl: string
11
+ /**
12
+ * 可选静态 Bearer;为空时依次尝试:
13
+ * `await window.xnb.choreo.getUserToken()`(无参)、`VITE_DEV_TOKEN`。
14
+ */
15
+ token?: string
16
+ /** 业务工单号列表,对应 query `ticket_id__in`(多值逗号拼接) */
17
+ ticketIds: string[]
18
+ limit?: number
19
+ offset?: number
20
+ }
21
+
22
+ function joinBaseAndPath (baseUrl: string, path: string): string {
23
+ const trimmed = baseUrl.replace(/\/+$/, '')
24
+ const p = path.startsWith('/') ? path : `/${path}`
25
+ return `${trimmed}${p}`
26
+ }
27
+
28
+ async function resolveBearerToken (opts: { token?: string }): Promise<string | undefined> {
29
+ if (opts.token != null && opts.token !== '') return opts.token
30
+ const w = window as Window & { xnb?: { choreo?: { getUserToken?: () => Promise<string> } } }
31
+ const getToken = w.xnb?.choreo?.getUserToken
32
+ if (getToken != null) {
33
+ try {
34
+ return await getToken()
35
+ } catch {
36
+ return undefined
37
+ }
38
+ }
39
+ const env = import.meta.env.VITE_DEV_TOKEN
40
+ return env != null && env !== '' ? env : undefined
41
+ }
42
+
43
+ /**
44
+ * `GET /api/ticket/list`,`ticket_id__in` 为逗号拼接的 ticket 业务号(与 `detail.ticket_id` 对应)。
45
+ */
46
+ export async function fetchAgenticlabTicketList (params: FetchAgenticlabTicketListParams): Promise<unknown[]> {
47
+ const { baseUrl, token, ticketIds, limit = 999999, offset = 0 } = params
48
+ if (!baseUrl || ticketIds.length === 0) return []
49
+
50
+ const url = joinBaseAndPath(baseUrl, '/api/ticket/list')
51
+ const bearer = await resolveBearerToken({ token })
52
+ const headers: Record<string, string> = { Accept: 'application/json' }
53
+ if (bearer != null && bearer !== '') {
54
+ headers.Authorization = `Bearer ${bearer}`
55
+ }
56
+
57
+ const raw = await orbitRequestJson({
58
+ method: 'get',
59
+ url,
60
+ headers,
61
+ query: {
62
+ limit,
63
+ offset,
64
+ ticket_id__in: ticketIds.join(',')
65
+ }
66
+ })
67
+ const body = raw as { code?: number; msg?: string; data?: { list?: unknown[] } }
68
+ if (body.code !== 200) {
69
+ throw new Error(body.msg != null && body.msg !== '' ? String(body.msg) : `业务 code ${String(body.code)}`)
70
+ }
71
+ return body.data?.list ?? []
72
+ }
73
+
74
+ export interface PostAgenticlabExecutionCompleteParams {
75
+ baseUrl: string
76
+ token?: string
77
+ /** 门控 / 执行实例标识,与后端约定一致;缺省可由 opener 或环境变量提供 */
78
+ valveId: number
79
+ /** 与列表项结构一致的工单对象数组,字段须与 `GET /api/ticket/list` 的 `list[]` 项对齐(含编辑后的 `detail` 等) */
80
+ tickets: Record<string, unknown>[]
81
+ }
82
+
83
+ /**
84
+ * `POST /api/execution/complete`:提交编辑后的Ticket列表,由后端完成执行闭环。
85
+ */
86
+ export async function postAgenticlabExecutionComplete (params: PostAgenticlabExecutionCompleteParams): Promise<void> {
87
+ const { baseUrl, token, valveId, tickets } = params
88
+ if (!baseUrl) throw new Error('缺少 AgenticLab baseUrl')
89
+
90
+ const url = joinBaseAndPath(baseUrl, '/api/execution/complete')
91
+ const bearer = await resolveBearerToken({ token })
92
+ const headers: Record<string, string> = {
93
+ Accept: 'application/json',
94
+ 'Content-Type': 'application/json; charset=utf-8'
95
+ }
96
+ if (bearer != null && bearer !== '') {
97
+ headers.Authorization = `Bearer ${bearer}`
98
+ }
99
+
100
+ const raw = await orbitRequestJson({
101
+ method: 'post',
102
+ url,
103
+ headers,
104
+ jsonBody: { valve_id: valveId, tickets }
105
+ })
106
+ const body = raw as { code?: number; msg?: string }
107
+ if (body.code !== 200) {
108
+ throw new Error(body.msg != null && body.msg !== '' ? String(body.msg) : `业务 code ${String(body.code)}`)
109
+ }
110
+ }
@@ -1,4 +1,4 @@
1
- import View from '../views/bitable.vue'
2
- import packageData from '../../package.json'
3
-
4
- export { View, packageData }
1
+ import View from '../views/bitable.vue'
2
+ import packageData from '../../package.json'
3
+
4
+ export { View, packageData }
@@ -1,4 +1,4 @@
1
- import View from '../views/custom-page.vue'
2
- import packageData from '../../package.json'
3
-
4
- export { View, packageData }
1
+ import View from '../views/custom-page.vue'
2
+ import packageData from '../../package.json'
3
+
4
+ export { View, packageData }
@@ -1 +1 @@
1
- export { View, packageData } from './entries/bitable'
1
+ export { View, packageData } from './entries/bitable'
@@ -1,19 +1,19 @@
1
- /**
2
- * Orbit Cell 内 Quasar 子树:根节点加 `class="orbit-quasar-host"` 后,本节点以下生效。
3
- * - 主色:`color="primary"` / `.bg-primary` → `var(--q-primary)`
4
- * - `q-btn`:紧凑内边距;关闭默认全大写
5
- *
6
- * 复用:在 SFC 的 `<style scoped lang="scss">` 内首行 `@import '@/styles/orbit-quasar-host.scss';`
7
- * (须 scoped + `:deep(.q-btn)`,否则子组件 DOM 无法命中)
8
- * 主题调整:新增/修改主色或全局 `q-btn` 表现请只改本文件;页面结构见 `src/views/bitable.vue`。
9
- * 按钮分工:`primary` 仅提交等持久化写回;`outline` 仅刷新/检查等页面数据交互(见 lab-orbit-component-builder SKILL 规则 2)。
10
- */
11
- .orbit-quasar-host {
12
- --orbit-primary: #123aff;
13
- --q-primary: var(--orbit-primary);
14
-
15
- :deep(.q-btn) {
16
- padding: 0 10px;
17
- text-transform: none;
18
- }
19
- }
1
+ /**
2
+ * Orbit Cell 内 Quasar 子树:根节点加 `class="orbit-quasar-host"` 后,本节点以下生效。
3
+ * - 主色:`color="primary"` / `.bg-primary` → `var(--q-primary)`
4
+ * - `q-btn`:紧凑内边距;关闭默认全大写
5
+ *
6
+ * 复用:在 SFC 的 `<style scoped lang="scss">` 内首行 `@import '@/styles/orbit-quasar-host.scss';`
7
+ * (须 scoped + `:deep(.q-btn)`,否则子组件 DOM 无法命中)
8
+ * 主题调整:新增/修改主色或全局 `q-btn` 表现请只改本文件;页面结构见 `src/views/bitable.vue`。
9
+ * 按钮分工:`primary` 仅提交等持久化写回;`outline` 仅刷新/检查等页面数据交互(见 lab-orbit-component-builder SKILL 规则 2)。
10
+ */
11
+ .orbit-quasar-host {
12
+ --orbit-primary: #123aff;
13
+ --q-primary: var(--orbit-primary);
14
+
15
+ :deep(.q-btn) {
16
+ padding: 0 10px;
17
+ text-transform: none;
18
+ }
19
+ }
@@ -1,15 +1,15 @@
1
- export interface XnbContext {
2
- bookPath: string
3
- cellUid: string
4
- notifySuccess: (msg: string) => void
5
- notifyError: (msg: any) => void
6
- loadingShow: (opts?: any) => void
7
- loadingHide: () => void
8
- userData: Record<string, any>
9
- getUserData: () => Record<string, any>
10
- updateUserData: (data: any) => void
11
- mergeUserData: (data: any) => void
12
- getInstanceById: (id: string) => any
13
- getInstanceValueById: (id: string) => any
14
- setInstanceValueById: (id: string, value: any) => void
15
- }
1
+ export interface XnbContext {
2
+ bookPath: string
3
+ cellUid: string
4
+ notifySuccess: (msg: string) => void
5
+ notifyError: (msg: any) => void
6
+ loadingShow: (opts?: any) => void
7
+ loadingHide: () => void
8
+ userData: Record<string, any>
9
+ getUserData: () => Record<string, any>
10
+ updateUserData: (data: any) => void
11
+ mergeUserData: (data: any) => void
12
+ getInstanceById: (id: string) => any
13
+ getInstanceValueById: (id: string) => any
14
+ setInstanceValueById: (id: string, value: any) => void
15
+ }
@@ -1,70 +1,70 @@
1
- /**
2
- * 与「超级表格 / 子 Cell」协作相关的 xnbContext 形状(精简版,便于本模板内类型对齐)。
3
- * 完整类型定义以你们宿主或正式项目中的 `Types/context` 等为准;本处仅保留模板示例所需字段。
4
- */
5
-
6
- /**
7
- * 单张子表在 XNBBitable 侧的常见形状(`getSubBitable` / `getAllSubBitable` 返回值对齐用)。
8
- * 宿主实现字段可能更多;此处保留示例所需最小集。
9
- */
10
- export interface DemoBitableSheet {
11
- index?: string
12
- name?: string
13
- row?: number
14
- items: unknown[]
15
- data_columns: unknown[]
16
- config?: unknown
17
- [key: string]: unknown
18
- }
19
-
20
- /** 子表创建时单张 bitable 的配置骨架(创建前常补全 items / data_columns / config) */
21
- export interface DemoSubBitableOption {
22
- index?: string
23
- name?: string
24
- rowFocus?: number
25
- columnFocus?: number
26
- items?: unknown[]
27
- data_columns?: unknown[]
28
- config?: unknown[]
29
- [key: string]: unknown
30
- }
31
-
32
- /** 宿主注入的 XNBBitable 构造函数(典型用法:`new XNBBitable({ bookPath, cellUid })`) */
33
- export interface XNBBitableChoreo {
34
- getSubCell (): Promise<string | null>
35
- createSubBitable (bitables: unknown[], sheetName: string): Promise<string>
36
- /** 多子表时用于按 `index` 命中目标子表;单表场景常返回长度为 1 的数组 */
37
- getAllSubBitable (refresh?: boolean): Promise<DemoBitableSheet[]>
38
- getSubBitable (refresh?: boolean): Promise<DemoBitableSheet>
39
- /**
40
- * 为子表追加列定义(常见签名第三参为 `[]`)。
41
- * 与 `bitable-list-lifecycle.js` 一致:重建列前常先清空 `bitable.data_columns` 再调用。
42
- */
43
- addColumns (bitable: Record<string, unknown>, dataColumns: unknown[], extra: unknown[]): Promise<void>
44
- updateSubBitable (bitables: unknown[], opts?: Record<string, unknown>): Promise<void>
45
- delay (ms: number): Promise<void>
46
- }
47
-
48
- export type XNBBitableConstructor = new (opts: { bookPath: string; cellUid: string }) => XNBBitableChoreo
49
-
50
- /** window.xnb.event 最小形状(仅示例里 on/off/emit) */
51
- export interface XnbEventBus {
52
- on: (channel: string, handler: (...args: unknown[]) => void) => void
53
- off: (channel: string, handler: (...args: unknown[]) => void) => void
54
- emit: (channel: string, ...args: unknown[]) => void
55
- }
56
-
57
- /** 超级表格 Cell 场景下 xnbContext 常用字段(宿主注入上下文 + XNBBitable 类) */
58
- export interface XnbSuperCellContext {
59
- bookPath: string
60
- cellUid: string
61
- /** 类本身,由宿主注入;dev 环境见 dev/src/mockXNBBitable.ts */
62
- XNBBitable?: XNBBitableConstructor
63
- loadingShow?: (opts?: unknown) => void
64
- loadingHide?: () => void
65
- notifySuccess?: (msg: string) => void
66
- notifyError?: (msg: unknown, ...rest: unknown[]) => void
67
- getUserData?: () => Record<string, unknown>
68
- updateUserData?: (data: Record<string, unknown>) => Promise<void> | void
69
- [key: string]: unknown
70
- }
1
+ /**
2
+ * 与「超级表格 / 子 Cell」协作相关的 xnbContext 形状(精简版,便于本模板内类型对齐)。
3
+ * 完整类型定义以你们宿主或正式项目中的 `Types/context` 等为准;本处仅保留模板示例所需字段。
4
+ */
5
+
6
+ /**
7
+ * 单张子表在 XNBBitable 侧的常见形状(`getSubBitable` / `getAllSubBitable` 返回值对齐用)。
8
+ * 宿主实现字段可能更多;此处保留示例所需最小集。
9
+ */
10
+ export interface DemoBitableSheet {
11
+ index?: string
12
+ name?: string
13
+ row?: number
14
+ items: unknown[]
15
+ data_columns: unknown[]
16
+ config?: unknown
17
+ [key: string]: unknown
18
+ }
19
+
20
+ /** 子表创建时单张 bitable 的配置骨架(创建前常补全 items / data_columns / config) */
21
+ export interface DemoSubBitableOption {
22
+ index?: string
23
+ name?: string
24
+ rowFocus?: number
25
+ columnFocus?: number
26
+ items?: unknown[]
27
+ data_columns?: unknown[]
28
+ config?: unknown[]
29
+ [key: string]: unknown
30
+ }
31
+
32
+ /** 宿主注入的 XNBBitable 构造函数(典型用法:`new XNBBitable({ bookPath, cellUid })`) */
33
+ export interface XNBBitableChoreo {
34
+ getSubCell (): Promise<string | null>
35
+ createSubBitable (bitables: unknown[], sheetName: string): Promise<string>
36
+ /** 多子表时用于按 `index` 命中目标子表;单表场景常返回长度为 1 的数组 */
37
+ getAllSubBitable (refresh?: boolean): Promise<DemoBitableSheet[]>
38
+ getSubBitable (refresh?: boolean): Promise<DemoBitableSheet>
39
+ /**
40
+ * 为子表追加列定义(常见签名第三参为 `[]`)。
41
+ * 与 `bitable-list-lifecycle.js` 一致:重建列前常先清空 `bitable.data_columns` 再调用。
42
+ */
43
+ addColumns (bitable: Record<string, unknown>, dataColumns: unknown[], extra: unknown[]): Promise<void>
44
+ updateSubBitable (bitables: unknown[], opts?: Record<string, unknown>): Promise<void>
45
+ delay (ms: number): Promise<void>
46
+ }
47
+
48
+ export type XNBBitableConstructor = new (opts: { bookPath: string; cellUid: string }) => XNBBitableChoreo
49
+
50
+ /** window.xnb.event 最小形状(仅示例里 on/off/emit) */
51
+ export interface XnbEventBus {
52
+ on: (channel: string, handler: (...args: unknown[]) => void) => void
53
+ off: (channel: string, handler: (...args: unknown[]) => void) => void
54
+ emit: (channel: string, ...args: unknown[]) => void
55
+ }
56
+
57
+ /** 超级表格 Cell 场景下 xnbContext 常用字段(宿主注入上下文 + XNBBitable 类) */
58
+ export interface XnbSuperCellContext {
59
+ bookPath: string
60
+ cellUid: string
61
+ /** 类本身,由宿主注入;dev 环境见 dev/src/mockXNBBitable.ts */
62
+ XNBBitable?: XNBBitableConstructor
63
+ loadingShow?: (opts?: unknown) => void
64
+ loadingHide?: () => void
65
+ notifySuccess?: (msg: string) => void
66
+ notifyError?: (msg: unknown, ...rest: unknown[]) => void
67
+ getUserData?: () => Record<string, unknown>
68
+ updateUserData?: (data: Record<string, unknown>) => Promise<void> | void
69
+ [key: string]: unknown
70
+ }