weaver-work-cli 0.1.26 → 0.1.29

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 (163) hide show
  1. package/README.md +7 -2
  2. package/dist/cmd/setup/index.js +1 -1
  3. package/dist/internal/e10/auth/commands.js +1 -6
  4. package/dist/internal/e10/auth/messages.js +3 -0
  5. package/dist/internal/e10/auth/session.js +8 -0
  6. package/dist/internal/e10/auth-recovery.js +148 -0
  7. package/dist/internal/e10/client.js +47 -15
  8. package/dist/internal/e10/context.js +8 -8
  9. package/dist/internal/e10/index.js +1 -0
  10. package/dist/internal/e10/request-runtime.js +51 -9
  11. package/dist/shortcuts/archive/host.js +3 -2
  12. package/dist/shortcuts/archive/manifest.js +1 -1
  13. package/dist/shortcuts/archive-oa/host.js +2 -1
  14. package/dist/shortcuts/archive-oa/manifest.js +1 -1
  15. package/dist/shortcuts/asset/host.js +7 -6
  16. package/dist/shortcuts/blog/host.js +4 -3
  17. package/dist/shortcuts/caizhilian/host.js +3 -2
  18. package/dist/shortcuts/caizhilian/manifest.js +1 -1
  19. package/dist/shortcuts/calendar/host.js +2 -1
  20. package/dist/shortcuts/contract/host.js +34 -59
  21. package/dist/shortcuts/ehr/host.js +2 -1
  22. package/dist/shortcuts/esb/host.js +2 -1
  23. package/dist/shortcuts/fna/host.js +6 -3
  24. package/dist/shortcuts/fna/manifest.js +10 -5
  25. package/dist/shortcuts/fna/operations/expense-chart.js +162 -0
  26. package/dist/shortcuts/fna/operations/registry.js +2 -0
  27. package/dist/shortcuts/hrm/host.js +2 -1
  28. package/dist/shortcuts/im/host.js +3 -2
  29. package/dist/shortcuts/invoice/host.js +9 -7
  30. package/dist/shortcuts/invoice/manifest.js +23 -142
  31. package/dist/shortcuts/invoice/operations/issuing-qys.js +266 -203
  32. package/dist/shortcuts/invoice/operations/registry.js +1 -6
  33. package/dist/shortcuts/jiuchuanhui/host.js +2 -1
  34. package/dist/shortcuts/mail/host.js +2 -1
  35. package/dist/shortcuts/meeting/host.js +2 -1
  36. package/dist/shortcuts/meeting/operations/eb/conflict.js +78 -12
  37. package/dist/shortcuts/okr/host.js +2 -1
  38. package/dist/shortcuts/plan/host.js +2 -1
  39. package/dist/shortcuts/project/host.js +2 -1
  40. package/dist/shortcuts/workflow/host.js +3 -5
  41. package/dist/shortcuts/workflow/index.js +4 -1
  42. package/dist/shortcuts/workflow/operations/chatscene.js +4 -22
  43. package/dist/shortcuts/workflow/operations/form.js +281 -166
  44. package/dist/shortcuts/workflow/operations/read.js +39 -8
  45. package/dist/shortcuts/workflow/operations/registry.js +2 -0
  46. package/dist/shortcuts/workflow/operations/todoSmartConvert/businessRules.js +331 -0
  47. package/dist/shortcuts/workflow/operations/todoSmartConvert/detailFieldRules.js +133 -0
  48. package/dist/shortcuts/workflow/operations/todoSmartConvert/summaryCache.js +326 -0
  49. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailCache.js +113 -0
  50. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailFetcher.js +259 -0
  51. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoListRows.js +64 -0
  52. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoOutputPlanner.js +28 -0
  53. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.aggregate.js +70 -0
  54. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.collect.js +267 -0
  55. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.core.js +392 -0
  56. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.detail.js +165 -0
  57. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.group.js +448 -0
  58. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.groupSummary.js +348 -0
  59. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.js +222 -0
  60. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.pipeline.js +66 -0
  61. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.smartGroup.js +502 -0
  62. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.summary.js +540 -0
  63. package/dist/shortcuts/workflow/stdout-compact.js +7 -0
  64. package/docs/SKILL.md +1 -1
  65. package/docs/_catalog.md +2 -1
  66. package/docs/agent-invoice.md +1 -1
  67. package/docs/caizhilian.md +1 -1
  68. package/docs/e10-auth.md +1 -1
  69. package/docs/fna.md +7 -3
  70. package/docs/invoice.md +4 -6
  71. package/docs/todo-smart-convert/README.md +171 -0
  72. package/docs/todo-smart-convert/data-contract.md +236 -0
  73. package/docs/todo-smart-convert/mock/ai-todo-query-target.json +209 -0
  74. package/docs/todo-smart-convert/subgroup-rules.md +245 -0
  75. package/package.json +1 -1
  76. package/scripts/package-skill.mjs +1 -1
  77. package/skill-template/business-info.json +4 -1
  78. package/skill-template/domains/caizhilian.md +2 -1
  79. package/skill-template/domains/qiyecheng.md +1 -0
  80. package/skill-template/domains/yepiaotong.md +6 -2
  81. package/skill-template/skill-template.md +1 -0
  82. package/skills/weaver-e10-blog/SKILL.md +6 -1
  83. package/skills/weaver-e10-blog/references/blog-query.md +3 -1
  84. package/skills/weaver-e10-caizhilian/SKILL.md +18 -9
  85. package/skills/weaver-e10-caizhilian/references/action-flow.md +70 -0
  86. package/skills/weaver-e10-caizhilian/references/agent-entry.md +6 -2
  87. package/skills/weaver-e10-caizhilian/references/auth-and-install.md +207 -0
  88. package/skills/weaver-e10-caizhilian/references/file-collection.md +56 -54
  89. package/skills/weaver-e10-caizhilian/references/file-upload.md +4 -4
  90. package/skills/weaver-e10-caizhilian/references/host-executor-prompt.md +32 -0
  91. package/skills/weaver-e10-caizhilian/references/host-platform-integration.md +46 -0
  92. package/skills/weaver-e10-caizhilian/references/rule-index.md +56 -0
  93. package/skills/weaver-e10-caizhilian/references/setting-attach.md +5 -16
  94. package/skills/weaver-e10-caizhilian/references/setting-backup.md +4 -13
  95. package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +6 -15
  96. package/skills/weaver-e10-caizhilian/references/setting-storage-docs-summary.md +126 -0
  97. package/skills/weaver-e10-caizhilian/references/setting-storage-field-map.md +57 -0
  98. package/skills/weaver-e10-caizhilian/references/setting-storage.md +142 -482
  99. package/skills/weaver-e10-caizhilian/references/source-manifest.json +7 -7
  100. package/skills/weaver-e10-caizhilian/references/task-workflow.md +87 -0
  101. package/skills/weaver-e10-caizhilian/references/withheld.md +2 -2
  102. package/skills/weaver-e10-caizhilian/references/write-protocol.md +7 -0
  103. package/skills/weaver-e10-calendar/SKILL.md +6 -1
  104. package/skills/weaver-e10-esb/SKILL.md +8 -0
  105. package/skills/weaver-e10-esb/references/input-format.md +3 -1
  106. package/skills/weaver-e10-esb/references/source-manifest.json +5 -5
  107. package/skills/weaver-e10-hrm/SKILL.md +6 -1
  108. package/skills/weaver-e10-hrm/references/employee.md +1 -1
  109. package/skills/weaver-e10-hrm/references/org.md +1 -1
  110. package/skills/weaver-e10-hrm/references/position.md +1 -1
  111. package/skills/weaver-e10-jinchengda/SKILL.md +2 -1
  112. package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +1 -1
  113. package/skills/weaver-e10-jiuchuanhui/SKILL.md +6 -1
  114. package/skills/weaver-e10-jucailin/SKILL.md +6 -1
  115. package/skills/weaver-e10-jucailin/references/hr-contact.md +1 -1
  116. package/skills/weaver-e10-jucailin/references/salary.md +1 -1
  117. package/skills/weaver-e10-mail/SKILL.md +6 -1
  118. package/skills/weaver-e10-meeting/SKILL.md +11 -6
  119. package/skills/weaver-e10-meeting/references/meeting-eb.md +7 -3
  120. package/skills/weaver-e10-meeting/references/meeting-queries.md +3 -1
  121. package/skills/weaver-e10-meeting/references/meeting-verification.md +4 -2
  122. package/skills/weaver-e10-okr/SKILL.md +6 -1
  123. package/skills/weaver-e10-okr/references/source-manifest.json +5 -5
  124. package/skills/weaver-e10-plan/SKILL.md +6 -1
  125. package/skills/weaver-e10-plan/references/plan-overview-and-routing.md +3 -1
  126. package/skills/weaver-e10-plan/references/plan-report-query.md +3 -1
  127. package/skills/weaver-e10-plan/references/source-manifest.json +7 -7
  128. package/skills/weaver-e10-qiyecheng/SKILL.md +16 -6
  129. package/skills/weaver-e10-qiyecheng/references/catalog.md +6 -3
  130. package/skills/weaver-e10-qiyecheng/references/expense-center.md +2 -0
  131. package/skills/weaver-e10-qiyecheng/references/expense-chart.md +78 -0
  132. package/skills/weaver-e10-qiyecheng/references/source-manifest.json +87 -33
  133. package/skills/weaver-e10-shared/SKILL.md +37 -14
  134. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +11 -8
  135. package/skills/weaver-e10-shared/references/non-interactive-environment.md +4 -4
  136. package/skills/weaver-e10-shared/references/weaver-e10-installation.md +3 -1
  137. package/skills/weaver-e10-wenshuding/SKILL.md +6 -1
  138. package/skills/weaver-e10-wenshuding/references/source-manifest.json +3 -3
  139. package/skills/weaver-e10-workflow/SKILL.md +23 -1
  140. package/skills/weaver-e10-workflow/references/source-manifest.json +1 -2
  141. package/skills/weaver-e10-workflow/references/todo-smart-convert.md +282 -0
  142. package/skills/weaver-e10-workflow/references/workflow-create.md +30 -55
  143. package/skills/weaver-e10-workflow/scripts/todo-summary.cjs +695 -0
  144. package/skills/weaver-e10-yepiaotong/SKILL.md +19 -17
  145. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +75 -78
  146. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-form-fill-rules.md +179 -0
  147. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-workflow.md +238 -0
  148. package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +7 -7
  149. package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +11 -5
  150. package/skills/weaver-e10-yepiaotong/references/reim-examples.md +55 -33
  151. package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +102 -23
  152. package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +1 -1
  153. package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +53 -42
  154. package/skills/weaver-e10-yepiaotong/references/source-manifest.json +94 -214
  155. package/skills/weaver-e10-yimiaoban/SKILL.md +9 -2
  156. package/skills/weaver-e10-yimiaoban/references/file-user-i18n.md +1 -1
  157. package/skills/weaver-e10-yimiaoban/references/msg-read.md +1 -1
  158. package/skills/weaver-e10-yimiaoban/references/source-manifest.json +9 -9
  159. package/skills/weaver-e10-ziguanjia/SKILL.md +6 -1
  160. package/dist/shortcuts/invoice/operations/issuing.js +0 -198
  161. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-field-rules.md +0 -161
  162. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-qys-ledger.md +0 -66
  163. package/skills/weaver-e10-yepiaotong/references/invoice-issuing.md +0 -107
