@xtalpi/agentic-lab-skills 0.0.1

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 (57) hide show
  1. package/README.md +1 -0
  2. package/package.json +14 -0
  3. package/skills/lab-flow-designer/SKILL.md +360 -0
  4. package/skills/lab-flow-designer/embedded-template/SKILL.md +84 -0
  5. package/skills/lab-flow-designer/embedded-template/pools//345/205/245/345/217/243/346/261/240.md +12 -0
  6. package/skills/lab-flow-designer/embedded-template/pools//345/207/272/345/217/243/346/261/240.md +12 -0
  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 +149 -0
  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 +100 -0
  9. package/skills/lab-flow-designer/references/agentic-lab-processer.md +101 -0
  10. package/skills/lab-flow-designer/references/agentic-lab-sdk.md +440 -0
  11. package/skills/lab-flow-designer/references/rhea-api/README.md +7 -0
  12. package/skills/lab-flow-designer/references/rhea-api/execute_process_batch.md +58 -0
  13. package/skills/lab-flow-designer/references/skill-package-layout.md +199 -0
  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 +208 -0
  15. package/skills/lab-orbit-component-builder/SKILL.md +305 -0
  16. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.env.local.example +27 -0
  17. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintignore +7 -0
  18. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintrc.cjs +88 -0
  19. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.nvmrc +1 -0
  20. package/skills/lab-orbit-component-builder/examples/xnb-component-template/AgenticAppAPI.md +268 -0
  21. package/skills/lab-orbit-component-builder/examples/xnb-component-template/Jenkinsfile +106 -0
  22. package/skills/lab-orbit-component-builder/examples/xnb-component-template/OrbitAPI.md +453 -0
  23. package/skills/lab-orbit-component-builder/examples/xnb-component-template/README.md +176 -0
  24. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/public/index.html +12 -0
  25. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/App.vue +151 -0
  26. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/components/DevOpenerLauncher.vue +143 -0
  27. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/global.d.ts +74 -0
  28. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/main.ts +305 -0
  29. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/mockXNBBitable.ts +119 -0
  30. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/shims-vue.d.ts +6 -0
  31. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/utils/devOpenerHost.ts +75 -0
  32. package/skills/lab-orbit-component-builder/examples/xnb-component-template/index.html +13 -0
  33. package/skills/lab-orbit-component-builder/examples/xnb-component-template/package.json +57 -0
  34. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/api/agenticlabTickets.ts +110 -0
  35. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/bitable.ts +4 -0
  36. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/custom-page.ts +4 -0
  37. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/index.ts +1 -0
  38. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/styles/orbit-quasar-host.scss +19 -0
  39. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/context.ts +15 -0
  40. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/xnb-context.ts +70 -0
  41. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useBitablePage.ts +180 -0
  42. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperCellDemo.ts +257 -0
  43. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperTableBitableLifecycle.ts +547 -0
  44. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerInitParams.ts +158 -0
  45. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerTicketIds.ts +32 -0
  46. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/orbitHttpClient.ts +110 -0
  47. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/request.ts +92 -0
  48. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/bitable.vue +65 -0
  49. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/custom-page.vue +140 -0
  50. package/skills/lab-orbit-component-builder/examples/xnb-component-template/tsconfig.json +48 -0
  51. package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.config.ts +165 -0
  52. package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.dev.config.ts +51 -0
  53. package/skills/lab-orbit-component-builder/references/flow-document-human-ui.md +65 -0
  54. package/skills/lab-orbit-component-builder/references/pool-schema-to-columns.md +67 -0
  55. package/skills/lab-orbit-component-builder/references/vue-template-checklist.md +113 -0
  56. package/skills/lab-orbit-component-builder/references/xnb-context-vue-props.md +49 -0
  57. package/skills/lab-orbit-component-builder/references/xnbitable-vue-parity.md +32 -0
