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.
Files changed (54) hide show
  1. package/README.md +113 -0
  2. package/dist/api.d.ts +12 -0
  3. package/dist/api.js +125 -0
  4. package/dist/application.d.ts +7 -0
  5. package/dist/application.js +16 -0
  6. package/dist/archive.d.ts +130 -0
  7. package/dist/archive.js +151 -0
  8. package/dist/capture.d.ts +15 -0
  9. package/dist/capture.js +440 -0
  10. package/dist/common.d.ts +20 -0
  11. package/dist/common.js +87 -0
  12. package/dist/dom.d.mts +1 -0
  13. package/dist/dom.mjs +58 -0
  14. package/dist/form-context.d.ts +3 -0
  15. package/dist/form-context.js +58 -0
  16. package/dist/form-runtime.d.mts +2 -0
  17. package/dist/form-runtime.mjs +149 -0
  18. package/dist/forms.d.ts +51 -0
  19. package/dist/forms.js +603 -0
  20. package/dist/html.d.ts +22 -0
  21. package/dist/html.js +427 -0
  22. package/dist/index.d.ts +2 -0
  23. package/dist/index.js +370 -0
  24. package/dist/menus.d.ts +32 -0
  25. package/dist/menus.js +330 -0
  26. package/dist/model.d.ts +164 -0
  27. package/dist/model.js +8 -0
  28. package/dist/offline-store.d.mts +5 -0
  29. package/dist/offline-store.mjs +80 -0
  30. package/dist/platform.d.ts +10 -0
  31. package/dist/platform.js +123 -0
  32. package/dist/readiness.d.ts +124 -0
  33. package/dist/readiness.js +529 -0
  34. package/dist/runtime-support.d.mts +52 -0
  35. package/dist/runtime-support.mjs +279 -0
  36. package/dist/site.d.ts +34 -0
  37. package/dist/site.js +195 -0
  38. package/dist/store.d.ts +90 -0
  39. package/dist/store.js +296 -0
  40. package/dist/templates/form-guide.md +539 -0
  41. package/dist/templates/index.html +803 -0
  42. package/dist/templates/placeholder.html +143 -0
  43. package/dist/templates/workflow-guide.md +95 -0
  44. package/dist/templates/workflow-presets.json +89 -0
  45. package/dist/temporary-records.d.ts +15 -0
  46. package/dist/temporary-records.js +286 -0
  47. package/dist/vendor/environment-auth.d.ts +61 -0
  48. package/dist/vendor/environment-auth.js +455 -0
  49. package/dist/workflow-runtime.d.mts +2 -0
  50. package/dist/workflow-runtime.mjs +298 -0
  51. package/dist/workflows.d.ts +28 -0
  52. package/dist/workflows.js +90 -0
  53. package/docs/PROTOCOL.md +299 -0
  54. package/package.json +45 -0
@@ -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
+ }