e10-ebuilder-prototype 0.5.0
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/README.md +113 -0
- package/dist/api.d.ts +12 -0
- package/dist/api.js +125 -0
- package/dist/application.d.ts +7 -0
- package/dist/application.js +16 -0
- package/dist/archive.d.ts +130 -0
- package/dist/archive.js +151 -0
- package/dist/capture.d.ts +15 -0
- package/dist/capture.js +440 -0
- package/dist/common.d.ts +20 -0
- package/dist/common.js +87 -0
- package/dist/dom.d.mts +1 -0
- package/dist/dom.mjs +58 -0
- package/dist/form-context.d.ts +3 -0
- package/dist/form-context.js +58 -0
- package/dist/form-runtime.d.mts +2 -0
- package/dist/form-runtime.mjs +149 -0
- package/dist/forms.d.ts +51 -0
- package/dist/forms.js +603 -0
- package/dist/html.d.ts +22 -0
- package/dist/html.js +427 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +370 -0
- package/dist/menus.d.ts +32 -0
- package/dist/menus.js +330 -0
- package/dist/model.d.ts +164 -0
- package/dist/model.js +8 -0
- package/dist/offline-store.d.mts +5 -0
- package/dist/offline-store.mjs +80 -0
- package/dist/platform.d.ts +10 -0
- package/dist/platform.js +123 -0
- package/dist/readiness.d.ts +124 -0
- package/dist/readiness.js +529 -0
- package/dist/runtime-support.d.mts +52 -0
- package/dist/runtime-support.mjs +279 -0
- package/dist/site.d.ts +34 -0
- package/dist/site.js +195 -0
- package/dist/store.d.ts +90 -0
- package/dist/store.js +296 -0
- package/dist/templates/form-guide.md +539 -0
- package/dist/templates/index.html +803 -0
- package/dist/templates/placeholder.html +143 -0
- package/dist/templates/workflow-guide.md +95 -0
- package/dist/templates/workflow-presets.json +89 -0
- package/dist/temporary-records.d.ts +15 -0
- package/dist/temporary-records.js +286 -0
- package/dist/vendor/environment-auth.d.ts +61 -0
- package/dist/vendor/environment-auth.js +455 -0
- package/dist/workflow-runtime.d.mts +2 -0
- package/dist/workflow-runtime.mjs +298 -0
- package/dist/workflows.d.ts +28 -0
- package/dist/workflows.js +90 -0
- package/docs/PROTOCOL.md +299 -0
- package/package.json +45 -0
package/docs/PROTOCOL.md
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# Contract v5 — e10-ebuilder-prototype 0.5.0
|
|
2
|
+
|
|
3
|
+
Product, npm package, CLI and Skill share this name. Node >=22.5, TypeScript/ESM,
|
|
4
|
+
pinned playwright-core and installed Chrome. No LLM calls in CLI: host AI generates
|
|
5
|
+
business HTML from CLI jobs. Authentication and persistent namespaces retain existing
|
|
6
|
+
E10_PAGE_CAPTURE_HOME/CHROME and .e10-page-capture identifiers.
|
|
7
|
+
|
|
8
|
+
## Entry and scope
|
|
9
|
+
|
|
10
|
+
User-facing intent: 根据应用 ID 或后台应用地址生成应用原型,包含已发布菜单中的页面、建模列表和流程页面。
|
|
11
|
+
`run|init --app-id ID --dir DIR` or `--app-url URL` accepts a complete backend app URL
|
|
12
|
+
http(s)://origin/sp/ebdapp/<entrance>/<appId>/... . IDs remain strings; numeric URL/ID
|
|
13
|
+
inputs must agree. URL credentials are rejected; the parsed origin must match the
|
|
14
|
+
authenticated environment. Credentials are never persisted in task files or prompts.
|
|
15
|
+
|
|
16
|
+
New tasks set menuRequired, siteRequired and htmlRequired. Discovery reads
|
|
17
|
+
GET /api/cusapp/app/allMenus?appId=ID&terminalType=PC&isFront=0 and app/info?id=ID.
|
|
18
|
+
Prefer ebAppMenus; fall back to cusAppMenus only if absent. Never concatenate them.
|
|
19
|
+
Published menus alone define navigation and generation scope. Exclude system recycle
|
|
20
|
+
and settings and denied branches. Preserve menu IDs/names, stable showOrder, hierarchy,
|
|
21
|
+
default selection and duplicate names. Pure groups remain if supported children exist.
|
|
22
|
+
Cycles, duplicate IDs and conflicting target/membership data fail explicitly.
|
|
23
|
+
Unsupported menu types are listed in skippedMenus, not silently rendered as other types.
|
|
24
|
+
|
|
25
|
+
PAGE menu targets resolve metadata through /api/bs/ebuilder/page/list?appid=ID, selecting
|
|
26
|
+
only published IDs. PAGE, ECODE_HTML and ECODE_REACT building types share the same
|
|
27
|
+
capture pipeline. Repeated page targets share one PNG/HTML but retain menu entrances.
|
|
28
|
+
SEARCH uses its referenced traditional list. VIEWPORT with NList tabs uses its exact
|
|
29
|
+
host page ID and the known data.page.comps[1].config contract. LAYOUT and recognized
|
|
30
|
+
direct EB URLs preserve object, list, layout and view/add/edit mode. Supported combined
|
|
31
|
+
URLs resolve getCombMenus by container menu ID, retain ordered tabs, reject nested or
|
|
32
|
+
empty unsupported combinations. URL parsing never follows external hosts.
|
|
33
|
+
Form object membership uses /api/bs/ebuilder/form/obj/getList/ID?apid=ID. Inventory is
|
|
34
|
+
for membership, not navigation. A form menu key is its menu ID (combined child uses
|
|
35
|
+
parentKey-childMenuId); objId, underlying formId and listId are not interchangeable.
|
|
36
|
+
|
|
37
|
+
## Commands and state
|
|
38
|
+
|
|
39
|
+
Commands: init, next, discover, collect, capture, run, retry, status, pack, doctor;
|
|
40
|
+
html next|accept|fail|retry; auth set|status|profile list|current|use NAME.
|
|
41
|
+
Auth set supports --base-url, --eteamsid-stdin and --eteamsid. JSON returns one final
|
|
42
|
+
object; progress uses stderr. Normal operations expose next, errors expose fix.
|
|
43
|
+
Exit 0 = normal/DONE, 2 = PARTIAL, 1 = blocking error.
|
|
44
|
+
|
|
45
|
+
NEW -> WAITING_AUTH or DISCOVER -> COLLECT -> CAPTURE -> HTML -> PACKAGE -> DONE/PARTIAL.
|
|
46
|
+
run discovers, collects form configs, captures pages and then hands off to the host.
|
|
47
|
+
After accepted HTML, run/pack creates the offline application. HTML/pack do not read
|
|
48
|
+
auth or revisit the source. status/next are read-only. Task binds appId, origin and a
|
|
49
|
+
hash of tenant/user identity; another identity cannot continue it.
|
|
50
|
+
|
|
51
|
+
Atomic state and receipts live under DIR/.e10-page-capture; artifacts under DIR/artifacts.
|
|
52
|
+
Short CLI transactions are locked. Interrupted collection/capture and generation can
|
|
53
|
+
resume; completed files must match hashes. Failed sources retry explicitly with retry;
|
|
54
|
+
html retry only resets failed generation. Pending source or HTML work blocks packaging.
|
|
55
|
+
Collection/capture/generation failures allow explicit PARTIAL, with failed menu destinations.
|
|
56
|
+
No state flag alone proves completion. Final entry, destinations and ZIP are verified.
|
|
57
|
+
Existing tasks without menuRequired retain their legacy all-resource/placeholder workflow;
|
|
58
|
+
new menu semantics require a new directory. No automatic migration.
|
|
59
|
+
|
|
60
|
+
## Modeling-list and layout collection
|
|
61
|
+
|
|
62
|
+
Collection uses E10Client with in-memory auth, same-origin requests, redirects denied,
|
|
63
|
+
30s request deadlines and integer-safe JSON parsing. Form API independent deployment
|
|
64
|
+
rewrites only /api/ebuilder{appId}/form routes. Common metadata and file routes retain
|
|
65
|
+
original prefixes. Menu jobs use bounded concurrency and shared per-object metadata.
|
|
66
|
+
|
|
67
|
+
Traditional lists collect listInit, base info, columns, order, search, statistics,
|
|
68
|
+
conditions where configured and list buttons. NList retains the exact component config.
|
|
69
|
+
Fields preserve IDs, main/detail grouping, config and system/custom classification;
|
|
70
|
+
select/radio/checkbox/cascader options are collected. Cascaders with only first-level
|
|
71
|
+
options carry a warning. Unknown/malformed primary configs fail that menu.
|
|
72
|
+
|
|
73
|
+
Existing data lookup requests at most one reference row per object; business row values
|
|
74
|
+
are not persisted in source JSON. With a record, exportDataDetailPDF(exportHtml=true)
|
|
75
|
+
may create a reference file, downloaded only as private input. Default collection reads business records only. New-task --allow-temporary-records explicitly
|
|
76
|
+
allows one uniquely marked temporary reference per form attempt when existing reference
|
|
77
|
+
export is unavailable. Construct only verified simple field keys/options; required complex
|
|
78
|
+
fields can reject seeding and permit fallback. Journal before creation, verify returned ID
|
|
79
|
+
and marker, collect layout/default and explicit mode buttons before finally cleanup. Verify
|
|
80
|
+
exact-ID deletion by a subsequent read. No bulk/conditional deletion, extra business objects
|
|
81
|
+
or recycle-bin clearing. Unknown creation is reconciled by an exact marker lookup (at most
|
|
82
|
+
two rows), never by replaying creation. Unknown deletion only gets read verification; a
|
|
83
|
+
remaining record blocks further writes instead of replaying deletion. Pending/uncertain
|
|
84
|
+
journals block collection success, HTML allocation and pack. Resume processes journals first.
|
|
85
|
+
The flag is persisted; default read-only tasks use a new directory to enable it. Exported
|
|
86
|
+
reference HTML and record provenance stay private. Finished prototypes remain offline only. Without usable reference HTML, layout.source
|
|
87
|
+
is fields and warnings describe fallback. Custom layout menus do not turn a default
|
|
88
|
+
export into evidence of exact custom layout. Reference HTML is untrusted data for host
|
|
89
|
+
reconstruction, never executed or directly embedded. ZIP excludes these private inputs.
|
|
90
|
+
|
|
91
|
+
Buttons are scoped by app/object/list and independently by layout/mode/record context.
|
|
92
|
+
Keep enable/hidden/positions/actions plus source paths and raw config. Empty arrays mean
|
|
93
|
+
no configured buttons; unavailable is distinct and cannot borrow another mode's buttons.
|
|
94
|
+
Configuration count is not visible toolbar count. List display conditions and action
|
|
95
|
+
chains are interpreted by host AI as local mock behavior, not executed on the server.
|
|
96
|
+
Reference failures become explicit warnings; primary metadata failures fail collection;
|
|
97
|
+
auth loss always aborts the phase, retaining interrupted receipts for resume.
|
|
98
|
+
|
|
99
|
+
## Page capture
|
|
100
|
+
|
|
101
|
+
Capture defaults: concurrency 4 (1..8 override), PC 1440x900, mobile 390x844,
|
|
102
|
+
CSS pixel scale 1, initial navigation/rendering deadline 10 seconds, 1 additional retry for non-timeout errors; timeouts fail immediately, stabilization
|
|
103
|
+
window 800ms, page height limit 50000px, pixel limit 60M. No timeout is treated as ready.
|
|
104
|
+
Readiness uses either page entrance/configuration or meaningful content bound to the requested
|
|
105
|
+
EB page (including cached content after platform reload), visible loading indicators, fonts,
|
|
106
|
+
visible images and an 800ms content/layout stabilization window. Only EBuilder page
|
|
107
|
+
and component data (/api/ebuilder/) and custom component assets (/ecodestatic/)
|
|
108
|
+
block on pending requests. Global shell/background traffic does not block screenshots,
|
|
109
|
+
and document.readyState=interactive is sufficient when the page content is ready. Authentication failures remain blocking errors.
|
|
110
|
+
A verified zero-component configuration with the platform's 暂无内容 placeholder is
|
|
111
|
+
valid page content. Stable business/resource errors, broken visible images and the
|
|
112
|
+
verified terminal-unavailable placeholder are captured as displayed, with warnings.
|
|
113
|
+
Success means the screenshot preserves the page state, not that its business logic is healthy.
|
|
114
|
+
Ancestor clipping excludes hidden carousel slides from visible-image checks. The platform
|
|
115
|
+
.weapp-de-sourcecode-render container is supported alongside ordinary ebpage_<id> roots.
|
|
116
|
+
Its primary same-origin /sp/chtml/ iframe is the page body: lazy scroll and expand its full
|
|
117
|
+
content before capturing the outer page. An ordinary embedded website iframe is checked for document/font/image readiness and stable content, then preserved
|
|
118
|
+
at its designed viewport; its internal website is not expanded. Post-capture validation checks content retention and PNG dimensions (4px rounding tolerance);
|
|
119
|
+
small layout-only changes and background request activity do not fail a screenshot.
|
|
120
|
+
There is no automatic click of tabs, pagination or collapsed business panels.
|
|
121
|
+
Virtual lists or unreadable canvas evidence produce an explicit diagnostic outcome,
|
|
122
|
+
not a claim of complete capture. Screenshots represent the current requested page.
|
|
123
|
+
|
|
124
|
+
Capture results: pending/running/succeeded/failed, with optional warnings[]. Every attempt records stage, reason,
|
|
125
|
+
timing and readiness evidence. A failed page may have a diagnostic PNG in diagnostics/;
|
|
126
|
+
it never appears as a verified page PNG. Credentials/headers/bodies are not diagnostics.
|
|
127
|
+
PNG bytes are committed only after post-capture integrity checks. Close each page
|
|
128
|
+
in finally with bounded cleanup. Batch cleanup failures cannot yield DONE.
|
|
129
|
+
|
|
130
|
+
Loading timeout is 10000ms by default; readiness proceeds immediately when observed signals stabilize.
|
|
131
|
+
Timeouts are final for that run. After initial readiness, each scroll readiness wait has a fresh 10000ms budget.
|
|
132
|
+
PNG encoding/validation has a separate 10000ms limit; an attempt has a loading-budget + 130s hard cap;
|
|
133
|
+
resource cleanup and optional diagnostics are outside the loading deadline.
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
## Mixed host HTML protocol
|
|
137
|
+
|
|
138
|
+
html next is a short locked transaction after all source jobs are terminal. It returns
|
|
139
|
+
up to settings.concurrency jobs total (default 4), including resumed running tokens.
|
|
140
|
+
Each job has kind, pageId, token, name, outputPath, reviewDirectory and prompt.
|
|
141
|
+
Page jobs use screenshotPath and PNG digest, prompt version 2. Form jobs use sourcePath,
|
|
142
|
+
runtimePath and form-input digest, prompt version 4, plus contextPath (bounded lossless
|
|
143
|
+
configuration fragments), guidePath (complete form generation rules), navigationPath (published
|
|
144
|
+
route mapping), and relatedPath (verified objects and metadata fragment paths for explicit relations). Form pageId is the menu key.
|
|
145
|
+
The coordinator tracks live tokens and serializes CLI operations; workers only generate
|
|
146
|
+
HTML and perform local visual QA. Host parallel capability governs actual AI parallelism;
|
|
147
|
+
when unavailable, process sequentially and report honestly. No model subprocess/API.
|
|
148
|
+
|
|
149
|
+
html accept --kind page|form --page-id ID --token TOKEN reads the fixed draft path.
|
|
150
|
+
Kind defaults to page for compatibility. Validate membership, source digest, token,
|
|
151
|
+
UTF-8, document structure, body and common static external resources. Form acceptance
|
|
152
|
+
injects the canonical CLI runtime in head. Commit artifacts/<pageId>.html or
|
|
153
|
+
artifacts/form-html/<menuKey>.html with SHA-256. Successful same-token accept is idempotent.
|
|
154
|
+
Invalid drafts stay running; fail records terminal failure; retry resets failed jobs.
|
|
155
|
+
html retry with an explicit --kind/--page-id resets that target (including accepted HTML)
|
|
156
|
+
for requested visual correction, invalidating its token and archive while retaining source data.
|
|
157
|
+
Changed source/corrupted HTML creates a new token, rejecting stale completions.
|
|
158
|
+
No implicit generation expiry; source rendering's 10s budget does not apply to AI.
|
|
159
|
+
|
|
160
|
+
Prompts require real standalone DOM, inline CSS/JS/SVG, full-image inspection for pages,
|
|
161
|
+
config inspection for forms, populated consistent Mock data and local interactions.
|
|
162
|
+
No whole-image substitute, remote modules/resources/API, extra shell, or parent/top
|
|
163
|
+
navigation. Host must render/inspect and disclose missing QA or approximated configs.
|
|
164
|
+
Static acceptance is not a visual similarity or arbitrary JavaScript correctness proof.
|
|
165
|
+
Status reports pageHtml, collection, formHtml and aggregate html. Pending includes running.
|
|
166
|
+
|
|
167
|
+
## Fixed offline shell and shared form data
|
|
168
|
+
|
|
169
|
+
CLI owns the business-blue shell, failure/legacy placeholders and fixed E10FormStore
|
|
170
|
+
transport; host generates business HTML. Full field/control, list-mode, CRUD, detail, comment/log
|
|
171
|
+
and action-chain expectations ship in templates/form-guide.md, ported from the supplied package. No Preview/Design/Settings top action row.
|
|
172
|
+
Index displays actual published menu hierarchy, search, collapsible groups and mobile
|
|
173
|
+
navigation. Preserve shell, replace only its iframe with relative local HTML. New routes
|
|
174
|
+
are #menu/<key> and combined #menu/<key>?tab=<childKey>; support history and reload.
|
|
175
|
+
No fetch/local web server. Content has responsive 20/16/12px outer spacing. Forms and
|
|
176
|
+
pages can also be opened standalone. Legacy tasks retain their #page/#form routes.
|
|
177
|
+
|
|
178
|
+
E10FormStore.load(initial), save(state), reset(initial), navigate(menuKey,params), parameters() exchange JSON with the active
|
|
179
|
+
shell iframe only, scoped to appId:objId. forObject(objId) exposes load/save/reset for explicit
|
|
180
|
+
relations to other collected objects in the application's published scope. The injected
|
|
181
|
+
object allowlist and shell catalog reject unknown objects and other applications; each
|
|
182
|
+
object retains separate records, comments and logs. Host code uses relatedPath for target
|
|
183
|
+
field metadata and the returned local data for relations and aggregates, without guessed
|
|
184
|
+
relationships or borrowed button scopes. LocalStorage plus in-memory fallback; standalone
|
|
185
|
+
uses local storage, host unavailable falls back after 1s. Payloads limited to 2M characters.
|
|
186
|
+
Navigation only targets known published menus (including combination tabs), preserving the
|
|
187
|
+
shell and passing bounded JSON to the destination; standalone navigation reports unavailable.
|
|
188
|
+
Schema: {schema:1,records:[{id:string,fields:object,details?:object}],comments:[],logs:[]}.
|
|
189
|
+
Fields bind to field IDs. Generated menus use returned shared records instead of fresh
|
|
190
|
+
private copies; unrelated applications/objects remain isolated. Storage availability is
|
|
191
|
+
browser dependent; in-memory fallback lasts the current session only.
|
|
192
|
+
|
|
193
|
+
Form initialization must set window.__E10_FORM_READY__=true after data/rendering. Pack
|
|
194
|
+
renders generated form HTML offline at 1440x900, waits ready and checks page errors before
|
|
195
|
+
PNG. Rendering failures mark that HTML failed and block the pack attempt, allowing html
|
|
196
|
+
retry or subsequent explicit PARTIAL packaging. Owned Pages, contexts and Chrome close
|
|
197
|
+
in finally; cleanup failures cannot yield DONE.
|
|
198
|
+
|
|
199
|
+
## Delivery and privacy
|
|
200
|
+
|
|
201
|
+
Manifest schema 4 maps original menus to generated artifacts, skipped menus and separate
|
|
202
|
+
source/HTML statuses. Pages use page/<pageId>/<pageId>.html and name PNG. Forms use
|
|
203
|
+
form/<menuKey>/<menuKey>.html and name PNG. Form PNGs are generated from local HTML,
|
|
204
|
+
marked pngKind=generated; failed placeholders are explicit, never successful business pages.
|
|
205
|
+
ZIP root: index.html + page/ + form/ + manifest.json (+ diagnostics on capture failures).
|
|
206
|
+
Name: 应用页面-<appId>.zip. Same-name menus retain their identities. Filename cleanup protects
|
|
207
|
+
Windows reserved names and separators; page PNG collisions append IDs. entry/archive
|
|
208
|
+
return absolute paths. Pack uses an explicit allowlist, not a recursive task-directory ZIP.
|
|
209
|
+
Exclude credentials, form-input JSON, layout references, real reference record IDs, drafts,
|
|
210
|
+
tokens and task state. Manifest carries hashes and specific warnings, not private configs.
|
|
211
|
+
DONE covers supported targets; unsupported skipped menu types still require disclosure.
|
|
212
|
+
|
|
213
|
+
## Runtime distribution
|
|
214
|
+
|
|
215
|
+
The npm package and Skill installers use https://registry.npmjs.org/ for public
|
|
216
|
+
distribution. Dependencies retain their pinned versions and integrity checks; no
|
|
217
|
+
internal registry is required for installation. Publishing requires explicit user
|
|
218
|
+
authorization and remains separate from local package creation and verification.
|
|
219
|
+
|
|
220
|
+
Windows runtime (0.1.2): the CLI and bootstrap share runtime-support.mjs. Environment
|
|
221
|
+
names are read without case sensitivity on Windows; auth and bootstrap use the same
|
|
222
|
+
product state root. npm is resolved to an absolute entry (including WorkBuddy's Node
|
|
223
|
+
installation), JavaScript entries run through the current Node, cmd/bat shims use
|
|
224
|
+
ComSpec with literal arguments. npm update notifier and inherited host session hooks
|
|
225
|
+
are removed only from npm children. Local tarballs are copied to the managed release
|
|
226
|
+
before installation and removed afterwards. Windows timeouts/interrupts terminate
|
|
227
|
+
only the exact owned process tree via taskkill /pid /t /f.
|
|
228
|
+
|
|
229
|
+
System Chrome is found in system/per-user locations or E10_PAGE_CAPTURE_CHROME (an
|
|
230
|
+
existing absolute executable path). A fresh persistent profile is created solely for
|
|
231
|
+
the tool; capture workers still use independent Pages and shared terminal contexts.
|
|
232
|
+
Chrome profile/artifact directories are explicitly owned. Recursive cleanup runs in
|
|
233
|
+
an exact-target helper with a 30s Windows budget (15s elsewhere), followed by an
|
|
234
|
+
absence check; browser close has the same platform budgets. These are cleanup limits,
|
|
235
|
+
not the 10s initial page-rendering limit. File replacement retries temporary sharing
|
|
236
|
+
violations for at most 750ms and never deletes the old destination first.
|
|
237
|
+
|
|
238
|
+
Skill archives contain four runtime files: SKILL.md, product.json, scripts/bootstrap.mjs,
|
|
239
|
+
scripts/runtime-support.mjs; local editions additionally contain the npm tarball.
|
|
240
|
+
Windows native acceptance: npm run test:windows, from the target Windows host/WorkBuddy
|
|
241
|
+
environment. macOS simulated Windows branches do not count as native Windows acceptance.
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
## Workflow menus and associated forms (0.5.0)
|
|
245
|
+
|
|
246
|
+
WORKFLOW pageId or /sp/ebdfpage/workflow/{appId}_{category} selects one of todo, done,
|
|
247
|
+
mine, share, subordinates, all, draft, monitor, newflow. LINK and combined child paths
|
|
248
|
+
are supported, app/type/category conflicts fail; BASE/monitor alone remains unsupported.
|
|
249
|
+
Only published entrances generate jobs. FormPage.kind=workflow has workflowType and no
|
|
250
|
+
single objId; it retains kind=form receipts, queue slots, acceptance and delivery paths.
|
|
251
|
+
|
|
252
|
+
Only when collecting workflow menus, query once per collection pass:
|
|
253
|
+
POST /api/bs/ebuilder/flow/approval/getApprovalListDatasByAppId?apid=ID&cid=ID,
|
|
254
|
+
body {appId:ID,viewType:"",sortParams:[],searchParamData:{}}. No independent-deployment
|
|
255
|
+
prefix rewriting for this common API. data.data contains configurations, not instances.
|
|
256
|
+
Validate workflowid/objId and known application membership; formid is not objId.
|
|
257
|
+
Preserve configuration status 1/5 without filtering, and multiple workflows per object.
|
|
258
|
+
Skip non-EB or unverified/conflicting object memberships with reasons. Duplicate workflow
|
|
259
|
+
IDs with different configurations fail. Empty arrays yield generated empty states;
|
|
260
|
+
API/primary dependency failures produce failed collection, never fabricated templates.
|
|
261
|
+
|
|
262
|
+
Workflow dependencies reuse field/options/layout collection (ordinary menus first), including
|
|
263
|
+
forms lacking ordinary menus. Do not enumerate their lists or collect ordinary mode buttons
|
|
264
|
+
for workflow-only dependencies. Existing-reference export/optional temporary-record lifecycle
|
|
265
|
+
is unchanged; no real workflow initiation or approval API exists. Private workflow-catalog.json
|
|
266
|
+
records ready/unavailable; each hashed workflow input embeds its catalog, dependency snapshots,
|
|
267
|
+
scoped preset buttons, preset and warnings. Successful receipts have kind=workflow and
|
|
268
|
+
objectIds instead of objId. These dependencies join the relatedPath/runtime allowlist but
|
|
269
|
+
never produce additional navigation. Dependency locations are explicit in relatedPath.
|
|
270
|
+
|
|
271
|
+
Workflow host jobs use promptVersion=5, workflow guidePath plus layoutGuidePath, and inject
|
|
272
|
+
canonical form and workflow runtimes. Presets are prototype-workflow-preset/mockOnly, not
|
|
273
|
+
claims of source-button permissions. Newflow uses grouped cards; other categories use fixed
|
|
274
|
+
columns/tabs/filters, not custom form fields. Host generates DOM and controls; CLI performs
|
|
275
|
+
no LLM inference and ships no universal workflow frontend renderer. Generation requirements
|
|
276
|
+
include complete associated forms, actual search/filter/paging and action handling.
|
|
277
|
+
|
|
278
|
+
E10WorkflowStore owns local instance transitions under appId:workflow. Instances have unique
|
|
279
|
+
IDs and fields.workflowId/objId/recordId; comments/logs use instanceId. Actor/participants,
|
|
280
|
+
current/next nodes and history are simulated. Done uses handledBy, todo active pendingIds,
|
|
281
|
+
mine initiatorId, share sharedWith, subordinates simulated pending relationships, draft own
|
|
282
|
+
drafts; all excludes drafts, monitor additionally requires the explicit simulated monitorable flag. Batch submission validates the entire selection, requires
|
|
283
|
+
confirmation, records current-user handling and advances to a simulated next node, remaining
|
|
284
|
+
active. New applications/own drafts use saveApplication, jointly storing the associated form
|
|
285
|
+
record and instance; cancelled edits do not call it. References are read from shared object
|
|
286
|
+
stores. Favorites, followed markers, read flags and comments persist; reset requires confirmation.
|
|
287
|
+
|
|
288
|
+
Offline storage v2 persists all touched objects for one application as a single localStorage
|
|
289
|
+
snapshot. Existing v1 object keys are read on first access for compatibility. E10FormStore.commit
|
|
290
|
+
validates all entries before replacing the snapshot; workflow/form updates cannot partially
|
|
291
|
+
commit. Storage unavailable uses session memory, with no persistence guarantee. Both shell
|
|
292
|
+
and standalone transport use the same fixed implementation. Shell accepts only its active,
|
|
293
|
+
available form iframe and known scopes, including dependencies of available workflow pages;
|
|
294
|
+
ordinary pages cannot write the workflow scope. Unknown/cross-app targets reject. Regular
|
|
295
|
+
object payloads and total commit payloads remain limited to 2M characters. No source requests.
|
|
296
|
+
|
|
297
|
+
Manifest schema 4 gains optional workflowType for form entries; workflow receipts do not
|
|
298
|
+
invent an objId. Fixed shell template version 7 preserves existing navigation behavior. Pack
|
|
299
|
+
verifies initialization/rendering for workflows using __E10_FORM_READY__ just like forms.
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "e10-ebuilder-prototype",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Generate offline E10 application prototypes from published page, modeling-list and workflow menus",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "UNLICENSED",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22.5"
|
|
9
|
+
},
|
|
10
|
+
"bin": {
|
|
11
|
+
"e10-ebuilder-prototype": "dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"main": "dist/index.js",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"docs/PROTOCOL.md"
|
|
18
|
+
],
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"registry": "https://registry.npmjs.org/",
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "node scripts/clean.mjs && tsc && node scripts/sync-skill-runtime.mjs",
|
|
25
|
+
"test": "npm run build && node scripts/test.mjs",
|
|
26
|
+
"test:package": "node scripts/test-package.mjs",
|
|
27
|
+
"test:windows": "node scripts/test-windows.mjs",
|
|
28
|
+
"pack:skill": "node scripts/package-skill.mjs",
|
|
29
|
+
"prepack": "npm run build",
|
|
30
|
+
"format": "prettier --write src test scripts integrations/workbuddy-skill/scripts",
|
|
31
|
+
"format:check": "prettier --check src test scripts integrations/workbuddy-skill/scripts"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@napi-rs/keyring": "1.3.0",
|
|
35
|
+
"parse5": "7.2.1",
|
|
36
|
+
"playwright-core": "1.62.1",
|
|
37
|
+
"yazl": "3.3.1"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "22.10.0",
|
|
41
|
+
"@types/yazl": "3.3.0",
|
|
42
|
+
"prettier": "3.3.3",
|
|
43
|
+
"typescript": "5.7.2"
|
|
44
|
+
}
|
|
45
|
+
}
|