@xtalpi/agentic-lab-skills 0.0.9 → 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 -593
  4. package/skills/lab-flow-designer/embedded-template/SKILL.md +103 -88
  5. package/skills/lab-flow-designer/embedded-template/pools//345/205/245/345/217/243/346/261/240.md +21 -12
  6. package/skills/lab-flow-designer/embedded-template/pools//345/207/272/345/217/243/346/261/240.md +21 -12
  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 -99
  9. package/skills/lab-flow-designer/references/agentic-lab-processer.md +122 -78
  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 -204
  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 -208
  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 -169
  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 -197
  17. package/skills/lab-flow-designer/testing/test-processer.mjs +1240 -1075
  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,189 +1,189 @@
1
- import { computed, onMounted, ref, watch } from 'vue'
2
- import type { ComputedRef, Ref } from 'vue'
3
- import { useQuasar } from 'quasar'
4
- import type { XnbSuperCellContext } from '@/types/xnb-context'
5
- import type { OpenerInitResult } from '@/utils/openerInitParams'
6
- import { fetchOpenerInitPayload } from '@/utils/openerInitParams'
7
- import { useSuperTableBitableLifecycle } from '@/use/useSuperTableBitableLifecycle'
8
-
9
- export interface UseBitablePageResult {
10
- openerInitReady: Ref<boolean>
11
- openerInitError: Ref<unknown>
12
- openerErrorText: ComputedRef<string>
13
- busyRefresh: Ref<boolean>
14
- busyCheck: Ref<boolean>
15
- busySubmit: Ref<boolean>
16
- lastRowCount: Ref<number>
17
- onRefresh: () => Promise<void>
18
- onCheck: () => Promise<void>
19
- onSubmit: () => Promise<void>
20
- }
21
-
22
- /**
23
- * 超级表格 Cell 页:opener 初始化 + `useSuperTableBitableLifecycle`(刷新 / 检查 / 提交)。
24
- */
25
- export function useBitablePage (getContext: () => XnbSuperCellContext): UseBitablePageResult {
26
- const $q = useQuasar()
27
-
28
- function confirmDataMutation (title: string, message: string): Promise<boolean> {
29
- return new Promise<boolean>((resolve: (v: boolean) => void) => {
30
- let settled = false
31
- const finish = (v: boolean): void => {
32
- if (settled) return
33
- settled = true
34
- resolve(v)
35
- }
36
- $q.dialog({
37
- title,
38
- message,
39
- persistent: true,
40
- ok: { label: '确定', color: 'primary', flat: false },
41
- cancel: { label: '取消', flat: true, color: 'grey-8' }
42
- })
43
- .onOk(() => {
44
- finish(true)
45
- })
46
- .onCancel(() => {
47
- finish(false)
48
- })
49
- .onDismiss(() => {
50
- finish(false)
51
- })
52
- })
53
- }
54
-
55
- const openerInit = ref<OpenerInitResult | null>(null)
56
- const openerInitError = ref<unknown>(null)
57
- const openerInitReady = ref(false)
58
-
59
- const openerPayload = computed(() => {
60
- if (openerInit.value?.ok === true) return openerInit.value.payload
61
- return null
62
- })
63
-
64
- const openerErrorText = computed(() => '没有获得有效参数,请关闭页面重试。')
65
-
66
- const { choreo, lastRowCount, bootstrap, refreshTable, checkRows, submitRows } = useSuperTableBitableLifecycle(
67
- getContext,
68
- () => openerPayload.value
69
- )
70
-
71
- const busyRefresh = ref(false)
72
- const busyCheck = ref(false)
73
- const busySubmit = ref(false)
74
-
75
- async function runOpenerInit (): Promise<void> {
76
- const ctx = getContext()
77
- try {
78
- openerInit.value = await fetchOpenerInitPayload({
79
- loadingShow: () => {
80
- ctx.loadingShow?.()
81
- },
82
- loadingHide: () => {
83
- ctx.loadingHide?.()
84
- },
85
- notifyError: (msg: unknown, ...rest: unknown[]) => {
86
- console.warn('[opener] init error:', msg, ...rest)
87
- }
88
- })
89
- if (openerInit.value && !openerInit.value.ok) {
90
- console.warn('[opener] init not ok:', openerInit.value.skipped)
91
- openerInitError.value = new Error(openerInit.value.skipped || 'init-failed')
92
- }
93
- } catch (err) {
94
- console.warn('[opener] init exception:', err)
95
- openerInitError.value = err
96
- } finally {
97
- openerInitReady.value = true
98
- }
99
- }
100
-
101
- let _bootstrapCellKey = ''
102
- let _bootstrapping = false
103
-
104
- async function runBootstrapSafe (): Promise<void> {
105
- if (!choreo.value || _bootstrapping) return
106
- const key = `${getContext().bookPath}|${getContext().cellUid}`
107
- if (key === _bootstrapCellKey) return
108
- _bootstrapping = true
109
- _bootstrapCellKey = key
110
- try {
111
- await bootstrap()
112
- } catch {
113
- /* composable 内已 notify */
114
- } finally {
115
- _bootstrapping = false
116
- }
117
- }
118
-
119
- async function onRefresh (): Promise<void> {
120
- const ok = await confirmDataMutation(
121
- '确认刷新',
122
- '将重新拉取数据并覆盖当前表格内容,是否继续?'
123
- )
124
- if (!ok) return
125
- busyRefresh.value = true
126
- try {
127
- await refreshTable({})
128
- } finally {
129
- busyRefresh.value = false
130
- }
131
- }
132
-
133
- async function onCheck (): Promise<void> {
134
- busyCheck.value = true
135
- try {
136
- await checkRows()
137
- } finally {
138
- busyCheck.value = false
139
- }
140
- }
141
-
142
- async function onSubmit (): Promise<void> {
143
- const ok = await confirmDataMutation(
144
- '确认提交',
145
- '将把当前表格中的工单提交至服务器(execution/complete),是否继续?'
146
- )
147
- if (!ok) return
148
- busySubmit.value = true
149
- try {
150
- await submitRows()
151
- } finally {
152
- busySubmit.value = false
153
- }
154
- }
155
-
156
- onMounted(() => {
157
- runOpenerInit().catch(() => {})
158
- })
159
-
160
- watch(
161
- [openerInitReady, openerPayload, choreo],
162
- () => {
163
- if (!openerInitReady.value || !choreo.value) return
164
- runBootstrapSafe().catch(() => {})
165
- },
166
- { immediate: true }
167
- )
168
-
169
- watch(
170
- () => [getContext().bookPath, getContext().cellUid, getContext().XNBBitable] as const,
171
- () => {
172
- if (!openerInitReady.value || !choreo.value) return
173
- runBootstrapSafe().catch(() => {})
174
- }
175
- )
176
-
177
- return {
178
- openerInitReady,
179
- openerInitError,
180
- openerErrorText,
181
- busyRefresh,
182
- busyCheck,
183
- busySubmit,
184
- lastRowCount,
185
- onRefresh,
186
- onCheck,
187
- onSubmit
188
- }
189
- }
1
+ import { computed, onMounted, ref, watch } from 'vue'
2
+ import type { ComputedRef, Ref } from 'vue'
3
+ import { useQuasar } from 'quasar'
4
+ import type { XnbSuperCellContext } from '@/types/xnb-context'
5
+ import type { OpenerInitResult } from '@/utils/openerInitParams'
6
+ import { fetchOpenerInitPayload } from '@/utils/openerInitParams'
7
+ import { useSuperTableBitableLifecycle } from '@/use/useSuperTableBitableLifecycle'
8
+
9
+ export interface UseBitablePageResult {
10
+ openerInitReady: Ref<boolean>
11
+ openerInitError: Ref<unknown>
12
+ openerErrorText: ComputedRef<string>
13
+ busyRefresh: Ref<boolean>
14
+ busyCheck: Ref<boolean>
15
+ busySubmit: Ref<boolean>
16
+ lastRowCount: Ref<number>
17
+ onRefresh: () => Promise<void>
18
+ onCheck: () => Promise<void>
19
+ onSubmit: () => Promise<void>
20
+ }
21
+
22
+ /**
23
+ * 超级表格 Cell 页:opener 初始化 + `useSuperTableBitableLifecycle`(刷新 / 检查 / 提交)。
24
+ */
25
+ export function useBitablePage (getContext: () => XnbSuperCellContext): UseBitablePageResult {
26
+ const $q = useQuasar()
27
+
28
+ function confirmDataMutation (title: string, message: string): Promise<boolean> {
29
+ return new Promise<boolean>((resolve: (v: boolean) => void) => {
30
+ let settled = false
31
+ const finish = (v: boolean): void => {
32
+ if (settled) return
33
+ settled = true
34
+ resolve(v)
35
+ }
36
+ $q.dialog({
37
+ title,
38
+ message,
39
+ persistent: true,
40
+ ok: { label: '确定', color: 'primary', flat: false },
41
+ cancel: { label: '取消', flat: true, color: 'grey-8' }
42
+ })
43
+ .onOk(() => {
44
+ finish(true)
45
+ })
46
+ .onCancel(() => {
47
+ finish(false)
48
+ })
49
+ .onDismiss(() => {
50
+ finish(false)
51
+ })
52
+ })
53
+ }
54
+
55
+ const openerInit = ref<OpenerInitResult | null>(null)
56
+ const openerInitError = ref<unknown>(null)
57
+ const openerInitReady = ref(false)
58
+
59
+ const openerPayload = computed(() => {
60
+ if (openerInit.value?.ok === true) return openerInit.value.payload
61
+ return null
62
+ })
63
+
64
+ const openerErrorText = computed(() => '没有获得有效参数,请关闭页面重试。')
65
+
66
+ const { choreo, lastRowCount, bootstrap, refreshTable, checkRows, submitRows } = useSuperTableBitableLifecycle(
67
+ getContext,
68
+ () => openerPayload.value
69
+ )
70
+
71
+ const busyRefresh = ref(false)
72
+ const busyCheck = ref(false)
73
+ const busySubmit = ref(false)
74
+
75
+ async function runOpenerInit (): Promise<void> {
76
+ const ctx = getContext()
77
+ try {
78
+ openerInit.value = await fetchOpenerInitPayload({
79
+ loadingShow: () => {
80
+ ctx.loadingShow?.()
81
+ },
82
+ loadingHide: () => {
83
+ ctx.loadingHide?.()
84
+ },
85
+ notifyError: (msg: unknown, ...rest: unknown[]) => {
86
+ console.warn('[opener] init error:', msg, ...rest)
87
+ }
88
+ })
89
+ if (openerInit.value && !openerInit.value.ok) {
90
+ console.warn('[opener] init not ok:', openerInit.value.skipped)
91
+ openerInitError.value = new Error(openerInit.value.skipped || 'init-failed')
92
+ }
93
+ } catch (err) {
94
+ console.warn('[opener] init exception:', err)
95
+ openerInitError.value = err
96
+ } finally {
97
+ openerInitReady.value = true
98
+ }
99
+ }
100
+
101
+ let _bootstrapCellKey = ''
102
+ let _bootstrapping = false
103
+
104
+ async function runBootstrapSafe (): Promise<void> {
105
+ if (!choreo.value || _bootstrapping) return
106
+ const key = `${getContext().bookPath}|${getContext().cellUid}`
107
+ if (key === _bootstrapCellKey) return
108
+ _bootstrapping = true
109
+ _bootstrapCellKey = key
110
+ try {
111
+ await bootstrap()
112
+ } catch {
113
+ /* composable 内已 notify */
114
+ } finally {
115
+ _bootstrapping = false
116
+ }
117
+ }
118
+
119
+ async function onRefresh (): Promise<void> {
120
+ const ok = await confirmDataMutation(
121
+ '确认刷新',
122
+ '将重新拉取数据并覆盖当前表格内容,是否继续?'
123
+ )
124
+ if (!ok) return
125
+ busyRefresh.value = true
126
+ try {
127
+ await refreshTable({})
128
+ } finally {
129
+ busyRefresh.value = false
130
+ }
131
+ }
132
+
133
+ async function onCheck (): Promise<void> {
134
+ busyCheck.value = true
135
+ try {
136
+ await checkRows()
137
+ } finally {
138
+ busyCheck.value = false
139
+ }
140
+ }
141
+
142
+ async function onSubmit (): Promise<void> {
143
+ const ok = await confirmDataMutation(
144
+ '确认提交',
145
+ '将把当前表格中的工单提交至服务器(execution/complete),是否继续?'
146
+ )
147
+ if (!ok) return
148
+ busySubmit.value = true
149
+ try {
150
+ await submitRows()
151
+ } finally {
152
+ busySubmit.value = false
153
+ }
154
+ }
155
+
156
+ onMounted(() => {
157
+ runOpenerInit().catch(() => {})
158
+ })
159
+
160
+ watch(
161
+ [openerInitReady, openerPayload, choreo],
162
+ () => {
163
+ if (!openerInitReady.value || !choreo.value) return
164
+ runBootstrapSafe().catch(() => {})
165
+ },
166
+ { immediate: true }
167
+ )
168
+
169
+ watch(
170
+ () => [getContext().bookPath, getContext().cellUid, getContext().XNBBitable] as const,
171
+ () => {
172
+ if (!openerInitReady.value || !choreo.value) return
173
+ runBootstrapSafe().catch(() => {})
174
+ }
175
+ )
176
+
177
+ return {
178
+ openerInitReady,
179
+ openerInitError,
180
+ openerErrorText,
181
+ busyRefresh,
182
+ busyCheck,
183
+ busySubmit,
184
+ lastRowCount,
185
+ onRefresh,
186
+ onCheck,
187
+ onSubmit
188
+ }
189
+ }