@@ -0,0 +1,257 @@
1
+ import { computed, onScopeDispose, ref, watch } from 'vue'
2
+ import type { ComputedRef, Ref } from 'vue'
3
+ import type {
4
+ DemoSubBitableOption,
5
+ XnbEventBus,
6
+ XnbSuperCellContext,
7
+ XNBBitableChoreo
8
+ } from '../types/xnb-context'
9
+
10
+ /** 子表 / sheet 占位名,仅用于示例;真实工程请与宿主约定一致 */
11
+ export const DEMO_SHEET_NAME = 'DemoSheet'
12
+
13
+ export interface UseSuperCellDemoResult {
14
+ bookPath: ComputedRef<string>
15
+ cellUid: ComputedRef<string>
16
+ hasXNBBitable: ComputedRef<boolean>
17
+ choreo: Ref<XNBBitableChoreo | null>
18
+ subCellUid: Ref<string | null>
19
+ probeLog: Ref<string[]>
20
+ /** 调用 choreo.getSubCell(),取得子 Cell 标识 */
21
+ probeSubCell: () => Promise<void>
22
+ /**
23
+ * 将 options 补全为带 items / data_columns / config 的 bitable 列表后,调用 createSubBitable。
24
+ */
25
+ exampleCreateSubBitable: (optionsList?: DemoSubBitableOption[]) => Promise<void>
26
+ /** 调用 getSubBitable(true) 读取当前子表 */
27
+ exampleGetSubBitable: () => Promise<void>
28
+ /** 拉子表、清空 items、再 updateSubBitable(演示清空子表数据的常见写法) */
29
+ exampleClearSubBitable: () => Promise<void>
30
+ /** choreo.delay 后向整书发保存事件(示例不含用户数据回写) */
31
+ exampleDelayThenEmitBookSave: () => Promise<void>
32
+ /**
33
+ * 为 `${subUid}::xnb-sheet-mounted` 与 `${subUid}::cell-updated` 注册监听(常见子表生命周期钩子)。
34
+ * 会先 getSubCell;重复调用会先卸掉上一轮监听。
35
+ */
36
+ exampleAttachSubCellEventChannels: () => Promise<void>
37
+ /** 卸掉 exampleAttachSubCellEventChannels 注册的监听 */
38
+ exampleDetachSubCellEventChannels: () => void
39
+ }
40
+
41
+ function getXnbEventBus (): XnbEventBus | null {
42
+ const w = window as Window & { xnb?: { event?: XnbEventBus } }
43
+ return w.xnb?.event ?? null
44
+ }
45
+
46
+ /**
47
+ * 将配置项规范为传给 createSubBitable 的 bitable 对象列表(补齐 items / data_columns / config 空壳)。
48
+ */
49
+ export function mapOptionsToBitables (optionsList: DemoSubBitableOption[]): unknown[] {
50
+ return optionsList.map((ops: DemoSubBitableOption) => ({
51
+ items: [],
52
+ data_columns: [],
53
+ config: [],
54
+ ...ops
55
+ }))
56
+ }
57
+
58
+ /**
59
+ * 超级表格 Cell 场景下 XNBBitable 的通用用法示例(无具体领域逻辑):
60
+ * - 实例化:`new XNBBitable({ bookPath, cellUid })`
61
+ * - 子 Cell:getSubCell、createSubBitable
62
+ * - 子表读写:getSubBitable、清空 items、updateSubBitable
63
+ * - 整书保存:delay 后 emit `xnb-book-menu` / save
64
+ * - 子 Cell 事件:`xnb-sheet-mounted`、`cell-updated`
65
+ */
66
+ export function useSuperCellDemo (getContext: () => XnbSuperCellContext): UseSuperCellDemoResult {
67
+ const bookPath = computed(() => getContext().bookPath || '')
68
+ const cellUid = computed(() => getContext().cellUid || '')
69
+ const hasXNBBitable = computed(() => Boolean(getContext().XNBBitable))
70
+
71
+ const choreo = ref<XNBBitableChoreo | null>(null)
72
+ const subCellUid = ref<string | null>(null)
73
+ const probeLog = ref<string[]>([])
74
+
75
+ const subCellEventCleanups = ref<Array<() => void>>([])
76
+
77
+ function pushLog (line: string): void {
78
+ probeLog.value = [...probeLog.value, line]
79
+ }
80
+
81
+ function exampleDetachSubCellEventChannels (): void {
82
+ subCellEventCleanups.value.forEach((fn: () => void) => {
83
+ try {
84
+ fn()
85
+ } catch {
86
+ /* noop */
87
+ }
88
+ })
89
+ subCellEventCleanups.value = []
90
+ }
91
+
92
+ function rebuildChoreo (): void {
93
+ exampleDetachSubCellEventChannels()
94
+ const ctx = getContext()
95
+ const Ctor = ctx.XNBBitable
96
+ if (!Ctor) {
97
+ choreo.value = null
98
+ return
99
+ }
100
+ choreo.value = new Ctor({
101
+ bookPath: ctx.bookPath,
102
+ cellUid: ctx.cellUid
103
+ })
104
+ }
105
+
106
+ watch(
107
+ () => [getContext().bookPath, getContext().cellUid, getContext().XNBBitable] as const,
108
+ () => {
109
+ rebuildChoreo()
110
+ subCellUid.value = null
111
+ probeLog.value = []
112
+ },
113
+ { immediate: true }
114
+ )
115
+
116
+ onScopeDispose(() => {
117
+ exampleDetachSubCellEventChannels()
118
+ })
119
+
120
+ async function probeSubCell (): Promise<void> {
121
+ probeLog.value = []
122
+ if (!choreo.value) {
123
+ pushLog('[skip] 当前上下文未注入 XNBBitable(真机由宿主提供)')
124
+ return
125
+ }
126
+ try {
127
+ const uid = await choreo.value.getSubCell()
128
+ subCellUid.value = uid
129
+ pushLog(`getSubCell() -> ${uid ?? '(null)'}`)
130
+ } catch (err) {
131
+ pushLog(`getSubCell 错误: ${err instanceof Error ? err.message : String(err)}`)
132
+ }
133
+ }
134
+
135
+ async function exampleCreateSubBitable (optionsList?: DemoSubBitableOption[]): Promise<void> {
136
+ if (!choreo.value) {
137
+ pushLog('[createSubBitable] skip:无 choreo')
138
+ return
139
+ }
140
+ const list = optionsList ?? [
141
+ { index: 'demo-sheet-a', name: 'Sheet A', rowFocus: 0, columnFocus: 0 }
142
+ ]
143
+ try {
144
+ const bitables = mapOptionsToBitables(list)
145
+ const newUid = await choreo.value.createSubBitable(bitables, DEMO_SHEET_NAME)
146
+ pushLog(`createSubBitable(${DEMO_SHEET_NAME}) -> ${newUid}`)
147
+ } catch (err) {
148
+ pushLog(`createSubBitable 错误: ${err instanceof Error ? err.message : String(err)}`)
149
+ }
150
+ }
151
+
152
+ async function exampleGetSubBitable (): Promise<void> {
153
+ if (!choreo.value) {
154
+ pushLog('[getSubBitable] skip:无 choreo')
155
+ return
156
+ }
157
+ try {
158
+ const bitable = await choreo.value.getSubBitable(true)
159
+ const n = bitable.items?.length ?? 0
160
+ pushLog(`getSubBitable(true) -> items.length=${n}`)
161
+ } catch (err) {
162
+ pushLog(`getSubBitable 错误: ${err instanceof Error ? err.message : String(err)}`)
163
+ }
164
+ }
165
+
166
+ async function exampleClearSubBitable (): Promise<void> {
167
+ if (!choreo.value) {
168
+ pushLog('[clear 子表] skip:无 choreo')
169
+ return
170
+ }
171
+ try {
172
+ const bitable = await choreo.value.getSubBitable(true)
173
+ bitable.items = []
174
+ await choreo.value.updateSubBitable([bitable], { isMerge: false, name: DEMO_SHEET_NAME })
175
+ pushLog(`updateSubBitable:已清空 items(sheet=${DEMO_SHEET_NAME})`)
176
+ } catch (err) {
177
+ pushLog(`clear 子表 错误: ${err instanceof Error ? err.message : String(err)}`)
178
+ }
179
+ }
180
+
181
+ async function exampleDelayThenEmitBookSave (): Promise<void> {
182
+ if (!choreo.value) {
183
+ pushLog('[delay + book save] skip:无 choreo')
184
+ return
185
+ }
186
+ try {
187
+ await choreo.value.delay(20)
188
+ const bus = getXnbEventBus()
189
+ if (bus?.emit) {
190
+ bus.emit('xnb-book-menu', 'save', { isNotify: true })
191
+ pushLog('choreo.delay(20) 后已 emit xnb-book-menu / save')
192
+ } else {
193
+ pushLog('choreo.delay(20) 完成;未检测到 window.xnb.event.emit(dev 可忽略)')
194
+ }
195
+ } catch (err) {
196
+ pushLog(`delay + emit 错误: ${err instanceof Error ? err.message : String(err)}`)
197
+ }
198
+ }
199
+
200
+ async function exampleAttachSubCellEventChannels (): Promise<void> {
201
+ exampleDetachSubCellEventChannels()
202
+ if (!choreo.value) {
203
+ pushLog('[子 Cell 事件] skip:无 choreo')
204
+ return
205
+ }
206
+ let uid: string | null = subCellUid.value
207
+ if (!uid) {
208
+ try {
209
+ uid = await choreo.value.getSubCell()
210
+ subCellUid.value = uid
211
+ } catch (err) {
212
+ pushLog(`[子 Cell 事件] getSubCell 失败: ${err instanceof Error ? err.message : String(err)}`)
213
+ return
214
+ }
215
+ }
216
+ if (!uid) {
217
+ pushLog('[子 Cell 事件] skip:subCellUid 为空')
218
+ return
219
+ }
220
+ const bus = getXnbEventBus()
221
+ if (!bus?.on || !bus?.off) {
222
+ pushLog('[子 Cell 事件] 未检测到 window.xnb.event.on/off(dev 可忽略)')
223
+ return
224
+ }
225
+ const mountedHandler = (): void => {
226
+ pushLog(`[event] ${uid}::xnb-sheet-mounted`)
227
+ }
228
+ const updatedHandler = (...args: unknown[]): void => {
229
+ pushLog(`[event] ${uid}::cell-updated payload=${JSON.stringify(args).slice(0, 120)}`)
230
+ }
231
+ const chMounted = `${uid}::xnb-sheet-mounted`
232
+ const chUpdated = `${uid}::cell-updated`
233
+ bus.on(chMounted, mountedHandler)
234
+ bus.on(chUpdated, updatedHandler)
235
+ subCellEventCleanups.value = [
236
+ (): void => { bus.off(chMounted, mountedHandler) },
237
+ (): void => { bus.off(chUpdated, updatedHandler) }
238
+ ]
239
+ pushLog(`已注册 ${chMounted} / ${chUpdated}`)
240
+ }
241
+
242
+ return {
243
+ bookPath,
244
+ cellUid,
245
+ hasXNBBitable,
246
+ choreo,
247
+ subCellUid,
248
+ probeLog,
249
+ probeSubCell,
250
+ exampleCreateSubBitable,
251
+ exampleGetSubBitable,
252
+ exampleClearSubBitable,
253
+ exampleDelayThenEmitBookSave,
254
+ exampleAttachSubCellEventChannels,
255
+ exampleDetachSubCellEventChannels
256
+ }
257
+ }