@@ -79,7 +79,6 @@ const listProperties = {
79
79
  const positiveId = { type: 'string', pattern: '^[1-9]\\d*$' };
80
80
  const positiveIdArray = { type: 'array', minItems: 1, maxItems: 100, items: positiveId };
81
81
  const jsonObject = { type: 'object', additionalProperties: true };
82
- const requestPayload = { type: 'object', minProperties: 1 };
83
82
  const reimFieldValue = {
84
83
  type: 'object',
85
84
  additionalProperties: false,
@@ -653,86 +652,37 @@ const reimAutoPrepareOutputSchema = continuationPreviewOutput(reimTemplatePrevie
653
652
  labels: reimLabelsSchema,
654
653
  warnings: arrayOf({ type: 'string' }),
655
654
  });
656
- const makeInvoicePreviewSchema = objectSchema({
657
- mode: { type: 'string', enum: ['issue', 'ledger'] },
658
- purchaserName: { type: 'string' },
659
- purchaserTaxNo: { type: 'string' },
660
- invoiceType: { type: 'string', enum: ['7', '8', '9', '10'] },
661
- externalDocumentNo: { type: 'string' },
662
- totalAmount: stringOrNumber,
663
- taxAmount: stringOrNumber,
664
- totalAmountWithTax: stringOrNumber,
665
- detailCount: { type: 'integer' },
666
- }, ['mode', 'purchaserName', 'invoiceType', 'externalDocumentNo', 'totalAmount', 'taxAmount', 'totalAmountWithTax', 'detailCount']);
667
- const issuingPrepareOutputSchema = continuationPreviewOutput(makeInvoicePreviewSchema, { normalizedPayload: requestPayload });
668
- const issuingApplyOutputSchema = objectSchema({
669
- mode: { type: 'string', enum: ['issue', 'ledger'] },
670
- serialNo: { type: 'string' },
671
- orderNo: { type: 'string' },
672
- ledgerOnly: { type: 'boolean' },
673
- result: rawObject,
674
- workflow: workflowSchema,
675
- }, ['mode', 'ledgerOnly', 'result', 'workflow']);
676
- const qysOptionValue = {
677
- type: ['object', 'null'],
678
- additionalProperties: false,
679
- properties: { id: { type: 'string' }, name: { type: 'string' } },
680
- };
681
655
  const nullableText = { type: ['string', 'null'] };
682
- const qysLedgerRowSchema = objectSchema({
683
- formDataId: { type: 'string' },
684
- title: nullableText,
685
- dataStatus: nullableText,
686
- contractNo: nullableText,
687
- contractFlow: qysOptionValue,
688
- invoiceType: qysOptionValue,
689
- purchaserName: nullableText,
690
- purchaserTaxNo: nullableText,
691
- invoiceItemName: nullableText,
692
- goodsName: nullableText,
693
- revenueCode: nullableText,
694
- taxRate: qysOptionValue,
695
- quantity: nullableText,
696
- unitPrice: nullableText,
697
- amount: { ...nullableText, description: '开票金额(不含税)' },
698
- invoiceNo: nullableText,
699
- invoiceFlow: qysOptionValue,
700
- discarded: qysOptionValue,
701
- }, ['formDataId'], true);
702
656
  const qysListOutputSchema = objectSchema({
703
657
  items: arrayOf(objectSchema({
704
658
  issuable: { type: 'boolean' },
705
659
  blockers: arrayOf({ type: 'string' }),
706
660
  }, ['formDataId', 'issuable', 'blockers'], true)),
661
+ groups: arrayOf(objectSchema({
662
+ contractNo: { type: 'string' },
663
+ contractFlowId: { type: 'string', description: '台账「合同审批流程」的流程 ID,用于填开票流程的「相关合同审批流程」' },
664
+ contractFlowName: { type: 'string' },
665
+ purchaserName: { type: 'string' },
666
+ purchaserTaxNo: { type: 'string' },
667
+ purchaserBankName: { type: 'string', description: '购方开户行名称;台账把名称写进账号列时已拆出' },
668
+ purchaserBankAccount: { type: 'string', description: '购方开户行账号(只含账号);台账混写时已去掉开户行名称' },
669
+ invoiceTypes: arrayOf({ type: 'string' }),
670
+ specialInvoiceWithoutTaxNo: { type: 'boolean', description: '购方无税号但台账发票类型是专票;为 true 时不能发起开票流程,需先在台账改为普票' },
671
+ goodsNames: arrayOf({ type: 'string' }),
672
+ taxRates: arrayOf({ type: 'string' }),
673
+ specifications: arrayOf({ type: 'string' }, { description: '可开票行“规格型号”去重(开票流程主表“所售产品版本号”取此值)' }),
674
+ sellerNames: arrayOf({ type: 'string' }, { description: '台账“核算公司”去重,即所属公司(销售方);空名称不计入。用于选择开票流程' }),
675
+ rowCount: { type: 'integer' },
676
+ formDataIds: arrayOf({ type: 'string' }),
677
+ totalAmount: { type: 'string', description: '可开票行“开票金额”合计,按分累加(开票流程按含税金额使用)' },
678
+ blockedRows: { type: 'integer', description: '同组已开票、开票中或已废弃的行数' },
679
+ warnings: arrayOf({ type: 'string' }),
680
+ }, ['contractNo', 'purchaserName', 'purchaserBankName', 'purchaserBankAccount', 'rowCount', 'formDataIds', 'totalAmount', 'blockedRows', 'specialInvoiceWithoutTaxNo', 'warnings'])),
707
681
  matched: { type: 'integer' },
708
682
  truncated: { type: 'boolean' },
709
683
  scanned: { type: 'integer' },
710
684
  scanComplete: { type: 'boolean' },
711
- }, ['items', 'matched', 'truncated', 'scanned', 'scanComplete']);
712
- const qysPreviewSchema = objectSchema({
713
- ...makeInvoicePreviewSchema.properties,
714
- formDataId: { type: 'string' },
715
- contractNo: { type: 'string' },
716
- contractFlowName: { type: 'string' },
717
- invoiceTypeName: { type: 'string' },
718
- goodsName: { type: 'string' },
719
- taxRate: { type: 'string' },
720
- }, [...makeInvoicePreviewSchema.required, 'formDataId', 'goodsName', 'taxRate']);
721
- const qysPrepareOutputSchema = continuationPreviewOutput(qysPreviewSchema, {
722
- warnings: arrayOf({ type: 'string' }),
723
- ledgerRow: qysLedgerRowSchema,
724
- normalizedPayload: requestPayload,
725
- });
726
- const issuingResultOutputSchema = objectSchema({
727
- externalDocumentNo: { type: 'string' },
728
- state: { type: 'string', enum: ['SUCCESS', 'PENDING', 'FAILED'] },
729
- returnCode: { type: 'string' },
730
- returnMessage: { type: 'string' },
731
- invoiceNo: { type: 'string' },
732
- invoiceTime: { type: 'string' },
733
- serialNo: { type: 'string' },
734
- result: rawObject,
735
- }, ['externalDocumentNo', 'state', 'returnCode', 'returnMessage', 'invoiceNo', 'result']);
685
+ }, ['items', 'groups', 'matched', 'truncated', 'scanned', 'scanComplete']);
736
686
  export const invoiceOperations = [
737
687
  {
738
688
  name: 'invoice.list',
@@ -1245,91 +1195,22 @@ export const invoiceOperations = [
1245
1195
  },
1246
1196
  outputSchema: reimAutoPrepareOutputSchema,
1247
1197
  },
1248
- {
1249
- name: 'invoice.issuing.make.prepare',
1250
- risk: 'read-before-write',
1251
- fixed: {
1252
- path: '/api/inc/book/open/makeInvoice',
1253
- sellerName: '上海泛微网络科技股份有限公司',
1254
- taxNo: '9131000070322836XD',
1255
- },
1256
- inputSchema: {
1257
- type: 'object',
1258
- additionalProperties: false,
1259
- properties: {
1260
- mode: { type: 'string', enum: ['issue', 'ledger'] },
1261
- payload: requestPayload,
1262
- },
1263
- required: ['mode', 'payload'],
1264
- },
1265
- outputSchema: issuingPrepareOutputSchema,
1266
- },
1267
- {
1268
- name: 'invoice.issuing.make.apply',
1269
- risk: 'high-risk-write',
1270
- inputSchema: {
1271
- type: 'object',
1272
- additionalProperties: false,
1273
- properties: {
1274
- payload: requestPayload,
1275
- continuation: { type: 'string', minLength: 1 },
1276
- confirm: { const: true },
1277
- },
1278
- required: ['payload', 'continuation', 'confirm'],
1279
- },
1280
- outputSchema: issuingApplyOutputSchema,
1281
- },
1282
1198
  {
1283
1199
  name: 'invoice.issuing.qys.list',
1284
1200
  risk: 'read',
1285
- fixed: { path: '/api/ebuilder/form/eblist/getData', ledger: '契约锁合同商品信息' },
1201
+ fixed: { path: '/api/ebuilder/form/list/getListDatas', ledger: '待开票合同数据' },
1286
1202
  inputSchema: {
1287
1203
  type: 'object',
1288
1204
  additionalProperties: false,
1289
1205
  properties: {
1290
1206
  keyword: { type: 'string', description: '模糊匹配合同号、购买方名称、合同审批流程名称、商品名称或开票名称' },
1291
1207
  contractNo: { type: 'string', description: '按合同号精确筛选' },
1292
- includeIssued: { type: 'boolean', default: false, description: '是否包含已开票、开票中或已废弃的行。默认 false 只返回可开票行。' },
1208
+ includeIssued: { type: 'boolean', default: false, description: '是否包含已开票、开票中或已废弃的行。默认 false 只返回可开票行;groups 始终按合同号+购方汇总,blockedRows 计不可开票行数。' },
1293
1209
  limit: { type: 'integer', minimum: 1, maximum: 100, default: 20 },
1294
1210
  },
1295
1211
  },
1296
1212
  outputSchema: qysListOutputSchema,
1297
1213
  },
1298
- {
1299
- name: 'invoice.issuing.qys.prepare',
1300
- risk: 'read-before-write',
1301
- fixed: {
1302
- path: '/api/ebuilder/form/eblist/getData',
1303
- externalDocumentNo: 'QYS-{formDataId}',
1304
- amountBasis: '开票金额为不含税金额,taxSign=0,税额=金额×税率四舍五入到分',
1305
- applyOperation: 'invoice.issuing.make.apply',
1306
- },
1307
- inputSchema: {
1308
- type: 'object',
1309
- additionalProperties: false,
1310
- properties: {
1311
- formDataId: { type: 'string', pattern: '^\\d+$', description: 'invoice.issuing.qys.list 返回的台账行 formDataId' },
1312
- mode: { type: 'string', enum: ['issue', 'ledger'] },
1313
- },
1314
- required: ['formDataId', 'mode'],
1315
- },
1316
- outputSchema: qysPrepareOutputSchema,
1317
- },
1318
- {
1319
- name: 'invoice.issuing.result',
1320
- risk: 'read',
1321
- fixed: { path: '/api/inc/book/open/getMakeInvoiceResult', taxNo: '9131000070322836XD' },
1322
- inputSchema: {
1323
- type: 'object',
1324
- additionalProperties: false,
1325
- properties: {
1326
- externalDocumentNo: { type: 'string', minLength: 1 },
1327
- serialNo: { type: 'string' },
1328
- },
1329
- required: ['externalDocumentNo'],
1330
- },
1331
- outputSchema: issuingResultOutputSchema,
1332
- },
1333
1214
  ];
1334
1215
  export const invoiceManifest = {
1335
1216
  schemaVersion: 1,