@lovrabet/lovrabet-cli 2.3.5-beta.2 → 2.3.6-beta.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.
- package/lib/cli.js +1 -1
- package/lib/commands/api-doc/index.js +1 -1
- package/lib/commands/app/cache.js +1 -1
- package/lib/commands/app/definitions.js +1 -1
- package/lib/commands/app/eligibility.js +1 -1
- package/lib/commands/app/mock-loader.js +1 -1
- package/lib/commands/app/remote-source.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app-config/get.js +1 -1
- package/lib/commands/app-config/index.js +1 -1
- package/lib/commands/approval/index.js +1 -1
- package/lib/commands/artifact/index.js +1 -1
- package/lib/commands/auth/device.js +1 -1
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/auth/prompt.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/exec.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/cli-skill/index.js +1 -1
- package/lib/commands/common/config-policy.js +1 -1
- package/lib/commands/common/constraints.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/local-file.js +1 -1
- package/lib/commands/config/definitions.js +1 -1
- package/lib/commands/config/init.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/import-excel.js +1 -1
- package/lib/commands/data/index.js +1 -1
- package/lib/commands/dataset/detail.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/sdk-doc.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/init.js +1 -1
- package/lib/commands/kb/index.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/notification/config-list.js +1 -1
- package/lib/commands/notification/index.js +1 -1
- package/lib/commands/notification/shared.js +1 -1
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/permit/dataset-get.js +1 -1
- package/lib/commands/permit/dataset-set.js +1 -1
- package/lib/commands/permit/index.js +1 -1
- package/lib/commands/permit/page-get.js +1 -1
- package/lib/commands/permit/page-set.js +1 -1
- package/lib/commands/permit/role-menus-set.js +1 -1
- package/lib/commands/permit/role-menus.js +1 -1
- package/lib/commands/permit/shared.js +1 -1
- package/lib/commands/personal-bff/index.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/role/create.js +1 -1
- package/lib/commands/role/delete.js +1 -1
- package/lib/commands/role/detail.js +1 -1
- package/lib/commands/role/index.js +1 -1
- package/lib/commands/role/list.js +1 -1
- package/lib/commands/role/shared.js +1 -1
- package/lib/commands/role/update.js +1 -1
- package/lib/commands/role/user-add.js +1 -1
- package/lib/commands/role/user-remove.js +1 -1
- package/lib/commands/schedule/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/service/dynamic.js +1 -1
- package/lib/commands/service/function-name-adapter.js +1 -1
- package/lib/commands/service/index.js +1 -1
- package/lib/commands/service/registry.js +1 -1
- package/lib/commands/skill/commands/create.js +1 -1
- package/lib/commands/skill/commands/diagram.js +1 -1
- package/lib/commands/skill/commands/install.js +1 -1
- package/lib/commands/skill/commands/list.js +1 -1
- package/lib/commands/skill/commands/push.js +1 -1
- package/lib/commands/skill/commands/validate.js +1 -1
- package/lib/commands/skill/diagram.js +1 -1
- package/lib/commands/skill/flags.js +1 -1
- package/lib/commands/skill/index.js +1 -1
- package/lib/commands/skill/manifest-helpers.js +1 -1
- package/lib/commands/skill/push-execute.js +1 -1
- package/lib/commands/skill/push-flow-helpers.js +1 -1
- package/lib/commands/skill/push-retarget.js +1 -1
- package/lib/commands/skill/scopes.js +1 -1
- package/lib/commands/skill/summary.js +1 -1
- package/lib/commands/skill/templates.js +1 -1
- package/lib/commands/skill/validate.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/update.js +1 -1
- package/lib/commands/user-account/bind.js +1 -1
- package/lib/commands/user-account/index.js +1 -1
- package/lib/commands/workspace/index.js +1 -1
- package/lib/config/domain-config.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/app.js +1 -1
- package/lib/constant/auth-mode.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/distribution.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/constant/output.js +1 -1
- package/lib/constant/product.js +1 -1
- package/lib/constant/region.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/constant/url.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/api-client.d.ts +10 -0
- package/lib/core/api-client.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/kb-search-client.js +1 -1
- package/lib/core/sdk-client.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/access-error.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/dryrun.js +1 -1
- package/lib/framework/flags.js +1 -1
- package/lib/framework/help.js +1 -1
- package/lib/framework/index.js +1 -1
- package/lib/framework/output.js +1 -1
- package/lib/framework/preparse.js +1 -1
- package/lib/framework/rate-limit.js +1 -1
- package/lib/framework/raw-flags.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-confirmation.js +1 -1
- package/lib/framework/runner-error.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/service-order.js +1 -1
- package/lib/framework/types.js +1 -1
- package/lib/generated/build-info.d.ts +4 -4
- package/lib/generated/build-info.js +1 -1
- package/lib/generated/official-routing.js +1 -1
- package/lib/generated/routing-contract.js +1 -1
- package/lib/help.js +1 -1
- package/lib/postinstall.js +1 -1
- package/lib/runtime/confirmation.js +1 -1
- package/lib/runtime/event.js +1 -1
- package/lib/runtime/index.js +1 -1
- package/lib/runtime/queue.js +1 -1
- package/lib/runtime/resolve.js +1 -1
- package/lib/services/dataset-import/auto-id-runner.d.ts +3 -1
- package/lib/services/dataset-import/auto-id-runner.js +1 -1
- package/lib/services/dataset-import/excel-reader.js +1 -1
- package/lib/services/dataset-import/image-bytes.d.ts +3 -0
- package/lib/services/dataset-import/image-bytes.js +1 -0
- package/lib/services/dataset-import/image-ooxml.d.ts +10 -0
- package/lib/services/dataset-import/image-ooxml.js +1 -0
- package/lib/services/dataset-import/image-runner.d.ts +48 -0
- package/lib/services/dataset-import/image-runner.js +1 -0
- package/lib/services/dataset-import/metadata.js +1 -1
- package/lib/services/dataset-import/preview.js +1 -1
- package/lib/services/dataset-import/runner.d.ts +10 -1
- package/lib/services/dataset-import/runner.js +1 -1
- package/lib/services/dataset-import/types.d.ts +28 -1
- package/lib/skills/builtin-skill.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -1
- package/lib/skills/runtime-skill-sync/constants.js +1 -1
- package/lib/skills/runtime-skill-sync/fs-utils.js +1 -1
- package/lib/skills/runtime-skill-sync/hashing.js +1 -1
- package/lib/skills/runtime-skill-sync/install-target.js +1 -1
- package/lib/skills/runtime-skill-sync/links.js +1 -1
- package/lib/skills/runtime-skill-sync/list-local.js +1 -1
- package/lib/skills/runtime-skill-sync/local-files.js +1 -1
- package/lib/skills/runtime-skill-sync/materialize.js +1 -1
- package/lib/skills/runtime-skill-sync/metadata.js +1 -1
- package/lib/skills/runtime-skill-sync/paths.js +1 -1
- package/lib/skills/runtime-skill-sync/push.js +1 -1
- package/lib/skills/runtime-skill-sync/scopes.js +1 -1
- package/lib/skills/runtime-skill-sync/zip-codec.js +1 -1
- package/lib/skills/runtime-skill-sync/zip-package.js +1 -1
- package/lib/skills/runtime-skill-sync.js +1 -1
- package/lib/skills/skill-presence.js +1 -1
- package/lib/utils/access-key-redaction.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/cli-version-check.js +1 -1
- package/lib/utils/cli-version-policy.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/lossless-json.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/positive-safe-integer.js +1 -1
- package/lib/utils/redaction.js +1 -1
- package/lib/utils/update-notice.js +1 -1
- package/lib/utils/version.js +1 -1
- package/lib/utils/write-cli-side-channel.js +1 -1
- package/package.json +4 -1
- package/skills/lovrabet/SKILL.md +3 -1
- package/skills/lovrabet/references/lovrabet-excel-import.md +19 -0
- package/skills/lovrabet.manifest.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1ef48e,_0x3339f3){const _0x3208d8=a175_0x1831,_0x5def02=_0x1ef48e();while(!![]){try{const _0x5a1417=-parseInt(_0x3208d8(0x19b))/0x1+parseInt(_0x3208d8(0x192))/0x2*(-parseInt(_0x3208d8(0x1a6))/0x3)+-parseInt(_0x3208d8(0x18c))/0x4+parseInt(_0x3208d8(0x18f))/0x5*(-parseInt(_0x3208d8(0x1a9))/0x6)+parseInt(_0x3208d8(0x19a))/0x7*(parseInt(_0x3208d8(0x1a2))/0x8)+-parseInt(_0x3208d8(0x19f))/0x9*(-parseInt(_0x3208d8(0x190))/0xa)+-parseInt(_0x3208d8(0x189))/0xb*(-parseInt(_0x3208d8(0x196))/0xc);if(_0x5a1417===_0x3339f3)break;else _0x5def02['push'](_0x5def02['shift']());}catch(_0xe29056){_0x5def02['push'](_0x5def02['shift']());}}}(a175_0x2fb0,0xc792a));import{mkdir,readFile,writeFile}from'node:fs/promises';function a175_0x2fb0(){const _0x14e76a=['upgradeMessage','78Lkyshj','utf8','trim','374NLTzcy','currentVersion','needsUpgrade','3144312OwsXnH','\x20is\x20recommended,\x20current\x20','https://www.npmjs.com/package/','290755aCXlNH','240170LtWpTa','.cache','6cxqGga','belowMinimum','now','join','979404wpEyhf',',\x20run:\x20','parse','update-check.json','7PDIJAn','1246861ZakqmO','true','lastNotifiedVersion','yes','423LSAIkA','filter','lovrabet-cli','29912Chajby','toLowerCase','/v/','object','301164LtmNsB','number'];a175_0x2fb0=function(){return _0x14e76a;};return a175_0x2fb0();}import{homedir}from'node:os';import{dirname,join}from'node:path';import{LOVRABET_NPM_PACKAGE_NAME}from'../constant/distribution.js';import{CLI_BIN_NAME}from'../constant/cli.js';import{checkCliVersion,getCliUpgradeCommand}from'../utils/cli-version-check.js';const UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function a175_0x1831(_0x5a56ac,_0x333880){_0x5a56ac=_0x5a56ac-0x189;const _0x2fb0bb=a175_0x2fb0();let _0x1831ca=_0x2fb0bb[_0x5a56ac];return _0x1831ca;}function isUpdateNoticeDisabled(){const _0x1b276c=a175_0x1831,_0x52677a=process.env.LOVRABET_NO_UPDATE_NOTICE?.[_0x1b276c(0x1ab)]()[_0x1b276c(0x1a3)]();return _0x52677a==='1'||_0x52677a===_0x1b276c(0x19c)||_0x52677a===_0x1b276c(0x19e);}function cacheRoot(){const _0x539835=a175_0x1831;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x539835(0x191));}export function getUpdateNoticeCachePath(){const _0x2e1799=a175_0x1831;return join(cacheRoot(),_0x2e1799(0x1a1),_0x2e1799(0x199));}async function readUpdateNoticeCache(){const _0x397138=a175_0x1831;try{const _0x220a93=await readFile(getUpdateNoticeCachePath(),_0x397138(0x1aa)),_0x908a72=JSON[_0x397138(0x198)](_0x220a93);if(!_0x908a72||typeof _0x908a72!==_0x397138(0x1a5))return{};return _0x908a72;}catch{return{};}}async function writeUpdateNoticeCache(_0xc6f8b7){const _0xc4664=a175_0x1831;try{const _0x311c3c=getUpdateNoticeCachePath();await mkdir(dirname(_0x311c3c),{'recursive':!![]}),await writeFile(_0x311c3c,JSON['stringify'](_0xc6f8b7,null,0x2)+'\x0a',_0xc4664(0x1aa));}catch{}}function isRecentlyNotified(_0x326267,_0x66162a,_0x2e433e){const _0x12c9fe=a175_0x1831;return _0x326267[_0x12c9fe(0x19d)]===_0x66162a&&typeof _0x326267['lastNotifiedAt']===_0x12c9fe(0x1a7)&&_0x2e433e-_0x326267['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x382c95){const _0x5021e8=a175_0x1831;return _0x5021e8(0x18e)+LOVRABET_NPM_PACKAGE_NAME+_0x5021e8(0x1a4)+_0x382c95;}export async function resolveLatestUpdateNotice(_0x1e175e){const _0x1331bf=a175_0x1831;if(isUpdateNoticeDisabled())return null;try{const _0x1e110d=Date[_0x1331bf(0x194)](),_0xdac419=_0x1e175e??await checkCliVersion(),_0x214bdf=_0xdac419[_0x1331bf(0x18a)],_0x4ac507=_0xdac419['stableVersion'],_0x27d744=await readUpdateNoticeCache();if(!_0x4ac507||!_0xdac419[_0x1331bf(0x18b)]||_0xdac419[_0x1331bf(0x193)])return null;if(isRecentlyNotified(_0x27d744,_0x4ac507,_0x1e110d))return null;const _0x320a7d=getCliUpgradeCommand(_0xdac419);return await writeUpdateNoticeCache({..._0x27d744,'checkedAt':_0x1e110d,'latest':_0x4ac507,'failed':![],'lastNotifiedVersion':_0x4ac507,'lastNotifiedAt':_0x1e110d}),{'command':_0x320a7d,'current':_0x214bdf,'latest':_0x4ac507,'url':buildNpmVersionUrl(_0x4ac507),'message':[_0xdac419[_0x1331bf(0x1a8)],CLI_BIN_NAME+'\x20'+_0x4ac507+_0x1331bf(0x18d)+_0x214bdf+_0x1331bf(0x197)+_0x320a7d][_0x1331bf(0x1a0)](Boolean)[_0x1331bf(0x195)]('\x20')};}catch{return null;}}
|
package/lib/utils/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x2d0e2b,_0x43d5e8){const _0xa0b302=a176_0x3ee1,_0x4f73df=_0x2d0e2b();while(!![]){try{const _0x5a4171=-parseInt(_0xa0b302(0x1ad))/0x1*(-parseInt(_0xa0b302(0x1af))/0x2)+parseInt(_0xa0b302(0x1b4))/0x3*(parseInt(_0xa0b302(0x1b0))/0x4)+-parseInt(_0xa0b302(0x1b1))/0x5*(parseInt(_0xa0b302(0x1b7))/0x6)+-parseInt(_0xa0b302(0x1b6))/0x7*(-parseInt(_0xa0b302(0x1ac))/0x8)+-parseInt(_0xa0b302(0x1b5))/0x9*(-parseInt(_0xa0b302(0x1b3))/0xa)+-parseInt(_0xa0b302(0x1b2))/0xb*(-parseInt(_0xa0b302(0x1ae))/0xc)+-parseInt(_0xa0b302(0x1b8))/0xd;if(_0x5a4171===_0x43d5e8)break;else _0x4f73df['push'](_0x4f73df['shift']());}catch(_0x4b2283){_0x4f73df['push'](_0x4f73df['shift']());}}}(a176_0x4be5,0xd8eff));function a176_0x3ee1(_0x4d63b7,_0x8c9c07){_0x4d63b7=_0x4d63b7-0x1ac;const _0x4be518=a176_0x4be5();let _0x3ee16e=_0x4be518[_0x4d63b7];return _0x3ee16e;}function a176_0x4be5(){const _0x54c792=['10319754RiEtFk','10241517sYvFlB','488sTlUKE','283391WjAGjL','360Hpysrk','2uLmqor','387796osXXDS','5zqmreK','520751SoArYF','690DgFkLQ','27kHhzpk','82665AMKbRT','21392kDeXkA'];a176_0x4be5=function(){return _0x54c792;};return a176_0x4be5();}import{BUILD_TIME,GIT_COMMIT,VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}export function getCliGitCommit(){const _0x55e5c1=String(GIT_COMMIT);return _0x55e5c1&&_0x55e5c1!=='unknown'?_0x55e5c1:'';}export function getCliVersionDisplay(){const _0x46718f=getCliGitCommit(),_0x11b7fc=BUILD_TIME['slice'](0x0,0xa);if(!_0x46718f||!_0x11b7fc)return VERSION;return VERSION+'\x20('+_0x46718f+',\x20'+_0x11b7fc+')';}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a177_0x5732(){var _0x4249ba=['2950277iEacPQ','948GZpxHP','5571AhOBQv','4451MfAgCq','131807cPVjra','1242EhIruC','1521176TohBrd','10MUDcQA','350795MlFRnI','2088KhGeCm','45hbezPp','write','stderr','134XMrsLw','14966xdkfJb'];a177_0x5732=function(){return _0x4249ba;};return a177_0x5732();}function a177_0x41f1(_0x12e1a7,_0x114398){_0x12e1a7=_0x12e1a7-0x198;var _0x573211=a177_0x5732();var _0x41f1f6=_0x573211[_0x12e1a7];return _0x41f1f6;}(function(_0x274b1b,_0x200949){var _0xad375d=a177_0x41f1,_0x6ecb20=_0x274b1b();while(!![]){try{var _0x2a7b28=parseInt(_0xad375d(0x1a6))/0x1*(-parseInt(_0xad375d(0x1a1))/0x2)+-parseInt(_0xad375d(0x1a5))/0x3*(-parseInt(_0xad375d(0x19d))/0x4)+-parseInt(_0xad375d(0x19c))/0x5+-parseInt(_0xad375d(0x199))/0x6*(-parseInt(_0xad375d(0x1a2))/0x7)+-parseInt(_0xad375d(0x19a))/0x8*(parseInt(_0xad375d(0x19e))/0x9)+-parseInt(_0xad375d(0x19b))/0xa*(parseInt(_0xad375d(0x1a3))/0xb)+parseInt(_0xad375d(0x1a4))/0xc*(parseInt(_0xad375d(0x198))/0xd);if(_0x2a7b28===_0x200949)break;else _0x6ecb20['push'](_0x6ecb20['shift']());}catch(_0x481ab3){_0x6ecb20['push'](_0x6ecb20['shift']());}}}(a177_0x5732,0x98baf));export function writeCliSideChannelLine(_0x51367c){var _0x5893c3=a177_0x41f1;process[_0x5893c3(0x1a0)][_0x5893c3(0x19f)](_0x51367c+'\x0a');}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lovrabet/lovrabet-cli",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.6-beta.1",
|
|
4
4
|
"description": "Runtime CLI for Lovrabet apps, datasets, SQL, Backend Function, skills, and AI agent workflows.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -94,9 +94,12 @@
|
|
|
94
94
|
"fs-extra": "^11.3.6",
|
|
95
95
|
"ink": "^6.2.3",
|
|
96
96
|
"ink-spinner": "^5.0.0",
|
|
97
|
+
"jpeg-js": "0.4.4",
|
|
97
98
|
"jsdom": "26.1.0",
|
|
98
99
|
"meow": "^13.2.0",
|
|
99
100
|
"mermaid": "11.16.0",
|
|
101
|
+
"omggif": "1.0.10",
|
|
102
|
+
"pngjs": "7.0.0",
|
|
100
103
|
"react": "^19.2.0",
|
|
101
104
|
"saxes": "6.0.0",
|
|
102
105
|
"semver": "^7.7.3",
|
package/skills/lovrabet/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lovrabet
|
|
3
3
|
displayName: Lovrabet 运行态 CLI
|
|
4
|
-
version: 2.3.
|
|
4
|
+
version: 2.3.6-beta.1
|
|
5
5
|
description: "Lovrabet 运行态 CLI — 面向业务场景的 AI 操作套件,通过 lovrabet 命令管理应用目录、业务角色与权限、用户级外部账号、Service Tree 业务命令、API 文档发现、数据集查询、Instant API 数据操作、可恢复 Excel 导入、Custom SQL/Backend Function、Personal Backend Function、文件上传、面向票证类业务材料文字与结构化字段提取的 OCR、审批待办与任务办理、定时任务、Skill、知识库与运行态 app-config key 状态检查。触发词:云图、lovrabet、lovrabet-cli、业务角色、角色成员、页面权限、菜单权限、数据集权限、user-account bind、provider 外部账号绑定、钉钉 userId 绑定、service tree、业务服务树、api-doc、dataset、data filter、Excel 导入、data import-excel、file upload、file query-url、ocr recognize、OCR 识别、票证文字提取、票证字段提取、发票识别、票据识别、证照识别、附件上传、personal-bff、approval、审批、待办、approve、reject、transfer、schedule、定时任务、cron、kb、skill、sql exec、bff exec、app-config、accessKey、compress、jq。"
|
|
6
6
|
metadata:
|
|
7
7
|
requires:
|
|
@@ -728,3 +728,5 @@ personal KB 使用文件型 create/update。更新前先 `kb detail` 查看正
|
|
|
728
728
|
| 知识库工作流 | [lovrabet-kb-workflow.md](references/lovrabet-kb-workflow.md) |
|
|
729
729
|
| 定时任务工作流 | [lovrabet-schedule-workflow.md](references/lovrabet-schedule-workflow.md) |
|
|
730
730
|
| 日志 | [lovrabet-logs.md](references/lovrabet-logs.md) |
|
|
731
|
+
|
|
732
|
+
METADATA 原生 Excel 图片导入支持浮动图片、Microsoft Excel 单元格 richData 和独立 WPS DISPIMG。图片列映射到 IMAGE 字段;先 `--dry-run` 核验服务端能力,恢复时保留主检查点与 `.rows.json`,详见[可恢复 Excel 导入](references/lovrabet-excel-import.md)。
|
|
@@ -29,3 +29,22 @@ lovrabet data import-excel --appcode <appCode> --code <datasetCode> --file ./rec
|
|
|
29
29
|
报告包含 `sourceRows`、`succeeded`、`unknown`、`conflicts`、`notAttempted`、批次耗时和输出路径。unknown 表示需恢复核对;内容冲突、已导入行不可见或契约/身份漂移时停止,不自动修复或换标记。重复恢复已完成导入会重新核对字段且不新增记录。
|
|
30
30
|
|
|
31
31
|
检查点与报告包含业务数据及恢复标识,保留私有权限,不外发真实 AK 或敏感业务值。该能力不放宽应用可访问性、创建权限或读取权限;非 Excel `batchCreate` 保持原有调用方式。
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# Native Excel image import into UPLOAD fields
|
|
35
|
+
|
|
36
|
+
For `METADATA` datasets, `lovrabet data import-excel` reads embedded PNG, JPEG and GIF pictures from floating DrawingML anchors, Microsoft Excel in-cell rich data, and standalone WPS `DISPIMG` formulas (including `_xlfn.` / `@` forms). The import stores the original embedded image bytes. Excel crop, rotation and filter effects are not rendered into the result. EXIF is not mapped to business fields; metadata already present in the original bytes is retained. Map the picture column header to the confirmed `UPLOAD` field code. Its business value is an ordered `{fileName,filePath}` array; for example, `{"UPLOAD_1":[{"fileName":"photo.png","filePath":"dataset-import/<scope>/<digest>.png"}]}`. Use the durable file path returned by upload. Digest, MIME type and byte size remain upload verification/checkpoint metadata. Pictures in one cell preserve their order; repeated identical bytes upload once per import. Picture-only rows are included. Hidden rows are included with a warning.
|
|
37
|
+
|
|
38
|
+
Existing `IMAGE` fields keep their legacy `{name,type,key,size}` value format and checkpoint compatibility. Do not change a dataset's field type or translate existing persisted rows automatically. The field protocol is bound to the source/schema/checkpoint; switching an original import from IMAGE to UPLOAD is not a resume operation.
|
|
39
|
+
|
|
40
|
+
Start with the existing import command and `--dry-run`. Dry-run validates the local workbook, mapping, image bytes, server capability and request size, then reports image occurrences, unique images and unique bytes. It does not upload images, create records, or write checkpoints/reports. A missing server image capability blocks an import containing pictures; scalar-only imports continue to use the existing import contract.
|
|
41
|
+
|
|
42
|
+
Inspect all validation errors before running the confirmed write. Each image must be no larger than 10 MiB and no larger than 40 million pixels. GIF cumulative frame canvas pixels must also fit that pixel limit. Unique images total at most 50 MiB per import, with at most 10,000 occurrences. Only the selected sheet and mapped UPLOAD or legacy IMAGE columns contribute uploads. Mixed scalar content and pictures in one mapped image cell, missing images, unsupported formulas, external images, ambiguous relationships, pictures spanning multiple business rows, and unmappable absolute anchors stop validation. UPLOAD support here is for embedded images, not arbitrary embedded documents or JSON/URL text in cells.
|
|
43
|
+
|
|
44
|
+
Image imports use a v3 main checkpoint at `--checkpoint` and a row checkpoint at `<checkpoint>.rows.json`. Keep both files together, plus the source workbook and mapping. The main checkpoint binds the actor, application, dataset, runtime domain, source, mapping, schema, image descriptors, batch settings and row strategy. Do not edit or replace checkpoint files. Keep the result report for reconciliation.
|
|
45
|
+
|
|
46
|
+
After an interruption, run the exact command with `--resume`. Resume queries the original image identity before deciding whether a pending upload may continue, then resumes the original row IDs/task markers. A completed image that becomes missing, corrupt or changed stops recovery; it is not automatically re-uploaded. Completed resumes re-read images and records without uploading or creating duplicates. If a row phase was already started but its row checkpoint is missing, stop and reconcile the original outcome before proceeding.
|
|
47
|
+
|
|
48
|
+
UPLOAD values are compared strictly: a changed fileName, filePath, array order or unexpected property stops recovery. Legacy IMAGE comparison ignores known empty server defaults for creator fields and geolocation, while preserving meaningful or unknown metadata differences. For an auto-ID image import previously marked as conflicted, `--resume` may recover only when the original generated row IDs are recorded and fresh readback confirms every original image, row ID and mapped field. All batches are checked before any remaining rows are written. Missing rows, different content, marker collisions, or conflicts without recorded IDs still stop recovery. Keep the original checkpoints; never clear a conflict by editing them or starting the same import with new markers. Scalar-only and fixed-ID conflict handling is unchanged.
|
|
49
|
+
|
|
50
|
+
WebP (including static and animated), SVG/EMF, remote URLs, arbitrary image formulas, shared image formulas, ATTACHMENT fields, and native DB_TABLE image import are unsupported. Animated PNG is also rejected. `DB_TABLE` continues to use its separately documented `batchCreate` workflow, without import checkpoints; do not automatically switch an image import to that route. Business fields never receive base64 data, formulas or temporary signed URLs.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "lovrabet",
|
|
4
4
|
"packageName": "@lovrabet/lovrabet-cli",
|
|
5
|
-
"packageVersion": "2.3.
|
|
6
|
-
"skillVersion": "2.3.
|
|
5
|
+
"packageVersion": "2.3.6-beta.1",
|
|
6
|
+
"skillVersion": "2.3.6-beta.1",
|
|
7
7
|
"files": [
|
|
8
8
|
"SKILL.md",
|
|
9
9
|
"guides/app-resolution.md",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"references/lovrabet-user-account.md",
|
|
41
41
|
"references/lovrabet-workspace.md"
|
|
42
42
|
],
|
|
43
|
-
"digest": "
|
|
43
|
+
"digest": "fce58c95a0f9fb29c4927c3df219b69548d6a06c668d0332d00bbf70e7e5fdd2"
|
|
44
44
|
}
|