prismatica 0.2.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/LICENSE +21 -0
- package/README.md +403 -0
- package/dist/agent-runner.js +656 -0
- package/dist/agent-runner.js.map +1 -0
- package/dist/assurance/mainpush.js +533 -0
- package/dist/assurance/mainpush.js.map +1 -0
- package/dist/assurance/outcome.js +165 -0
- package/dist/assurance/outcome.js.map +1 -0
- package/dist/assurance/passport.js +98 -0
- package/dist/assurance/passport.js.map +1 -0
- package/dist/assurance/proofinputs.js +425 -0
- package/dist/assurance/proofinputs.js.map +1 -0
- package/dist/atlas/diff.js +102 -0
- package/dist/atlas/diff.js.map +1 -0
- package/dist/atlas/evidence.js +31 -0
- package/dist/atlas/evidence.js.map +1 -0
- package/dist/atlas/hygiene.js +288 -0
- package/dist/atlas/hygiene.js.map +1 -0
- package/dist/atlas/impact.js +312 -0
- package/dist/atlas/impact.js.map +1 -0
- package/dist/atlas/labels.js +121 -0
- package/dist/atlas/labels.js.map +1 -0
- package/dist/atlas/next.js +327 -0
- package/dist/atlas/next.js.map +1 -0
- package/dist/atlas/packs.js +169 -0
- package/dist/atlas/packs.js.map +1 -0
- package/dist/atlas/presentation.js +349 -0
- package/dist/atlas/presentation.js.map +1 -0
- package/dist/atlas/render.js +269 -0
- package/dist/atlas/render.js.map +1 -0
- package/dist/atlas/store.js +389 -0
- package/dist/atlas/store.js.map +1 -0
- package/dist/board/html.js +1382 -0
- package/dist/board/html.js.map +1 -0
- package/dist/board/model.js +369 -0
- package/dist/board/model.js.map +1 -0
- package/dist/board/server.js +325 -0
- package/dist/board/server.js.map +1 -0
- package/dist/board/understand.js +128 -0
- package/dist/board/understand.js.map +1 -0
- package/dist/change.js +104 -0
- package/dist/change.js.map +1 -0
- package/dist/checkengine.js +220 -0
- package/dist/checkengine.js.map +1 -0
- package/dist/claudehook.js +189 -0
- package/dist/claudehook.js.map +1 -0
- package/dist/cli.js +1120 -0
- package/dist/cli.js.map +1 -0
- package/dist/clipboard.js +33 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/commands/abandon.js +329 -0
- package/dist/commands/abandon.js.map +1 -0
- package/dist/commands/accept.js +85 -0
- package/dist/commands/accept.js.map +1 -0
- package/dist/commands/amend.js +158 -0
- package/dist/commands/amend.js.map +1 -0
- package/dist/commands/check.js +128 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/close.js +274 -0
- package/dist/commands/close.js.map +1 -0
- package/dist/commands/context.js +46 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/delta.js +192 -0
- package/dist/commands/delta.js.map +1 -0
- package/dist/commands/discover.js +173 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/doctor.js +384 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/flow.js +929 -0
- package/dist/commands/flow.js.map +1 -0
- package/dist/commands/forget.js +33 -0
- package/dist/commands/forget.js.map +1 -0
- package/dist/commands/frame.js +231 -0
- package/dist/commands/frame.js.map +1 -0
- package/dist/commands/gate.js +48 -0
- package/dist/commands/gate.js.map +1 -0
- package/dist/commands/guide.js +17 -0
- package/dist/commands/guide.js.map +1 -0
- package/dist/commands/init.js +257 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/merge.js +188 -0
- package/dist/commands/merge.js.map +1 -0
- package/dist/commands/next.js +352 -0
- package/dist/commands/next.js.map +1 -0
- package/dist/commands/open.js +255 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/pack.js +165 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/propose.js +102 -0
- package/dist/commands/propose.js.map +1 -0
- package/dist/commands/ready.js +931 -0
- package/dist/commands/ready.js.map +1 -0
- package/dist/commands/review.js +434 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/rules.js +399 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/seal.js +52 -0
- package/dist/commands/seal.js.map +1 -0
- package/dist/commands/ship.js +333 -0
- package/dist/commands/ship.js.map +1 -0
- package/dist/commands/start.js +1164 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/stats.js +100 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/view.js +23 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/config.js +46 -0
- package/dist/config.js.map +1 -0
- package/dist/detect.js +495 -0
- package/dist/detect.js.map +1 -0
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -0
- package/dist/evidence.js +20 -0
- package/dist/evidence.js.map +1 -0
- package/dist/executor.js +256 -0
- package/dist/executor.js.map +1 -0
- package/dist/gate.js +109 -0
- package/dist/gate.js.map +1 -0
- package/dist/gh.js +236 -0
- package/dist/gh.js.map +1 -0
- package/dist/git.js +589 -0
- package/dist/git.js.map +1 -0
- package/dist/guide.js +2038 -0
- package/dist/guide.js.map +1 -0
- package/dist/ids.js +60 -0
- package/dist/ids.js.map +1 -0
- package/dist/keys.js +58 -0
- package/dist/keys.js.map +1 -0
- package/dist/ledger.js +197 -0
- package/dist/ledger.js.map +1 -0
- package/dist/paths.js +109 -0
- package/dist/paths.js.map +1 -0
- package/dist/planning/context.js +94 -0
- package/dist/planning/context.js.map +1 -0
- package/dist/planning/materialise.js +210 -0
- package/dist/planning/materialise.js.map +1 -0
- package/dist/planning/pack.js +290 -0
- package/dist/planning/pack.js.map +1 -0
- package/dist/planning/schema.js +296 -0
- package/dist/planning/schema.js.map +1 -0
- package/dist/planning/snapshot.js +308 -0
- package/dist/planning/snapshot.js.map +1 -0
- package/dist/planning/validate.js +417 -0
- package/dist/planning/validate.js.map +1 -0
- package/dist/prepush.js +192 -0
- package/dist/prepush.js.map +1 -0
- package/dist/records/store.js +268 -0
- package/dist/records/store.js.map +1 -0
- package/dist/records/types.js +836 -0
- package/dist/records/types.js.map +1 -0
- package/dist/registry.js +68 -0
- package/dist/registry.js.map +1 -0
- package/dist/render.js +275 -0
- package/dist/render.js.map +1 -0
- package/dist/runtime.js +47 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scope.js +62 -0
- package/dist/scope.js.map +1 -0
- package/dist/secrets.js +24 -0
- package/dist/secrets.js.map +1 -0
- package/dist/selfhost.js +199 -0
- package/dist/selfhost.js.map +1 -0
- package/dist/shellquote.js +5 -0
- package/dist/shellquote.js.map +1 -0
- package/dist/skills.js +398 -0
- package/dist/skills.js.map +1 -0
- package/dist/state.js +62 -0
- package/dist/state.js.map +1 -0
- package/dist/templates.js +264 -0
- package/dist/templates.js.map +1 -0
- package/dist/tier.js +48 -0
- package/dist/tier.js.map +1 -0
- package/dist/ui.js +94 -0
- package/dist/ui.js.map +1 -0
- package/dist/vitestreport.js +59 -0
- package/dist/vitestreport.js.map +1 -0
- package/dist/worktree.js +31 -0
- package/dist/worktree.js.map +1 -0
- package/node_modules/@inquirer/ansi/LICENSE +22 -0
- package/node_modules/@inquirer/ansi/README.md +89 -0
- package/node_modules/@inquirer/ansi/dist/index.d.ts +14 -0
- package/node_modules/@inquirer/ansi/dist/index.js +21 -0
- package/node_modules/@inquirer/ansi/package.json +78 -0
- package/node_modules/@inquirer/checkbox/LICENSE +22 -0
- package/node_modules/@inquirer/checkbox/README.md +195 -0
- package/node_modules/@inquirer/checkbox/dist/index.d.ts +56 -0
- package/node_modules/@inquirer/checkbox/dist/index.js +210 -0
- package/node_modules/@inquirer/checkbox/package.json +92 -0
- package/node_modules/@inquirer/confirm/LICENSE +22 -0
- package/node_modules/@inquirer/confirm/README.md +92 -0
- package/node_modules/@inquirer/confirm/dist/index.d.ts +10 -0
- package/node_modules/@inquirer/confirm/dist/index.js +48 -0
- package/node_modules/@inquirer/confirm/package.json +90 -0
- package/node_modules/@inquirer/core/LICENSE +22 -0
- package/node_modules/@inquirer/core/README.md +386 -0
- package/node_modules/@inquirer/core/dist/index.d.ts +13 -0
- package/node_modules/@inquirer/core/dist/index.js +12 -0
- package/node_modules/@inquirer/core/dist/lib/Separator.d.ts +10 -0
- package/node_modules/@inquirer/core/dist/lib/Separator.js +21 -0
- package/node_modules/@inquirer/core/dist/lib/create-prompt.d.ts +4 -0
- package/node_modules/@inquirer/core/dist/lib/create-prompt.js +165 -0
- package/node_modules/@inquirer/core/dist/lib/errors.d.ts +20 -0
- package/node_modules/@inquirer/core/dist/lib/errors.js +21 -0
- package/node_modules/@inquirer/core/dist/lib/hook-engine.d.ts +23 -0
- package/node_modules/@inquirer/core/dist/lib/hook-engine.js +111 -0
- package/node_modules/@inquirer/core/dist/lib/key.d.ts +15 -0
- package/node_modules/@inquirer/core/dist/lib/key.js +34 -0
- package/node_modules/@inquirer/core/dist/lib/make-theme.d.ts +3 -0
- package/node_modules/@inquirer/core/dist/lib/make-theme.js +32 -0
- package/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.d.ts +16 -0
- package/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js +121 -0
- package/node_modules/@inquirer/core/dist/lib/promise-polyfill.d.ts +7 -0
- package/node_modules/@inquirer/core/dist/lib/promise-polyfill.js +14 -0
- package/node_modules/@inquirer/core/dist/lib/screen-manager.d.ts +14 -0
- package/node_modules/@inquirer/core/dist/lib/screen-manager.js +84 -0
- package/node_modules/@inquirer/core/dist/lib/theme.d.ts +166 -0
- package/node_modules/@inquirer/core/dist/lib/theme.js +29 -0
- package/node_modules/@inquirer/core/dist/lib/use-effect.d.ts +2 -0
- package/node_modules/@inquirer/core/dist/lib/use-effect.js +11 -0
- package/node_modules/@inquirer/core/dist/lib/use-keypress.d.ts +3 -0
- package/node_modules/@inquirer/core/dist/lib/use-keypress.js +20 -0
- package/node_modules/@inquirer/core/dist/lib/use-memo.d.ts +1 -0
- package/node_modules/@inquirer/core/dist/lib/use-memo.js +14 -0
- package/node_modules/@inquirer/core/dist/lib/use-prefix.d.ts +5 -0
- package/node_modules/@inquirer/core/dist/lib/use-prefix.js +35 -0
- package/node_modules/@inquirer/core/dist/lib/use-ref.d.ts +6 -0
- package/node_modules/@inquirer/core/dist/lib/use-ref.js +4 -0
- package/node_modules/@inquirer/core/dist/lib/use-state.d.ts +4 -0
- package/node_modules/@inquirer/core/dist/lib/use-state.js +23 -0
- package/node_modules/@inquirer/core/dist/lib/utils.d.ts +13 -0
- package/node_modules/@inquirer/core/dist/lib/utils.js +25 -0
- package/node_modules/@inquirer/core/package.json +97 -0
- package/node_modules/@inquirer/editor/LICENSE +22 -0
- package/node_modules/@inquirer/editor/README.md +101 -0
- package/node_modules/@inquirer/editor/dist/index.d.ts +21 -0
- package/node_modules/@inquirer/editor/dist/index.js +73 -0
- package/node_modules/@inquirer/editor/package.json +91 -0
- package/node_modules/@inquirer/expand/LICENSE +22 -0
- package/node_modules/@inquirer/expand/README.md +141 -0
- package/node_modules/@inquirer/expand/dist/index.d.ts +24 -0
- package/node_modules/@inquirer/expand/dist/index.js +110 -0
- package/node_modules/@inquirer/expand/package.json +90 -0
- package/node_modules/@inquirer/external-editor/LICENSE +22 -0
- package/node_modules/@inquirer/external-editor/README.md +154 -0
- package/node_modules/@inquirer/external-editor/dist/errors/CreateFileError.d.ts +10 -0
- package/node_modules/@inquirer/external-editor/dist/errors/CreateFileError.js +13 -0
- package/node_modules/@inquirer/external-editor/dist/errors/LaunchEditorError.d.ts +10 -0
- package/node_modules/@inquirer/external-editor/dist/errors/LaunchEditorError.js +13 -0
- package/node_modules/@inquirer/external-editor/dist/errors/ReadFileError.d.ts +10 -0
- package/node_modules/@inquirer/external-editor/dist/errors/ReadFileError.js +13 -0
- package/node_modules/@inquirer/external-editor/dist/errors/RemoveFileError.d.ts +10 -0
- package/node_modules/@inquirer/external-editor/dist/errors/RemoveFileError.js +13 -0
- package/node_modules/@inquirer/external-editor/dist/errors.d.ts +20 -0
- package/node_modules/@inquirer/external-editor/dist/errors.js +32 -0
- package/node_modules/@inquirer/external-editor/dist/index.d.ts +35 -0
- package/node_modules/@inquirer/external-editor/dist/index.js +146 -0
- package/node_modules/@inquirer/external-editor/dist/parse-editor-command.d.ts +5 -0
- package/node_modules/@inquirer/external-editor/dist/parse-editor-command.js +28 -0
- package/node_modules/@inquirer/external-editor/package.json +97 -0
- package/node_modules/@inquirer/figures/LICENSE +22 -0
- package/node_modules/@inquirer/figures/dist/index.d.ts +275 -0
- package/node_modules/@inquirer/figures/dist/index.js +315 -0
- package/node_modules/@inquirer/figures/package.json +80 -0
- package/node_modules/@inquirer/input/LICENSE +22 -0
- package/node_modules/@inquirer/input/README.md +101 -0
- package/node_modules/@inquirer/input/dist/index.d.ts +20 -0
- package/node_modules/@inquirer/input/dist/index.js +99 -0
- package/node_modules/@inquirer/input/package.json +90 -0
- package/node_modules/@inquirer/number/LICENSE +22 -0
- package/node_modules/@inquirer/number/README.md +95 -0
- package/node_modules/@inquirer/number/dist/index.d.ts +13 -0
- package/node_modules/@inquirer/number/dist/index.js +95 -0
- package/node_modules/@inquirer/number/package.json +90 -0
- package/node_modules/@inquirer/password/LICENSE +22 -0
- package/node_modules/@inquirer/password/README.md +93 -0
- package/node_modules/@inquirer/password/dist/index.d.ts +15 -0
- package/node_modules/@inquirer/password/dist/index.js +60 -0
- package/node_modules/@inquirer/password/package.json +91 -0
- package/node_modules/@inquirer/prompts/LICENSE +22 -0
- package/node_modules/@inquirer/prompts/README.md +543 -0
- package/node_modules/@inquirer/prompts/dist/index.d.ts +10 -0
- package/node_modules/@inquirer/prompts/dist/index.js +10 -0
- package/node_modules/@inquirer/prompts/package.json +101 -0
- package/node_modules/@inquirer/rawlist/LICENSE +22 -0
- package/node_modules/@inquirer/rawlist/README.md +135 -0
- package/node_modules/@inquirer/rawlist/dist/index.d.ts +23 -0
- package/node_modules/@inquirer/rawlist/dist/index.js +145 -0
- package/node_modules/@inquirer/rawlist/package.json +90 -0
- package/node_modules/@inquirer/search/LICENSE +22 -0
- package/node_modules/@inquirer/search/README.md +213 -0
- package/node_modules/@inquirer/search/dist/index.d.ts +33 -0
- package/node_modules/@inquirer/search/dist/index.js +195 -0
- package/node_modules/@inquirer/search/package.json +91 -0
- package/node_modules/@inquirer/select/LICENSE +22 -0
- package/node_modules/@inquirer/select/README.md +188 -0
- package/node_modules/@inquirer/select/dist/index.d.ts +34 -0
- package/node_modules/@inquirer/select/dist/index.js +191 -0
- package/node_modules/@inquirer/select/package.json +92 -0
- package/node_modules/@inquirer/type/LICENSE +22 -0
- package/node_modules/@inquirer/type/dist/index.d.ts +2 -0
- package/node_modules/@inquirer/type/dist/index.js +2 -0
- package/node_modules/@inquirer/type/dist/inquirer.d.ts +35 -0
- package/node_modules/@inquirer/type/dist/inquirer.js +1 -0
- package/node_modules/@inquirer/type/dist/utils.d.ts +29 -0
- package/node_modules/@inquirer/type/dist/utils.js +2 -0
- package/node_modules/@inquirer/type/package.json +87 -0
- package/node_modules/@sec-ant/readable-stream/LICENSE +21 -0
- package/node_modules/@sec-ant/readable-stream/README.md +230 -0
- package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterablePrototype.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterator.d.ts +27 -0
- package/node_modules/@sec-ant/readable-stream/dist/core/fromAnyIterable.d.ts +6 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.js +5 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.js +5 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/index.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/index.js +8 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.js +3 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.js +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.js +4 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +89 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +34 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +6 -0
- package/node_modules/@sec-ant/readable-stream/dist/types/async-iterator.d.ts +11 -0
- package/node_modules/@sec-ant/readable-stream/package.json +96 -0
- package/node_modules/@sindresorhus/merge-streams/index.d.ts +44 -0
- package/node_modules/@sindresorhus/merge-streams/index.js +265 -0
- package/node_modules/@sindresorhus/merge-streams/license +9 -0
- package/node_modules/@sindresorhus/merge-streams/package.json +49 -0
- package/node_modules/@sindresorhus/merge-streams/readme.md +53 -0
- package/node_modules/argparse/LICENSE +21 -0
- package/node_modules/argparse/README.md +257 -0
- package/node_modules/argparse/index.js +3 -0
- package/node_modules/argparse/lib/action/append/constant.js +47 -0
- package/node_modules/argparse/lib/action/append.js +53 -0
- package/node_modules/argparse/lib/action/count.js +40 -0
- package/node_modules/argparse/lib/action/help.js +47 -0
- package/node_modules/argparse/lib/action/store/constant.js +43 -0
- package/node_modules/argparse/lib/action/store/false.js +27 -0
- package/node_modules/argparse/lib/action/store/true.js +26 -0
- package/node_modules/argparse/lib/action/store.js +50 -0
- package/node_modules/argparse/lib/action/subparsers.js +149 -0
- package/node_modules/argparse/lib/action/version.js +47 -0
- package/node_modules/argparse/lib/action.js +146 -0
- package/node_modules/argparse/lib/action_container.js +482 -0
- package/node_modules/argparse/lib/argparse.js +14 -0
- package/node_modules/argparse/lib/argument/error.js +50 -0
- package/node_modules/argparse/lib/argument/exclusive.js +54 -0
- package/node_modules/argparse/lib/argument/group.js +75 -0
- package/node_modules/argparse/lib/argument_parser.js +1161 -0
- package/node_modules/argparse/lib/const.js +21 -0
- package/node_modules/argparse/lib/help/added_formatters.js +87 -0
- package/node_modules/argparse/lib/help/formatter.js +795 -0
- package/node_modules/argparse/lib/namespace.js +76 -0
- package/node_modules/argparse/lib/utils.js +57 -0
- package/node_modules/argparse/package.json +34 -0
- package/node_modules/chardet/LICENSE +19 -0
- package/node_modules/chardet/README.md +135 -0
- package/node_modules/chardet/lib/encoding/ascii.d.ts +6 -0
- package/node_modules/chardet/lib/encoding/ascii.js +23 -0
- package/node_modules/chardet/lib/encoding/ascii.js.map +1 -0
- package/node_modules/chardet/lib/encoding/index.d.ts +14 -0
- package/node_modules/chardet/lib/encoding/index.js +3 -0
- package/node_modules/chardet/lib/encoding/index.js.map +1 -0
- package/node_modules/chardet/lib/encoding/iso2022.d.ts +23 -0
- package/node_modules/chardet/lib/encoding/iso2022.js +114 -0
- package/node_modules/chardet/lib/encoding/iso2022.js.map +1 -0
- package/node_modules/chardet/lib/encoding/mbcs.d.ts +50 -0
- package/node_modules/chardet/lib/encoding/mbcs.js +347 -0
- package/node_modules/chardet/lib/encoding/mbcs.js.map +1 -0
- package/node_modules/chardet/lib/encoding/sbcs.d.ts +94 -0
- package/node_modules/chardet/lib/encoding/sbcs.js +935 -0
- package/node_modules/chardet/lib/encoding/sbcs.js.map +1 -0
- package/node_modules/chardet/lib/encoding/unicode.d.ts +27 -0
- package/node_modules/chardet/lib/encoding/unicode.js +109 -0
- package/node_modules/chardet/lib/encoding/unicode.js.map +1 -0
- package/node_modules/chardet/lib/encoding/utf8.d.ts +6 -0
- package/node_modules/chardet/lib/encoding/utf8.js +72 -0
- package/node_modules/chardet/lib/encoding/utf8.js.map +1 -0
- package/node_modules/chardet/lib/fs/browser.d.ts +2 -0
- package/node_modules/chardet/lib/fs/browser.js +6 -0
- package/node_modules/chardet/lib/fs/browser.js.map +1 -0
- package/node_modules/chardet/lib/fs/node.d.ts +2 -0
- package/node_modules/chardet/lib/fs/node.js +11 -0
- package/node_modules/chardet/lib/fs/node.js.map +1 -0
- package/node_modules/chardet/lib/index.d.ts +20 -0
- package/node_modules/chardet/lib/index.js +177 -0
- package/node_modules/chardet/lib/index.js.map +1 -0
- package/node_modules/chardet/lib/match.d.ts +9 -0
- package/node_modules/chardet/lib/match.js +8 -0
- package/node_modules/chardet/lib/match.js.map +1 -0
- package/node_modules/chardet/lib/utils.d.ts +1 -0
- package/node_modules/chardet/lib/utils.js +10 -0
- package/node_modules/chardet/lib/utils.js.map +1 -0
- package/node_modules/chardet/package.json +100 -0
- package/node_modules/cli-width/LICENSE +13 -0
- package/node_modules/cli-width/README.md +71 -0
- package/node_modules/cli-width/index.d.ts +13 -0
- package/node_modules/cli-width/index.js +49 -0
- package/node_modules/cli-width/package.json +40 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1172 -0
- package/node_modules/commander/index.js +21 -0
- package/node_modules/commander/lib/argument.js +147 -0
- package/node_modules/commander/lib/command.js +2790 -0
- package/node_modules/commander/lib/error.js +36 -0
- package/node_modules/commander/lib/help.js +731 -0
- package/node_modules/commander/lib/option.js +377 -0
- package/node_modules/commander/lib/suggestSimilar.js +99 -0
- package/node_modules/commander/package-support.json +19 -0
- package/node_modules/commander/package.json +64 -0
- package/node_modules/commander/typings/index.d.ts +1113 -0
- package/node_modules/cross-spawn/LICENSE +21 -0
- package/node_modules/cross-spawn/README.md +89 -0
- package/node_modules/cross-spawn/index.js +39 -0
- package/node_modules/cross-spawn/lib/enoent.js +59 -0
- package/node_modules/cross-spawn/lib/parse.js +91 -0
- package/node_modules/cross-spawn/lib/util/escape.js +47 -0
- package/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
- package/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
- package/node_modules/cross-spawn/package.json +73 -0
- package/node_modules/esprima/LICENSE.BSD +21 -0
- package/node_modules/esprima/README.md +46 -0
- package/node_modules/esprima/bin/esparse.js +139 -0
- package/node_modules/esprima/bin/esvalidate.js +236 -0
- package/node_modules/esprima/dist/esprima.js +6709 -0
- package/node_modules/esprima/package.json +112 -0
- package/node_modules/execa/index.d.ts +27 -0
- package/node_modules/execa/index.js +28 -0
- package/node_modules/execa/lib/arguments/command.js +20 -0
- package/node_modules/execa/lib/arguments/cwd.js +39 -0
- package/node_modules/execa/lib/arguments/encoding-option.js +50 -0
- package/node_modules/execa/lib/arguments/escape.js +88 -0
- package/node_modules/execa/lib/arguments/fd-options.js +108 -0
- package/node_modules/execa/lib/arguments/file-url.js +25 -0
- package/node_modules/execa/lib/arguments/options.js +96 -0
- package/node_modules/execa/lib/arguments/shell.js +11 -0
- package/node_modules/execa/lib/arguments/specific.js +111 -0
- package/node_modules/execa/lib/convert/add.js +15 -0
- package/node_modules/execa/lib/convert/concurrent.js +33 -0
- package/node_modules/execa/lib/convert/duplex.js +69 -0
- package/node_modules/execa/lib/convert/iterable.js +34 -0
- package/node_modules/execa/lib/convert/readable.js +113 -0
- package/node_modules/execa/lib/convert/shared.js +46 -0
- package/node_modules/execa/lib/convert/writable.js +90 -0
- package/node_modules/execa/lib/io/contents.js +116 -0
- package/node_modules/execa/lib/io/input-sync.js +44 -0
- package/node_modules/execa/lib/io/iterate.js +110 -0
- package/node_modules/execa/lib/io/max-buffer.js +89 -0
- package/node_modules/execa/lib/io/output-async.js +80 -0
- package/node_modules/execa/lib/io/output-sync.js +135 -0
- package/node_modules/execa/lib/io/pipeline.js +48 -0
- package/node_modules/execa/lib/io/strip-newline.js +12 -0
- package/node_modules/execa/lib/ipc/array.js +4 -0
- package/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
- package/node_modules/execa/lib/ipc/forward.js +56 -0
- package/node_modules/execa/lib/ipc/get-each.js +89 -0
- package/node_modules/execa/lib/ipc/get-one.js +69 -0
- package/node_modules/execa/lib/ipc/graceful.js +72 -0
- package/node_modules/execa/lib/ipc/incoming.js +79 -0
- package/node_modules/execa/lib/ipc/ipc-input.js +44 -0
- package/node_modules/execa/lib/ipc/methods.js +49 -0
- package/node_modules/execa/lib/ipc/outgoing.js +47 -0
- package/node_modules/execa/lib/ipc/reference.js +44 -0
- package/node_modules/execa/lib/ipc/send.js +91 -0
- package/node_modules/execa/lib/ipc/strict.js +113 -0
- package/node_modules/execa/lib/ipc/validation.js +111 -0
- package/node_modules/execa/lib/methods/bind.js +23 -0
- package/node_modules/execa/lib/methods/command.js +43 -0
- package/node_modules/execa/lib/methods/create.js +65 -0
- package/node_modules/execa/lib/methods/main-async.js +194 -0
- package/node_modules/execa/lib/methods/main-sync.js +163 -0
- package/node_modules/execa/lib/methods/node.js +51 -0
- package/node_modules/execa/lib/methods/parameters.js +31 -0
- package/node_modules/execa/lib/methods/promise.js +15 -0
- package/node_modules/execa/lib/methods/script.js +22 -0
- package/node_modules/execa/lib/methods/template.js +153 -0
- package/node_modules/execa/lib/pipe/abort.js +20 -0
- package/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
- package/node_modules/execa/lib/pipe/sequence.js +24 -0
- package/node_modules/execa/lib/pipe/setup.js +72 -0
- package/node_modules/execa/lib/pipe/streaming.js +51 -0
- package/node_modules/execa/lib/pipe/throw.js +58 -0
- package/node_modules/execa/lib/resolve/all-async.js +46 -0
- package/node_modules/execa/lib/resolve/all-sync.js +33 -0
- package/node_modules/execa/lib/resolve/exit-async.js +54 -0
- package/node_modules/execa/lib/resolve/exit-sync.js +25 -0
- package/node_modules/execa/lib/resolve/stdio.js +47 -0
- package/node_modules/execa/lib/resolve/wait-stream.js +96 -0
- package/node_modules/execa/lib/resolve/wait-subprocess.js +146 -0
- package/node_modules/execa/lib/return/duration.js +8 -0
- package/node_modules/execa/lib/return/early-error.js +60 -0
- package/node_modules/execa/lib/return/final-error.js +40 -0
- package/node_modules/execa/lib/return/message.js +157 -0
- package/node_modules/execa/lib/return/reject.js +13 -0
- package/node_modules/execa/lib/return/result.js +186 -0
- package/node_modules/execa/lib/stdio/direction.js +76 -0
- package/node_modules/execa/lib/stdio/duplicate.js +116 -0
- package/node_modules/execa/lib/stdio/handle-async.js +52 -0
- package/node_modules/execa/lib/stdio/handle-sync.js +57 -0
- package/node_modules/execa/lib/stdio/handle.js +214 -0
- package/node_modules/execa/lib/stdio/input-option.js +50 -0
- package/node_modules/execa/lib/stdio/native.js +106 -0
- package/node_modules/execa/lib/stdio/stdio-option.js +60 -0
- package/node_modules/execa/lib/stdio/type.js +173 -0
- package/node_modules/execa/lib/terminate/cancel.js +20 -0
- package/node_modules/execa/lib/terminate/cleanup.js +16 -0
- package/node_modules/execa/lib/terminate/graceful.js +71 -0
- package/node_modules/execa/lib/terminate/kill.js +93 -0
- package/node_modules/execa/lib/terminate/signal.js +70 -0
- package/node_modules/execa/lib/terminate/timeout.js +21 -0
- package/node_modules/execa/lib/transform/encoding-transform.js +51 -0
- package/node_modules/execa/lib/transform/generator.js +107 -0
- package/node_modules/execa/lib/transform/normalize.js +111 -0
- package/node_modules/execa/lib/transform/object-mode.js +41 -0
- package/node_modules/execa/lib/transform/run-async.js +60 -0
- package/node_modules/execa/lib/transform/run-sync.js +50 -0
- package/node_modules/execa/lib/transform/split.js +110 -0
- package/node_modules/execa/lib/transform/validate.js +43 -0
- package/node_modules/execa/lib/utils/abort-signal.js +8 -0
- package/node_modules/execa/lib/utils/deferred.js +7 -0
- package/node_modules/execa/lib/utils/max-listeners.js +14 -0
- package/node_modules/execa/lib/utils/standard-stream.js +6 -0
- package/node_modules/execa/lib/utils/uint-array.js +69 -0
- package/node_modules/execa/lib/verbose/complete.js +24 -0
- package/node_modules/execa/lib/verbose/custom.js +26 -0
- package/node_modules/execa/lib/verbose/default.js +54 -0
- package/node_modules/execa/lib/verbose/error.js +13 -0
- package/node_modules/execa/lib/verbose/info.js +39 -0
- package/node_modules/execa/lib/verbose/ipc.js +15 -0
- package/node_modules/execa/lib/verbose/log.js +54 -0
- package/node_modules/execa/lib/verbose/output.js +60 -0
- package/node_modules/execa/lib/verbose/start.js +15 -0
- package/node_modules/execa/lib/verbose/values.js +33 -0
- package/node_modules/execa/license +9 -0
- package/node_modules/execa/package.json +105 -0
- package/node_modules/execa/readme.md +461 -0
- package/node_modules/execa/types/arguments/encoding-option.d.ts +19 -0
- package/node_modules/execa/types/arguments/fd-options.d.ts +8 -0
- package/node_modules/execa/types/arguments/options.d.ts +400 -0
- package/node_modules/execa/types/arguments/specific.d.ts +52 -0
- package/node_modules/execa/types/convert.d.ts +58 -0
- package/node_modules/execa/types/ipc.d.ts +156 -0
- package/node_modules/execa/types/methods/command.d.ts +114 -0
- package/node_modules/execa/types/methods/main-async.d.ts +379 -0
- package/node_modules/execa/types/methods/main-sync.d.ts +59 -0
- package/node_modules/execa/types/methods/node.d.ts +62 -0
- package/node_modules/execa/types/methods/script.d.ts +115 -0
- package/node_modules/execa/types/methods/template.d.ts +18 -0
- package/node_modules/execa/types/pipe.d.ts +58 -0
- package/node_modules/execa/types/return/final-error.d.ts +51 -0
- package/node_modules/execa/types/return/ignore.d.ts +26 -0
- package/node_modules/execa/types/return/result-all.d.ts +30 -0
- package/node_modules/execa/types/return/result-ipc.d.ts +27 -0
- package/node_modules/execa/types/return/result-stdio.d.ts +17 -0
- package/node_modules/execa/types/return/result-stdout.d.ts +50 -0
- package/node_modules/execa/types/return/result.d.ts +203 -0
- package/node_modules/execa/types/stdio/array.d.ts +16 -0
- package/node_modules/execa/types/stdio/direction.d.ts +12 -0
- package/node_modules/execa/types/stdio/option.d.ts +40 -0
- package/node_modules/execa/types/stdio/type.d.ts +170 -0
- package/node_modules/execa/types/subprocess/all.d.ts +17 -0
- package/node_modules/execa/types/subprocess/stdio.d.ts +18 -0
- package/node_modules/execa/types/subprocess/stdout.d.ts +22 -0
- package/node_modules/execa/types/subprocess/subprocess.d.ts +117 -0
- package/node_modules/execa/types/transform/normalize.d.ts +57 -0
- package/node_modules/execa/types/transform/object-mode.d.ts +21 -0
- package/node_modules/execa/types/utils.d.ts +13 -0
- package/node_modules/execa/types/verbose.d.ts +98 -0
- package/node_modules/extend-shallow/LICENSE +21 -0
- package/node_modules/extend-shallow/README.md +61 -0
- package/node_modules/extend-shallow/index.js +33 -0
- package/node_modules/extend-shallow/package.json +56 -0
- package/node_modules/fast-string-truncated-width/dist/index.d.ts +4 -0
- package/node_modules/fast-string-truncated-width/dist/index.js +111 -0
- package/node_modules/fast-string-truncated-width/dist/types.d.ts +19 -0
- package/node_modules/fast-string-truncated-width/dist/types.js +2 -0
- package/node_modules/fast-string-truncated-width/dist/utils.d.ts +4 -0
- package/node_modules/fast-string-truncated-width/dist/utils.js +20 -0
- package/node_modules/fast-string-truncated-width/license +21 -0
- package/node_modules/fast-string-truncated-width/package.json +35 -0
- package/node_modules/fast-string-truncated-width/readme.md +59 -0
- package/node_modules/fast-string-width/dist/index.d.ts +4 -0
- package/node_modules/fast-string-width/dist/index.js +14 -0
- package/node_modules/fast-string-width/license +21 -0
- package/node_modules/fast-string-width/package.json +34 -0
- package/node_modules/fast-string-width/readme.md +42 -0
- package/node_modules/fast-wrap-ansi/LICENSE +23 -0
- package/node_modules/fast-wrap-ansi/README.md +26 -0
- package/node_modules/fast-wrap-ansi/lib/main.d.ts +6 -0
- package/node_modules/fast-wrap-ansi/lib/main.js +218 -0
- package/node_modules/fast-wrap-ansi/package.json +51 -0
- package/node_modules/figures/index.d.ts +279 -0
- package/node_modules/figures/index.js +292 -0
- package/node_modules/figures/license +9 -0
- package/node_modules/figures/package.json +49 -0
- package/node_modules/figures/readme.md +337 -0
- package/node_modules/get-stream/license +9 -0
- package/node_modules/get-stream/package.json +60 -0
- package/node_modules/get-stream/readme.md +303 -0
- package/node_modules/get-stream/source/array-buffer.js +84 -0
- package/node_modules/get-stream/source/array.js +32 -0
- package/node_modules/get-stream/source/buffer.js +19 -0
- package/node_modules/get-stream/source/contents.js +121 -0
- package/node_modules/get-stream/source/exports.js +5 -0
- package/node_modules/get-stream/source/index.d.ts +121 -0
- package/node_modules/get-stream/source/index.js +13 -0
- package/node_modules/get-stream/source/stream.js +65 -0
- package/node_modules/get-stream/source/string.js +41 -0
- package/node_modules/get-stream/source/utils.js +11 -0
- package/node_modules/gray-matter/LICENSE +21 -0
- package/node_modules/gray-matter/README.md +565 -0
- package/node_modules/gray-matter/gray-matter.d.ts +114 -0
- package/node_modules/gray-matter/index.js +228 -0
- package/node_modules/gray-matter/lib/defaults.js +18 -0
- package/node_modules/gray-matter/lib/engine.js +30 -0
- package/node_modules/gray-matter/lib/engines.js +54 -0
- package/node_modules/gray-matter/lib/excerpt.js +32 -0
- package/node_modules/gray-matter/lib/parse.js +13 -0
- package/node_modules/gray-matter/lib/stringify.js +56 -0
- package/node_modules/gray-matter/lib/to-file.js +43 -0
- package/node_modules/gray-matter/lib/utils.js +66 -0
- package/node_modules/gray-matter/package.json +127 -0
- package/node_modules/human-signals/LICENSE +201 -0
- package/node_modules/human-signals/README.md +171 -0
- package/node_modules/human-signals/build/src/core.js +273 -0
- package/node_modules/human-signals/build/src/main.d.ts +206 -0
- package/node_modules/human-signals/build/src/main.js +70 -0
- package/node_modules/human-signals/build/src/realtime.js +16 -0
- package/node_modules/human-signals/build/src/signals.js +34 -0
- package/node_modules/human-signals/package.json +66 -0
- package/node_modules/iconv-lite/LICENSE +21 -0
- package/node_modules/iconv-lite/README.md +138 -0
- package/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
- package/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
- package/node_modules/iconv-lite/encodings/index.js +23 -0
- package/node_modules/iconv-lite/encodings/internal.js +218 -0
- package/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
- package/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- package/node_modules/iconv-lite/encodings/sbcs-data.js +180 -0
- package/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- package/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- package/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- package/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- package/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- package/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- package/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
- package/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- package/node_modules/iconv-lite/encodings/utf16.js +187 -0
- package/node_modules/iconv-lite/encodings/utf32.js +314 -0
- package/node_modules/iconv-lite/encodings/utf7.js +283 -0
- package/node_modules/iconv-lite/lib/bom-handling.js +48 -0
- package/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
- package/node_modules/iconv-lite/lib/index.d.ts +129 -0
- package/node_modules/iconv-lite/lib/index.js +182 -0
- package/node_modules/iconv-lite/lib/streams.js +105 -0
- package/node_modules/iconv-lite/package.json +70 -0
- package/node_modules/iconv-lite/types/encodings.d.ts +425 -0
- package/node_modules/is-extendable/LICENSE +21 -0
- package/node_modules/is-extendable/README.md +72 -0
- package/node_modules/is-extendable/index.js +13 -0
- package/node_modules/is-extendable/package.json +51 -0
- package/node_modules/is-plain-obj/index.d.ts +35 -0
- package/node_modules/is-plain-obj/index.js +8 -0
- package/node_modules/is-plain-obj/license +9 -0
- package/node_modules/is-plain-obj/package.json +41 -0
- package/node_modules/is-plain-obj/readme.md +58 -0
- package/node_modules/is-stream/index.d.ts +90 -0
- package/node_modules/is-stream/index.js +37 -0
- package/node_modules/is-stream/license +9 -0
- package/node_modules/is-stream/package.json +48 -0
- package/node_modules/is-stream/readme.md +57 -0
- package/node_modules/is-unicode-supported/index.d.ts +12 -0
- package/node_modules/is-unicode-supported/index.js +21 -0
- package/node_modules/is-unicode-supported/license +9 -0
- package/node_modules/is-unicode-supported/package.json +47 -0
- package/node_modules/is-unicode-supported/readme.md +35 -0
- package/node_modules/isexe/.npmignore +2 -0
- package/node_modules/isexe/LICENSE +15 -0
- package/node_modules/isexe/README.md +51 -0
- package/node_modules/isexe/index.js +57 -0
- package/node_modules/isexe/mode.js +41 -0
- package/node_modules/isexe/package.json +31 -0
- package/node_modules/isexe/test/basic.js +221 -0
- package/node_modules/isexe/windows.js +42 -0
- package/node_modules/js-yaml/LICENSE +21 -0
- package/node_modules/js-yaml/README.md +302 -0
- package/node_modules/js-yaml/bin/js-yaml.js +132 -0
- package/node_modules/js-yaml/dist/js-yaml.js +4011 -0
- package/node_modules/js-yaml/dist/js-yaml.min.js +1 -0
- package/node_modules/js-yaml/index.js +7 -0
- package/node_modules/js-yaml/lib/js-yaml/common.js +59 -0
- package/node_modules/js-yaml/lib/js-yaml/dumper.js +850 -0
- package/node_modules/js-yaml/lib/js-yaml/exception.js +43 -0
- package/node_modules/js-yaml/lib/js-yaml/loader.js +1666 -0
- package/node_modules/js-yaml/lib/js-yaml/mark.js +76 -0
- package/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
- package/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
- package/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
- package/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
- package/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
- package/node_modules/js-yaml/lib/js-yaml/schema.js +108 -0
- package/node_modules/js-yaml/lib/js-yaml/type/binary.js +138 -0
- package/node_modules/js-yaml/lib/js-yaml/type/bool.js +35 -0
- package/node_modules/js-yaml/lib/js-yaml/type/float.js +116 -0
- package/node_modules/js-yaml/lib/js-yaml/type/int.js +173 -0
- package/node_modules/js-yaml/lib/js-yaml/type/js/function.js +93 -0
- package/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +60 -0
- package/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +28 -0
- package/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
- package/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
- package/node_modules/js-yaml/lib/js-yaml/type/null.js +34 -0
- package/node_modules/js-yaml/lib/js-yaml/type/omap.js +44 -0
- package/node_modules/js-yaml/lib/js-yaml/type/pairs.js +53 -0
- package/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
- package/node_modules/js-yaml/lib/js-yaml/type/set.js +29 -0
- package/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
- package/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +88 -0
- package/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
- package/node_modules/js-yaml/lib/js-yaml.js +39 -0
- package/node_modules/js-yaml/package.json +52 -0
- package/node_modules/kind-of/LICENSE +21 -0
- package/node_modules/kind-of/README.md +367 -0
- package/node_modules/kind-of/index.js +129 -0
- package/node_modules/kind-of/package.json +88 -0
- package/node_modules/mute-stream/LICENSE +15 -0
- package/node_modules/mute-stream/README.md +68 -0
- package/node_modules/mute-stream/lib/index.js +142 -0
- package/node_modules/mute-stream/package.json +54 -0
- package/node_modules/npm-run-path/index.d.ts +90 -0
- package/node_modules/npm-run-path/index.js +55 -0
- package/node_modules/npm-run-path/license +9 -0
- package/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
- package/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
- package/node_modules/npm-run-path/node_modules/path-key/license +9 -0
- package/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
- package/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
- package/node_modules/npm-run-path/package.json +52 -0
- package/node_modules/npm-run-path/readme.md +104 -0
- package/node_modules/parse-ms/index.d.ts +30 -0
- package/node_modules/parse-ms/index.js +45 -0
- package/node_modules/parse-ms/license +9 -0
- package/node_modules/parse-ms/package.json +47 -0
- package/node_modules/parse-ms/readme.md +46 -0
- package/node_modules/path-key/index.d.ts +40 -0
- package/node_modules/path-key/index.js +16 -0
- package/node_modules/path-key/license +9 -0
- package/node_modules/path-key/package.json +39 -0
- package/node_modules/path-key/readme.md +61 -0
- package/node_modules/picomatch/LICENSE +21 -0
- package/node_modules/picomatch/README.md +743 -0
- package/node_modules/picomatch/index.js +17 -0
- package/node_modules/picomatch/lib/constants.js +184 -0
- package/node_modules/picomatch/lib/parse.js +1416 -0
- package/node_modules/picomatch/lib/picomatch.js +361 -0
- package/node_modules/picomatch/lib/scan.js +391 -0
- package/node_modules/picomatch/lib/utils.js +72 -0
- package/node_modules/picomatch/package.json +83 -0
- package/node_modules/picomatch/posix.js +3 -0
- package/node_modules/pretty-ms/index.d.ts +157 -0
- package/node_modules/pretty-ms/index.js +149 -0
- package/node_modules/pretty-ms/license +9 -0
- package/node_modules/pretty-ms/package.json +55 -0
- package/node_modules/pretty-ms/readme.md +179 -0
- package/node_modules/safer-buffer/LICENSE +21 -0
- package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- package/node_modules/safer-buffer/Readme.md +156 -0
- package/node_modules/safer-buffer/dangerous.js +58 -0
- package/node_modules/safer-buffer/package.json +34 -0
- package/node_modules/safer-buffer/safer.js +77 -0
- package/node_modules/safer-buffer/tests.js +406 -0
- package/node_modules/section-matter/LICENSE +21 -0
- package/node_modules/section-matter/README.md +236 -0
- package/node_modules/section-matter/index.js +136 -0
- package/node_modules/section-matter/package.json +55 -0
- package/node_modules/shebang-command/index.js +19 -0
- package/node_modules/shebang-command/license +9 -0
- package/node_modules/shebang-command/package.json +34 -0
- package/node_modules/shebang-command/readme.md +34 -0
- package/node_modules/shebang-regex/index.d.ts +22 -0
- package/node_modules/shebang-regex/index.js +2 -0
- package/node_modules/shebang-regex/license +9 -0
- package/node_modules/shebang-regex/package.json +35 -0
- package/node_modules/shebang-regex/readme.md +33 -0
- package/node_modules/signal-exit/LICENSE.txt +16 -0
- package/node_modules/signal-exit/README.md +74 -0
- package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
- package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
- package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
- package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
- package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/index.js +279 -0
- package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
- package/node_modules/signal-exit/dist/cjs/package.json +3 -0
- package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
- package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
- package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
- package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
- package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
- package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/index.js +275 -0
- package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/package.json +3 -0
- package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
- package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
- package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
- package/node_modules/signal-exit/package.json +106 -0
- package/node_modules/sprintf-js/.npmignore +1 -0
- package/node_modules/sprintf-js/LICENSE +24 -0
- package/node_modules/sprintf-js/README.md +88 -0
- package/node_modules/sprintf-js/bower.json +14 -0
- package/node_modules/sprintf-js/demo/angular.html +20 -0
- package/node_modules/sprintf-js/dist/angular-sprintf.min.js +4 -0
- package/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +1 -0
- package/node_modules/sprintf-js/dist/angular-sprintf.min.map +1 -0
- package/node_modules/sprintf-js/dist/sprintf.min.js +4 -0
- package/node_modules/sprintf-js/dist/sprintf.min.js.map +1 -0
- package/node_modules/sprintf-js/dist/sprintf.min.map +1 -0
- package/node_modules/sprintf-js/gruntfile.js +36 -0
- package/node_modules/sprintf-js/package.json +22 -0
- package/node_modules/sprintf-js/src/angular-sprintf.js +18 -0
- package/node_modules/sprintf-js/src/sprintf.js +208 -0
- package/node_modules/sprintf-js/test/test.js +82 -0
- package/node_modules/strip-bom-string/LICENSE +21 -0
- package/node_modules/strip-bom-string/README.md +66 -0
- package/node_modules/strip-bom-string/index.js +15 -0
- package/node_modules/strip-bom-string/package.json +60 -0
- package/node_modules/strip-final-newline/index.d.ts +18 -0
- package/node_modules/strip-final-newline/index.js +26 -0
- package/node_modules/strip-final-newline/license +9 -0
- package/node_modules/strip-final-newline/package.json +49 -0
- package/node_modules/strip-final-newline/readme.md +34 -0
- package/node_modules/unicorn-magic/default.d.ts +13 -0
- package/node_modules/unicorn-magic/default.js +14 -0
- package/node_modules/unicorn-magic/license +9 -0
- package/node_modules/unicorn-magic/node.d.ts +125 -0
- package/node_modules/unicorn-magic/node.js +49 -0
- package/node_modules/unicorn-magic/package.json +62 -0
- package/node_modules/unicorn-magic/readme.md +25 -0
- package/node_modules/which/LICENSE +15 -0
- package/node_modules/which/README.md +54 -0
- package/node_modules/which/bin/node-which +52 -0
- package/node_modules/which/package.json +43 -0
- package/node_modules/which/which.js +125 -0
- package/node_modules/yaml/LICENSE +13 -0
- package/node_modules/yaml/README.md +172 -0
- package/node_modules/yaml/bin.mjs +11 -0
- package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
- package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/node_modules/yaml/browser/dist/errors.js +57 -0
- package/node_modules/yaml/browser/dist/index.js +17 -0
- package/node_modules/yaml/browser/dist/log.js +11 -0
- package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
- package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
- package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
- package/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/node_modules/yaml/browser/dist/util.js +11 -0
- package/node_modules/yaml/browser/dist/visit.js +233 -0
- package/node_modules/yaml/browser/index.js +5 -0
- package/node_modules/yaml/browser/package.json +3 -0
- package/node_modules/yaml/dist/cli.d.ts +8 -0
- package/node_modules/yaml/dist/cli.mjs +201 -0
- package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/node_modules/yaml/dist/compose/composer.js +224 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
- package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/node_modules/yaml/dist/doc/Document.js +337 -0
- package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/node_modules/yaml/dist/doc/directives.js +178 -0
- package/node_modules/yaml/dist/errors.d.ts +21 -0
- package/node_modules/yaml/dist/errors.js +62 -0
- package/node_modules/yaml/dist/index.d.ts +25 -0
- package/node_modules/yaml/dist/index.js +50 -0
- package/node_modules/yaml/dist/log.d.ts +3 -0
- package/node_modules/yaml/dist/log.js +19 -0
- package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/Alias.js +118 -0
- package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
- package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/node_modules/yaml/dist/options.d.ts +350 -0
- package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/node_modules/yaml/dist/parse/cst.js +112 -0
- package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/node_modules/yaml/dist/parse/lexer.js +723 -0
- package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/node_modules/yaml/dist/parse/parser.js +980 -0
- package/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/node_modules/yaml/dist/public-api.js +107 -0
- package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/node_modules/yaml/dist/schema/tags.js +99 -0
- package/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/node_modules/yaml/dist/test-events.js +134 -0
- package/node_modules/yaml/dist/util.d.ts +16 -0
- package/node_modules/yaml/dist/util.js +28 -0
- package/node_modules/yaml/dist/visit.d.ts +102 -0
- package/node_modules/yaml/dist/visit.js +236 -0
- package/node_modules/yaml/package.json +97 -0
- package/node_modules/yaml/util.js +2 -0
- package/node_modules/yoctocolors/base.d.ts +47 -0
- package/node_modules/yoctocolors/base.js +94 -0
- package/node_modules/yoctocolors/index.d.ts +2 -0
- package/node_modules/yoctocolors/index.js +2 -0
- package/node_modules/yoctocolors/license +9 -0
- package/node_modules/yoctocolors/package.json +69 -0
- package/node_modules/yoctocolors/readme.md +138 -0
- package/node_modules/zod/LICENSE +21 -0
- package/node_modules/zod/README.md +191 -0
- package/node_modules/zod/index.cjs +33 -0
- package/node_modules/zod/index.d.cts +4 -0
- package/node_modules/zod/index.d.ts +4 -0
- package/node_modules/zod/index.js +4 -0
- package/node_modules/zod/locales/index.cjs +17 -0
- package/node_modules/zod/locales/index.d.cts +1 -0
- package/node_modules/zod/locales/index.d.ts +1 -0
- package/node_modules/zod/locales/index.js +1 -0
- package/node_modules/zod/locales/package.json +7 -0
- package/node_modules/zod/mini/index.cjs +32 -0
- package/node_modules/zod/mini/index.d.cts +3 -0
- package/node_modules/zod/mini/index.d.ts +3 -0
- package/node_modules/zod/mini/index.js +3 -0
- package/node_modules/zod/mini/package.json +7 -0
- package/node_modules/zod/package.json +135 -0
- package/node_modules/zod/src/index.ts +4 -0
- package/node_modules/zod/src/locales/index.ts +1 -0
- package/node_modules/zod/src/mini/index.ts +3 -0
- package/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
- package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
- package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
- package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/zod/src/v3/types.ts +5138 -0
- package/node_modules/zod/src/v4/classic/checks.ts +32 -0
- package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/zod/src/v4/classic/compat.ts +70 -0
- package/node_modules/zod/src/v4/classic/errors.ts +82 -0
- package/node_modules/zod/src/v4/classic/external.ts +52 -0
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +659 -0
- package/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/zod/src/v4/classic/parse.ts +82 -0
- package/node_modules/zod/src/v4/classic/schemas.ts +2672 -0
- package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +216 -0
- package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +326 -0
- package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
- package/node_modules/zod/src/v4/classic/tests/codec.test.ts +703 -0
- package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
- package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +409 -0
- package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
- package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +197 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +694 -0
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +807 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
- package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +895 -0
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
- package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +39 -0
- package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
- package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +46 -0
- package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
- package/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +29 -0
- package/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +24 -0
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
- package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
- package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +325 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +717 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +333 -0
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +450 -0
- package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
- package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +351 -0
- package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +717 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +631 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +633 -0
- package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
- package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +1224 -0
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +3125 -0
- package/node_modules/zod/src/v4/classic/tests/transform.test.ts +378 -0
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +496 -0
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +273 -0
- package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/zod/src/v4/core/api.ts +1823 -0
- package/node_modules/zod/src/v4/core/checks.ts +1293 -0
- package/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/zod/src/v4/core/core.ts +153 -0
- package/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/zod/src/v4/core/errors.ts +455 -0
- package/node_modules/zod/src/v4/core/index.ts +16 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +666 -0
- package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
- package/node_modules/zod/src/v4/core/parse.ts +195 -0
- package/node_modules/zod/src/v4/core/regexes.ts +190 -0
- package/node_modules/zod/src/v4/core/registries.ts +105 -0
- package/node_modules/zod/src/v4/core/schemas.ts +4730 -0
- package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
- package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
- package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +215 -0
- package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
- package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +72 -0
- package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
- package/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +163 -0
- package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +105 -0
- package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +125 -0
- package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +622 -0
- package/node_modules/zod/src/v4/core/util.ts +983 -0
- package/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/zod/src/v4/locales/ar.ts +115 -0
- package/node_modules/zod/src/v4/locales/az.ts +111 -0
- package/node_modules/zod/src/v4/locales/be.ts +176 -0
- package/node_modules/zod/src/v4/locales/bg.ts +128 -0
- package/node_modules/zod/src/v4/locales/ca.ts +116 -0
- package/node_modules/zod/src/v4/locales/cs.ts +118 -0
- package/node_modules/zod/src/v4/locales/da.ts +123 -0
- package/node_modules/zod/src/v4/locales/de.ts +116 -0
- package/node_modules/zod/src/v4/locales/el.ts +121 -0
- package/node_modules/zod/src/v4/locales/en.ts +123 -0
- package/node_modules/zod/src/v4/locales/eo.ts +118 -0
- package/node_modules/zod/src/v4/locales/es.ts +141 -0
- package/node_modules/zod/src/v4/locales/fa.ts +126 -0
- package/node_modules/zod/src/v4/locales/fi.ts +121 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
- package/node_modules/zod/src/v4/locales/fr.ts +132 -0
- package/node_modules/zod/src/v4/locales/he.ts +246 -0
- package/node_modules/zod/src/v4/locales/hr.ts +131 -0
- package/node_modules/zod/src/v4/locales/hu.ts +117 -0
- package/node_modules/zod/src/v4/locales/hy.ts +164 -0
- package/node_modules/zod/src/v4/locales/id.ts +115 -0
- package/node_modules/zod/src/v4/locales/index.ts +52 -0
- package/node_modules/zod/src/v4/locales/is.ts +119 -0
- package/node_modules/zod/src/v4/locales/it.ts +116 -0
- package/node_modules/zod/src/v4/locales/ja.ts +114 -0
- package/node_modules/zod/src/v4/locales/ka.ts +123 -0
- package/node_modules/zod/src/v4/locales/kh.ts +7 -0
- package/node_modules/zod/src/v4/locales/km.ts +119 -0
- package/node_modules/zod/src/v4/locales/ko.ts +121 -0
- package/node_modules/zod/src/v4/locales/lt.ts +239 -0
- package/node_modules/zod/src/v4/locales/mk.ts +118 -0
- package/node_modules/zod/src/v4/locales/ms.ts +115 -0
- package/node_modules/zod/src/v4/locales/nl.ts +121 -0
- package/node_modules/zod/src/v4/locales/no.ts +116 -0
- package/node_modules/zod/src/v4/locales/ota.ts +117 -0
- package/node_modules/zod/src/v4/locales/pl.ts +118 -0
- package/node_modules/zod/src/v4/locales/ps.ts +126 -0
- package/node_modules/zod/src/v4/locales/pt.ts +116 -0
- package/node_modules/zod/src/v4/locales/ro.ts +129 -0
- package/node_modules/zod/src/v4/locales/ru.ts +176 -0
- package/node_modules/zod/src/v4/locales/sl.ts +118 -0
- package/node_modules/zod/src/v4/locales/sv.ts +119 -0
- package/node_modules/zod/src/v4/locales/ta.ts +118 -0
- package/node_modules/zod/src/v4/locales/th.ts +119 -0
- package/node_modules/zod/src/v4/locales/tr.ts +111 -0
- package/node_modules/zod/src/v4/locales/ua.ts +7 -0
- package/node_modules/zod/src/v4/locales/uk.ts +117 -0
- package/node_modules/zod/src/v4/locales/ur.ts +119 -0
- package/node_modules/zod/src/v4/locales/uz.ts +117 -0
- package/node_modules/zod/src/v4/locales/vi.ts +117 -0
- package/node_modules/zod/src/v4/locales/yo.ts +124 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
- package/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
- package/node_modules/zod/src/v4/mini/external.ts +41 -0
- package/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/zod/src/v4/mini/iso.ts +66 -0
- package/node_modules/zod/src/v4/mini/parse.ts +14 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +1947 -0
- package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/zod/src/v4/mini/tests/codec.test.ts +548 -0
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +993 -0
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
- package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +325 -0
- package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +352 -0
- package/node_modules/zod/src/v4-mini/index.ts +3 -0
- package/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/zod/v3/external.js +6 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/zod/v3/index.js +4 -0
- package/node_modules/zod/v3/locales/en.cjs +112 -0
- package/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/zod/v3/package.json +7 -0
- package/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/zod/v3/types.cjs +3777 -0
- package/node_modules/zod/v3/types.d.cts +1034 -0
- package/node_modules/zod/v3/types.d.ts +1034 -0
- package/node_modules/zod/v3/types.js +3695 -0
- package/node_modules/zod/v4/classic/checks.cjs +33 -0
- package/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/zod/v4/classic/compat.cjs +61 -0
- package/node_modules/zod/v4/classic/compat.d.cts +50 -0
- package/node_modules/zod/v4/classic/compat.d.ts +50 -0
- package/node_modules/zod/v4/classic/compat.js +31 -0
- package/node_modules/zod/v4/classic/errors.cjs +74 -0
- package/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/zod/v4/classic/errors.js +48 -0
- package/node_modules/zod/v4/classic/external.cjs +73 -0
- package/node_modules/zod/v4/classic/external.d.cts +16 -0
- package/node_modules/zod/v4/classic/external.d.ts +16 -0
- package/node_modules/zod/v4/classic/external.js +20 -0
- package/node_modules/zod/v4/classic/from-json-schema.cjs +625 -0
- package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
- package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
- package/node_modules/zod/v4/classic/from-json-schema.js +599 -0
- package/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/zod/v4/classic/package.json +7 -0
- package/node_modules/zod/v4/classic/parse.cjs +41 -0
- package/node_modules/zod/v4/classic/parse.d.cts +31 -0
- package/node_modules/zod/v4/classic/parse.d.ts +31 -0
- package/node_modules/zod/v4/classic/parse.js +15 -0
- package/node_modules/zod/v4/classic/schemas.cjs +1511 -0
- package/node_modules/zod/v4/classic/schemas.d.cts +767 -0
- package/node_modules/zod/v4/classic/schemas.d.ts +767 -0
- package/node_modules/zod/v4/classic/schemas.js +1395 -0
- package/node_modules/zod/v4/core/api.cjs +1227 -0
- package/node_modules/zod/v4/core/api.d.cts +325 -0
- package/node_modules/zod/v4/core/api.d.ts +325 -0
- package/node_modules/zod/v4/core/api.js +1087 -0
- package/node_modules/zod/v4/core/checks.cjs +601 -0
- package/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/zod/v4/core/checks.js +575 -0
- package/node_modules/zod/v4/core/core.cjs +85 -0
- package/node_modules/zod/v4/core/core.d.cts +70 -0
- package/node_modules/zod/v4/core/core.d.ts +70 -0
- package/node_modules/zod/v4/core/core.js +78 -0
- package/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/zod/v4/core/errors.cjs +216 -0
- package/node_modules/zod/v4/core/errors.d.cts +221 -0
- package/node_modules/zod/v4/core/errors.d.ts +221 -0
- package/node_modules/zod/v4/core/errors.js +185 -0
- package/node_modules/zod/v4/core/index.cjs +47 -0
- package/node_modules/zod/v4/core/index.d.cts +16 -0
- package/node_modules/zod/v4/core/index.d.ts +16 -0
- package/node_modules/zod/v4/core/index.js +16 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
- package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
- package/node_modules/zod/v4/core/json-schema-processors.cjs +644 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +601 -0
- package/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
- package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
- package/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/zod/v4/core/package.json +7 -0
- package/node_modules/zod/v4/core/parse.cjs +131 -0
- package/node_modules/zod/v4/core/parse.d.cts +49 -0
- package/node_modules/zod/v4/core/parse.d.ts +49 -0
- package/node_modules/zod/v4/core/parse.js +93 -0
- package/node_modules/zod/v4/core/regexes.cjs +172 -0
- package/node_modules/zod/v4/core/regexes.d.cts +85 -0
- package/node_modules/zod/v4/core/regexes.d.ts +85 -0
- package/node_modules/zod/v4/core/regexes.js +139 -0
- package/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/zod/v4/core/schemas.cjs +2270 -0
- package/node_modules/zod/v4/core/schemas.d.cts +1184 -0
- package/node_modules/zod/v4/core/schemas.d.ts +1184 -0
- package/node_modules/zod/v4/core/schemas.js +2239 -0
- package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
- package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
- package/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +457 -0
- package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
- package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
- package/node_modules/zod/v4/core/to-json-schema.js +448 -0
- package/node_modules/zod/v4/core/util.cjs +734 -0
- package/node_modules/zod/v4/core/util.d.cts +200 -0
- package/node_modules/zod/v4/core/util.d.ts +200 -0
- package/node_modules/zod/v4/core/util.js +674 -0
- package/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/zod/v4/index.js +3 -0
- package/node_modules/zod/v4/locales/ar.cjs +133 -0
- package/node_modules/zod/v4/locales/ar.d.cts +5 -0
- package/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/zod/v4/locales/ar.js +106 -0
- package/node_modules/zod/v4/locales/az.cjs +132 -0
- package/node_modules/zod/v4/locales/az.d.cts +5 -0
- package/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/zod/v4/locales/az.js +105 -0
- package/node_modules/zod/v4/locales/be.cjs +183 -0
- package/node_modules/zod/v4/locales/be.d.cts +5 -0
- package/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/zod/v4/locales/be.js +156 -0
- package/node_modules/zod/v4/locales/bg.cjs +147 -0
- package/node_modules/zod/v4/locales/bg.d.cts +5 -0
- package/node_modules/zod/v4/locales/bg.d.ts +4 -0
- package/node_modules/zod/v4/locales/bg.js +120 -0
- package/node_modules/zod/v4/locales/ca.cjs +134 -0
- package/node_modules/zod/v4/locales/ca.d.cts +5 -0
- package/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/zod/v4/locales/ca.js +107 -0
- package/node_modules/zod/v4/locales/cs.cjs +138 -0
- package/node_modules/zod/v4/locales/cs.d.cts +5 -0
- package/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/zod/v4/locales/cs.js +111 -0
- package/node_modules/zod/v4/locales/da.cjs +142 -0
- package/node_modules/zod/v4/locales/da.d.cts +5 -0
- package/node_modules/zod/v4/locales/da.d.ts +4 -0
- package/node_modules/zod/v4/locales/da.js +115 -0
- package/node_modules/zod/v4/locales/de.cjs +135 -0
- package/node_modules/zod/v4/locales/de.d.cts +5 -0
- package/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/zod/v4/locales/de.js +108 -0
- package/node_modules/zod/v4/locales/el.cjs +136 -0
- package/node_modules/zod/v4/locales/el.d.cts +5 -0
- package/node_modules/zod/v4/locales/el.d.ts +4 -0
- package/node_modules/zod/v4/locales/el.js +109 -0
- package/node_modules/zod/v4/locales/en.cjs +140 -0
- package/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/zod/v4/locales/en.d.ts +4 -0
- package/node_modules/zod/v4/locales/en.js +113 -0
- package/node_modules/zod/v4/locales/eo.cjs +136 -0
- package/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/zod/v4/locales/eo.d.ts +4 -0
- package/node_modules/zod/v4/locales/eo.js +109 -0
- package/node_modules/zod/v4/locales/es.cjs +159 -0
- package/node_modules/zod/v4/locales/es.d.cts +5 -0
- package/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/zod/v4/locales/es.js +132 -0
- package/node_modules/zod/v4/locales/fa.cjs +141 -0
- package/node_modules/zod/v4/locales/fa.d.cts +5 -0
- package/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/zod/v4/locales/fa.js +114 -0
- package/node_modules/zod/v4/locales/fi.cjs +139 -0
- package/node_modules/zod/v4/locales/fi.d.cts +5 -0
- package/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/zod/v4/locales/fi.js +112 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
- package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
- package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.js +107 -0
- package/node_modules/zod/v4/locales/fr.cjs +152 -0
- package/node_modules/zod/v4/locales/fr.d.cts +5 -0
- package/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr.js +125 -0
- package/node_modules/zod/v4/locales/he.cjs +241 -0
- package/node_modules/zod/v4/locales/he.d.cts +5 -0
- package/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/zod/v4/locales/he.js +214 -0
- package/node_modules/zod/v4/locales/hr.cjs +149 -0
- package/node_modules/zod/v4/locales/hr.d.cts +5 -0
- package/node_modules/zod/v4/locales/hr.d.ts +4 -0
- package/node_modules/zod/v4/locales/hr.js +122 -0
- package/node_modules/zod/v4/locales/hu.cjs +135 -0
- package/node_modules/zod/v4/locales/hu.d.cts +5 -0
- package/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/zod/v4/locales/hu.js +108 -0
- package/node_modules/zod/v4/locales/hy.cjs +174 -0
- package/node_modules/zod/v4/locales/hy.d.cts +5 -0
- package/node_modules/zod/v4/locales/hy.d.ts +4 -0
- package/node_modules/zod/v4/locales/hy.js +147 -0
- package/node_modules/zod/v4/locales/id.cjs +133 -0
- package/node_modules/zod/v4/locales/id.d.cts +5 -0
- package/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/zod/v4/locales/id.js +106 -0
- package/node_modules/zod/v4/locales/index.cjs +111 -0
- package/node_modules/zod/v4/locales/index.d.cts +52 -0
- package/node_modules/zod/v4/locales/index.d.ts +52 -0
- package/node_modules/zod/v4/locales/index.js +52 -0
- package/node_modules/zod/v4/locales/is.cjs +136 -0
- package/node_modules/zod/v4/locales/is.d.cts +5 -0
- package/node_modules/zod/v4/locales/is.d.ts +4 -0
- package/node_modules/zod/v4/locales/is.js +109 -0
- package/node_modules/zod/v4/locales/it.cjs +135 -0
- package/node_modules/zod/v4/locales/it.d.cts +5 -0
- package/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/zod/v4/locales/it.js +108 -0
- package/node_modules/zod/v4/locales/ja.cjs +134 -0
- package/node_modules/zod/v4/locales/ja.d.cts +5 -0
- package/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/zod/v4/locales/ja.js +107 -0
- package/node_modules/zod/v4/locales/ka.cjs +139 -0
- package/node_modules/zod/v4/locales/ka.d.cts +5 -0
- package/node_modules/zod/v4/locales/ka.d.ts +4 -0
- package/node_modules/zod/v4/locales/ka.js +112 -0
- package/node_modules/zod/v4/locales/kh.cjs +12 -0
- package/node_modules/zod/v4/locales/kh.d.cts +5 -0
- package/node_modules/zod/v4/locales/kh.d.ts +5 -0
- package/node_modules/zod/v4/locales/kh.js +5 -0
- package/node_modules/zod/v4/locales/km.cjs +137 -0
- package/node_modules/zod/v4/locales/km.d.cts +5 -0
- package/node_modules/zod/v4/locales/km.d.ts +4 -0
- package/node_modules/zod/v4/locales/km.js +110 -0
- package/node_modules/zod/v4/locales/ko.cjs +138 -0
- package/node_modules/zod/v4/locales/ko.d.cts +5 -0
- package/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/zod/v4/locales/ko.js +111 -0
- package/node_modules/zod/v4/locales/lt.cjs +230 -0
- package/node_modules/zod/v4/locales/lt.d.cts +5 -0
- package/node_modules/zod/v4/locales/lt.d.ts +4 -0
- package/node_modules/zod/v4/locales/lt.js +203 -0
- package/node_modules/zod/v4/locales/mk.cjs +136 -0
- package/node_modules/zod/v4/locales/mk.d.cts +5 -0
- package/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/zod/v4/locales/mk.js +109 -0
- package/node_modules/zod/v4/locales/ms.cjs +134 -0
- package/node_modules/zod/v4/locales/ms.d.cts +5 -0
- package/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/zod/v4/locales/ms.js +107 -0
- package/node_modules/zod/v4/locales/nl.cjs +137 -0
- package/node_modules/zod/v4/locales/nl.d.cts +5 -0
- package/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/zod/v4/locales/nl.js +110 -0
- package/node_modules/zod/v4/locales/no.cjs +135 -0
- package/node_modules/zod/v4/locales/no.d.cts +5 -0
- package/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/zod/v4/locales/no.js +108 -0
- package/node_modules/zod/v4/locales/ota.cjs +136 -0
- package/node_modules/zod/v4/locales/ota.d.cts +5 -0
- package/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/zod/v4/locales/ota.js +109 -0
- package/node_modules/zod/v4/locales/package.json +7 -0
- package/node_modules/zod/v4/locales/pl.cjs +136 -0
- package/node_modules/zod/v4/locales/pl.d.cts +5 -0
- package/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/zod/v4/locales/pl.js +109 -0
- package/node_modules/zod/v4/locales/ps.cjs +141 -0
- package/node_modules/zod/v4/locales/ps.d.cts +5 -0
- package/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/zod/v4/locales/ps.js +114 -0
- package/node_modules/zod/v4/locales/pt.cjs +135 -0
- package/node_modules/zod/v4/locales/pt.d.cts +5 -0
- package/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt.js +108 -0
- package/node_modules/zod/v4/locales/ro.cjs +146 -0
- package/node_modules/zod/v4/locales/ro.d.cts +5 -0
- package/node_modules/zod/v4/locales/ro.d.ts +4 -0
- package/node_modules/zod/v4/locales/ro.js +119 -0
- package/node_modules/zod/v4/locales/ru.cjs +183 -0
- package/node_modules/zod/v4/locales/ru.d.cts +5 -0
- package/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/zod/v4/locales/ru.js +156 -0
- package/node_modules/zod/v4/locales/sl.cjs +136 -0
- package/node_modules/zod/v4/locales/sl.d.cts +5 -0
- package/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/zod/v4/locales/sl.js +109 -0
- package/node_modules/zod/v4/locales/sv.cjs +137 -0
- package/node_modules/zod/v4/locales/sv.d.cts +5 -0
- package/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/zod/v4/locales/sv.js +110 -0
- package/node_modules/zod/v4/locales/ta.cjs +137 -0
- package/node_modules/zod/v4/locales/ta.d.cts +5 -0
- package/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/zod/v4/locales/ta.js +110 -0
- package/node_modules/zod/v4/locales/th.cjs +137 -0
- package/node_modules/zod/v4/locales/th.d.cts +5 -0
- package/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/zod/v4/locales/th.js +110 -0
- package/node_modules/zod/v4/locales/tr.cjs +132 -0
- package/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/zod/v4/locales/tr.d.ts +4 -0
- package/node_modules/zod/v4/locales/tr.js +105 -0
- package/node_modules/zod/v4/locales/ua.cjs +12 -0
- package/node_modules/zod/v4/locales/ua.d.cts +5 -0
- package/node_modules/zod/v4/locales/ua.d.ts +5 -0
- package/node_modules/zod/v4/locales/ua.js +5 -0
- package/node_modules/zod/v4/locales/uk.cjs +135 -0
- package/node_modules/zod/v4/locales/uk.d.cts +5 -0
- package/node_modules/zod/v4/locales/uk.d.ts +4 -0
- package/node_modules/zod/v4/locales/uk.js +108 -0
- package/node_modules/zod/v4/locales/ur.cjs +137 -0
- package/node_modules/zod/v4/locales/ur.d.cts +5 -0
- package/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/zod/v4/locales/ur.js +110 -0
- package/node_modules/zod/v4/locales/uz.cjs +137 -0
- package/node_modules/zod/v4/locales/uz.d.cts +5 -0
- package/node_modules/zod/v4/locales/uz.d.ts +4 -0
- package/node_modules/zod/v4/locales/uz.js +110 -0
- package/node_modules/zod/v4/locales/vi.cjs +135 -0
- package/node_modules/zod/v4/locales/vi.d.cts +5 -0
- package/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/zod/v4/locales/vi.js +108 -0
- package/node_modules/zod/v4/locales/yo.cjs +134 -0
- package/node_modules/zod/v4/locales/yo.d.cts +5 -0
- package/node_modules/zod/v4/locales/yo.d.ts +4 -0
- package/node_modules/zod/v4/locales/yo.js +107 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
- package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
- package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.js +109 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
- package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
- package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.js +107 -0
- package/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/zod/v4/mini/coerce.cjs +52 -0
- package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/zod/v4/mini/coerce.js +22 -0
- package/node_modules/zod/v4/mini/external.cjs +63 -0
- package/node_modules/zod/v4/mini/external.d.cts +13 -0
- package/node_modules/zod/v4/mini/external.d.ts +13 -0
- package/node_modules/zod/v4/mini/external.js +14 -0
- package/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/zod/v4/mini/iso.cjs +64 -0
- package/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/zod/v4/mini/iso.js +34 -0
- package/node_modules/zod/v4/mini/package.json +7 -0
- package/node_modules/zod/v4/mini/parse.cjs +16 -0
- package/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/zod/v4/mini/schemas.cjs +1083 -0
- package/node_modules/zod/v4/mini/schemas.d.cts +445 -0
- package/node_modules/zod/v4/mini/schemas.d.ts +445 -0
- package/node_modules/zod/v4/mini/schemas.js +961 -0
- package/node_modules/zod/v4/package.json +7 -0
- package/node_modules/zod/v4-mini/index.cjs +32 -0
- package/node_modules/zod/v4-mini/index.d.cts +3 -0
- package/node_modules/zod/v4-mini/index.d.ts +3 -0
- package/node_modules/zod/v4-mini/index.js +3 -0
- package/node_modules/zod/v4-mini/package.json +7 -0
- package/package.json +57 -0
|
@@ -0,0 +1,1382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-rendered HTML for the board. Zero frameworks, zero external assets —
|
|
3
|
+
* everything inline, so the page works offline and adds no dependencies.
|
|
4
|
+
*
|
|
5
|
+
* Design language: a modern developer-tool dashboard (in the Linear / Vercel
|
|
6
|
+
* tradition): an app shell with sidebar navigation, a disciplined neutral
|
|
7
|
+
* palette driven by CSS variables (light and dark, with a manual override), a
|
|
8
|
+
* typographic scale, status expressed as dots and chips with AA-contrast text,
|
|
9
|
+
* and one brand signature — the prism line, white light split into the six
|
|
10
|
+
* lifecycle-state colours. Amber is reserved for "needs you": the only warm hue.
|
|
11
|
+
*
|
|
12
|
+
* Robustness rules baked in: every flex row wraps, every long token truncates or
|
|
13
|
+
* breaks, record-sourced text is HTML-escaped everywhere, and no record text is
|
|
14
|
+
* ever interpolated into inline JavaScript (the confirm dialogs read data-*).
|
|
15
|
+
*/
|
|
16
|
+
import { diffList, diffPresentation, diffSteps, diffVariations, } from '../atlas/diff.js';
|
|
17
|
+
import { FLOW_FIELD, FLOW_PRESENTATION_FIELD, FLOW_STATUS_LABEL, FLOW_STEP_FIELD, LAST_VERIFIED_FIELD, MECHANICS_FIELD, PRESENTATION_DIFF_HEADING, UNDERSTAND_CTA, UNDERSTAND_IMPORT_COMMAND, } from '../atlas/labels.js';
|
|
18
|
+
import { groupByJourney, partitionGuardrails, sortFlowViews, } from '../atlas/presentation.js';
|
|
19
|
+
import { STATES, } from '../records/types.js';
|
|
20
|
+
export function escapeHtml(text) {
|
|
21
|
+
return text
|
|
22
|
+
.replaceAll('&', '&')
|
|
23
|
+
.replaceAll('<', '<')
|
|
24
|
+
.replaceAll('>', '>')
|
|
25
|
+
.replaceAll('"', '"')
|
|
26
|
+
.replaceAll("'", ''');
|
|
27
|
+
}
|
|
28
|
+
// ── CSRF token (Requirement 4) ───────────────────────────────────────────────
|
|
29
|
+
// One random token per server process (server.ts mints it at startup and calls
|
|
30
|
+
// setCsrfToken once). Module state, deliberately: every form-building helper
|
|
31
|
+
// below would otherwise need the token threaded through its signature and every
|
|
32
|
+
// call site, for a single-process, single-user local server where that buys
|
|
33
|
+
// nothing. The actual enforcement chokepoint lives in server.ts, not here —
|
|
34
|
+
// this only emits the token into every mutation form so the browser can send
|
|
35
|
+
// it back.
|
|
36
|
+
let csrfToken = '';
|
|
37
|
+
export function setCsrfToken(token) {
|
|
38
|
+
csrfToken = token;
|
|
39
|
+
}
|
|
40
|
+
function csrfField() {
|
|
41
|
+
return `<input type="hidden" name="csrfToken" value="${escapeHtml(csrfToken)}">`;
|
|
42
|
+
}
|
|
43
|
+
/** Status colours: dot/fill tone + an AA-contrast text tone for chips. */
|
|
44
|
+
const STATE_TONE = {
|
|
45
|
+
planned: { dot: '#8B8D98' },
|
|
46
|
+
building: { dot: '#3E63DD' },
|
|
47
|
+
checking: { dot: '#12A594' },
|
|
48
|
+
needs_you: { dot: '#D97706' },
|
|
49
|
+
shipping: { dot: '#8E4EC6' },
|
|
50
|
+
live: { dot: '#30A46C' },
|
|
51
|
+
};
|
|
52
|
+
/** Plain word first; the real term lives in the hover. */
|
|
53
|
+
const STATE_WORD = {
|
|
54
|
+
planned: 'Planned',
|
|
55
|
+
building: 'Being built',
|
|
56
|
+
checking: 'Being proven',
|
|
57
|
+
needs_you: 'Waiting on you',
|
|
58
|
+
shipping: 'Shipping',
|
|
59
|
+
live: 'Live',
|
|
60
|
+
};
|
|
61
|
+
const STATE_HINT = {
|
|
62
|
+
planned: 'state: planned — a contract exists; no agent is building yet',
|
|
63
|
+
building: 'state: building — an agent is working in the change’s lane',
|
|
64
|
+
checking: 'state: checking — checks and review are proving the work',
|
|
65
|
+
needs_you: 'state: needs_you — a decision only the owner can make',
|
|
66
|
+
shipping: 'state: shipping — the PR is at the merge gate',
|
|
67
|
+
live: 'state: live — shipped, verified, passport written',
|
|
68
|
+
};
|
|
69
|
+
const TIER_HINT = {
|
|
70
|
+
light: 'risk tier: light — copy, colours, spacing',
|
|
71
|
+
normal: 'risk tier: normal — a feature or bug fix',
|
|
72
|
+
heavy: 'risk tier: heavy — auth, payments, saved data or schema',
|
|
73
|
+
};
|
|
74
|
+
/** Flow status colours — same dot language as lifecycle state. */
|
|
75
|
+
const FLOW_STATUS_TONE = {
|
|
76
|
+
works: '#30A46C',
|
|
77
|
+
planned: '#3E63DD',
|
|
78
|
+
uncertain: '#D97706',
|
|
79
|
+
idea: '#8B8D98',
|
|
80
|
+
};
|
|
81
|
+
const EVIDENCE_TONE = {
|
|
82
|
+
manual: '#30A46C',
|
|
83
|
+
test: '#12A594',
|
|
84
|
+
inferred: '#8B8D98',
|
|
85
|
+
stale: '#E5484D',
|
|
86
|
+
unknown: '#D97706',
|
|
87
|
+
};
|
|
88
|
+
function recordLink(home, kind, id, label, hint) {
|
|
89
|
+
const href = `/record?home=${encodeURIComponent(home)}&kind=${encodeURIComponent(kind)}&id=${encodeURIComponent(id)}`;
|
|
90
|
+
return `<a class="rl" href="${href}" title="${escapeHtml(hint)}">${escapeHtml(label)}</a>`;
|
|
91
|
+
}
|
|
92
|
+
function diffLink(home, id) {
|
|
93
|
+
return `<a class="rl" href="/diff?home=${encodeURIComponent(home)}&id=${encodeURIComponent(id)}" title="the exact code diff, straight from git">diff</a>`;
|
|
94
|
+
}
|
|
95
|
+
function cardLinks(card) {
|
|
96
|
+
const links = [
|
|
97
|
+
recordLink(card.home, 'contracts', card.id, 'contract', 'the agreed goal, scope and checks'),
|
|
98
|
+
diffLink(card.home, card.id),
|
|
99
|
+
recordLink(card.home, 'evidence', card.id, 'checks', 'what the last check run found'),
|
|
100
|
+
];
|
|
101
|
+
if (card.reviewState) {
|
|
102
|
+
links.push(recordLink(card.home, 'reviews', card.id, 'review', 'the fresh-eyes review, sealed to one exact diff'));
|
|
103
|
+
}
|
|
104
|
+
return links.join('');
|
|
105
|
+
}
|
|
106
|
+
function tierChip(tier) {
|
|
107
|
+
return `<span class="chip tier-${tier}" title="${escapeHtml(TIER_HINT[tier] ?? tier)}">${escapeHtml(tier)}</span>`;
|
|
108
|
+
}
|
|
109
|
+
function appChip(app) {
|
|
110
|
+
return `<span class="chip app-chip">${escapeHtml(app)}</span>`;
|
|
111
|
+
}
|
|
112
|
+
function decisionForm(home, id, title, decision, label, cls) {
|
|
113
|
+
return `<form method="post" action="/accept" class="act" data-confirm="${decision === 'approved' ? 'approve' : 'reject'}" data-title="${escapeHtml(title)}">
|
|
114
|
+
${csrfField()}
|
|
115
|
+
<input type="hidden" name="home" value="${escapeHtml(home)}">
|
|
116
|
+
<input type="hidden" name="id" value="${escapeHtml(id)}">
|
|
117
|
+
<input type="hidden" name="decision" value="${decision}">
|
|
118
|
+
<button type="submit" class="${cls}">${label}</button>
|
|
119
|
+
</form>`;
|
|
120
|
+
}
|
|
121
|
+
function renderNeedsYou(items) {
|
|
122
|
+
if (items.length === 0) {
|
|
123
|
+
return `<div class="empty">
|
|
124
|
+
<p class="empty-title">Nothing is waiting on you.</p>
|
|
125
|
+
<p class="empty-sub">When a change needs your decision, it appears here first.</p>
|
|
126
|
+
</div>`;
|
|
127
|
+
}
|
|
128
|
+
return filterEmpty('needs') + items
|
|
129
|
+
.map((item) => {
|
|
130
|
+
const { card } = item;
|
|
131
|
+
const actions = item.acceptable
|
|
132
|
+
? `<div class="need-action">
|
|
133
|
+
${decisionForm(card.home, card.id, card.title, 'approved', 'Approve and sign', 'btn-primary')}
|
|
134
|
+
${decisionForm(card.home, card.id, card.title, 'rejected', 'Request changes', 'btn-ghost')}
|
|
135
|
+
</div>`
|
|
136
|
+
: '';
|
|
137
|
+
return `<article class="need" data-app="${escapeHtml(card.app)}">
|
|
138
|
+
<div class="need-body">
|
|
139
|
+
<div class="meta-row">${appChip(card.app)}${tierChip(card.tier)}</div>
|
|
140
|
+
<p class="ask">${escapeHtml(item.ask)}</p>
|
|
141
|
+
<nav class="links"><span class="links-label">Look first</span>${cardLinks(card)}</nav>
|
|
142
|
+
</div>
|
|
143
|
+
${actions}
|
|
144
|
+
</article>`;
|
|
145
|
+
})
|
|
146
|
+
.join('\n');
|
|
147
|
+
}
|
|
148
|
+
function renderCard(card) {
|
|
149
|
+
const flags = [];
|
|
150
|
+
if (card.changesRequested) {
|
|
151
|
+
flags.push('<span class="flag" title="the reviewer or the owner requested changes — back to the builder">changes requested</span>');
|
|
152
|
+
}
|
|
153
|
+
if (card.stalePack) {
|
|
154
|
+
flags.push('<span class="flag" title="the contract was amended after the brief was packed — re-pack">stale brief</span>');
|
|
155
|
+
}
|
|
156
|
+
if (card.amendments >= 3) {
|
|
157
|
+
flags.push(`<span class="flag" title="amended ${card.amendments} times — consider splitting">amended ×${card.amendments}</span>`);
|
|
158
|
+
}
|
|
159
|
+
if (card.lastCheckPass === false) {
|
|
160
|
+
flags.push('<span class="flag" title="the last check run failed">checks failing</span>');
|
|
161
|
+
}
|
|
162
|
+
return `<article class="card" data-app="${escapeHtml(card.app)}" data-tier="${escapeHtml(card.tier)}" data-intent="${escapeHtml(card.intent ?? '')}">
|
|
163
|
+
<h4 class="card-title">${escapeHtml(card.title)}</h4>
|
|
164
|
+
<div class="meta-row">${appChip(card.app)}${tierChip(card.tier)}</div>
|
|
165
|
+
<p class="sentence">${escapeHtml(card.sentence)}</p>
|
|
166
|
+
${flags.length > 0 ? `<div class="flags">${flags.join('')}</div>` : ''}
|
|
167
|
+
<nav class="links">${cardLinks(card)}</nav>
|
|
168
|
+
<p class="id" title="contract id: ${escapeHtml(card.id)}">${escapeHtml(card.id)}</p>
|
|
169
|
+
</article>`;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* The ONE app selector, at the top of <main> and nowhere else.
|
|
173
|
+
*
|
|
174
|
+
* It lives here rather than in the sidebar for a mechanical reason: the
|
|
175
|
+
* auto-refresh replaces <main> only. A selector in the sidebar would survive
|
|
176
|
+
* that swap and then never learn about a newly registered app, quietly
|
|
177
|
+
* offering a stale list for as long as the tab stayed open — while everything
|
|
178
|
+
* it filters underneath it had been rebuilt.
|
|
179
|
+
*
|
|
180
|
+
* Its options come from `model.apps` (every registered repo), NOT from the
|
|
181
|
+
* change cards: an app with no open work is exactly the one an owner is most
|
|
182
|
+
* likely to be looking for, and building the list from cards would hide it.
|
|
183
|
+
*/
|
|
184
|
+
function renderAppScope(model) {
|
|
185
|
+
const apps = [...new Set(model.apps.map((app) => app.app))].sort();
|
|
186
|
+
if (apps.length < 2) {
|
|
187
|
+
// One app is not a choice, and an empty <select> is worse than none.
|
|
188
|
+
return '';
|
|
189
|
+
}
|
|
190
|
+
return `<div class="filters app-scope" role="group" aria-label="Filter the board by app">
|
|
191
|
+
<label for="f-app">Showing</label>
|
|
192
|
+
<select id="f-app" aria-label="Which app to show"><option value="">All apps</option>${apps
|
|
193
|
+
.map((app) => `<option value="${escapeHtml(app)}">${escapeHtml(app)}</option>`)
|
|
194
|
+
.join('')}</select>
|
|
195
|
+
<span class="scope-note">every section below follows this</span>
|
|
196
|
+
</div>`;
|
|
197
|
+
}
|
|
198
|
+
// ── The board script's three real decisions ──────────────────────────────────
|
|
199
|
+
//
|
|
200
|
+
// Written here as ordinary functions and embedded into the page script by
|
|
201
|
+
// `.toString()`, so there is exactly one implementation and it is unit-
|
|
202
|
+
// testable. Everything around them in the browser is querySelectorAll
|
|
203
|
+
// plumbing; these are the parts that can actually be wrong. They must stay
|
|
204
|
+
// self-contained (no imports, no closure) — the browser gets only their source.
|
|
205
|
+
/**
|
|
206
|
+
* Which remembered filter value a freshly-swapped <main> can still honour.
|
|
207
|
+
* Restoring a value the replacement no longer offers leaves the select showing
|
|
208
|
+
* an app that is gone, every section filtered to nothing, and no obvious way
|
|
209
|
+
* back — so an absent option resets to "All".
|
|
210
|
+
*/
|
|
211
|
+
export function keepIfStillOffered(optionValues, remembered) {
|
|
212
|
+
return optionValues.indexOf(remembered) >= 0 ? remembered : '';
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* What a nav badge reads. Unfiltered, the server's own total stands: it can
|
|
216
|
+
* legitimately count things the DOM does not show (Needs you includes pending
|
|
217
|
+
* Flow/Rule proposals that live in another section entirely). Filtered, only
|
|
218
|
+
* what is actually visible is honest.
|
|
219
|
+
*/
|
|
220
|
+
export function badgeText(scope, visible, serverTotal) {
|
|
221
|
+
return scope === '' ? serverTotal : String(visible);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Whether a section shows "nothing here for this app". Only when a filter
|
|
225
|
+
* emptied it — a section that was empty to begin with already renders its own
|
|
226
|
+
* fuller empty state, and two of them at once reads as a bug.
|
|
227
|
+
*/
|
|
228
|
+
export function showFilterEmpty(visible, total) {
|
|
229
|
+
return visible === 0 && total > 0;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Whether a Releases group — a subhead, its explanatory sentence and the cards
|
|
233
|
+
* underneath it — still has anything to head. A heading outliving its own
|
|
234
|
+
* cards is exactly the dishonesty this section exists to remove: filtered to
|
|
235
|
+
* an app with none of them, the board would otherwise announce "Awaiting live
|
|
236
|
+
* verification" directly above "Nothing in this section for the selected app."
|
|
237
|
+
* The subhead carries no `data-app` of its own and cannot — a group spans
|
|
238
|
+
* every app — so it is decided from what its cards are actually showing.
|
|
239
|
+
*/
|
|
240
|
+
export function showGroup(cardDisplays) {
|
|
241
|
+
return cardDisplays.some((display) => display !== 'none');
|
|
242
|
+
}
|
|
243
|
+
/** The "nothing here for the selected app" line, revealed only when a filter empties a section. */
|
|
244
|
+
function filterEmpty(section) {
|
|
245
|
+
return `<p class="empty-sub filter-empty" id="fe-${section}" hidden>Nothing in this section for the selected app.</p>`;
|
|
246
|
+
}
|
|
247
|
+
function renderWork(cards) {
|
|
248
|
+
const intents = [...new Set(cards.map((card) => card.intent).filter(Boolean))].sort();
|
|
249
|
+
const filters = `<div class="filters">
|
|
250
|
+
<label>Risk <select id="f-tier"><option value="">All</option><option>light</option><option>normal</option><option>heavy</option></select></label>
|
|
251
|
+
${intents.length > 0 ? `<label>Intent <select id="f-intent"><option value="">All</option>${intents.map((it) => `<option>${escapeHtml(it)}</option>`).join('')}</select></label>` : ''}
|
|
252
|
+
</div>`;
|
|
253
|
+
const columns = STATES.map((state) => {
|
|
254
|
+
const inState = cards.filter((card) => card.state === state);
|
|
255
|
+
return `<div class="col">
|
|
256
|
+
<h3 class="col-head" title="${escapeHtml(STATE_HINT[state])}">
|
|
257
|
+
<span class="dot" style="background:${STATE_TONE[state].dot}"></span>
|
|
258
|
+
<span class="col-name">${STATE_WORD[state]}</span>
|
|
259
|
+
<span class="count">${inState.length}</span>
|
|
260
|
+
</h3>
|
|
261
|
+
<div class="col-body">${inState.map(renderCard).join('\n') || '<p class="col-empty">No changes</p>'}</div>
|
|
262
|
+
</div>`;
|
|
263
|
+
}).join('\n');
|
|
264
|
+
return `${filters}<div class="board">${columns}</div>${filterEmpty('work')}`;
|
|
265
|
+
}
|
|
266
|
+
function renderApps(apps) {
|
|
267
|
+
if (apps.length === 0) {
|
|
268
|
+
return `<div class="empty">
|
|
269
|
+
<p class="empty-title">No apps yet.</p>
|
|
270
|
+
<p class="empty-sub">Run <code>prismatica init</code> inside a repo to put it on the board.</p>
|
|
271
|
+
</div>`;
|
|
272
|
+
}
|
|
273
|
+
const removeForm = (app) => `<form method="post" action="/forget" class="app-remove" data-confirm="forget" data-title="${escapeHtml(app.app)}">
|
|
274
|
+
${csrfField()}
|
|
275
|
+
<input type="hidden" name="path" value="${escapeHtml(app.repo)}">
|
|
276
|
+
<button type="submit" class="btn-remove" title="remove this repo from the board — the repo and its records are untouched">Remove</button>
|
|
277
|
+
</form>`;
|
|
278
|
+
const modeChip = (app) => app.mode === 'map-only'
|
|
279
|
+
? '<span class="chip" title="comprehension only — Flows and Rules, no gate">map only</span>'
|
|
280
|
+
: '';
|
|
281
|
+
const rows = apps
|
|
282
|
+
.map((app) => {
|
|
283
|
+
const appCell = `<td class="cell-app"><div class="app-name">${escapeHtml(app.app)} ${modeChip(app)}</div>${removeForm(app)}</td>`;
|
|
284
|
+
const row = `<tr data-app="${escapeHtml(app.app)}">`;
|
|
285
|
+
if (!app.ok) {
|
|
286
|
+
return `${row}${appCell}<td colspan="5" class="t-bad">${escapeHtml(app.problem ?? 'unreadable')}</td></tr>`;
|
|
287
|
+
}
|
|
288
|
+
const gate = app.gateHealth === 'pass'
|
|
289
|
+
? '<span class="pill pill-ok" title="the last recorded gate run passed">Passing</span>'
|
|
290
|
+
: app.gateHealth === 'fail'
|
|
291
|
+
? '<span class="pill pill-bad" title="the last recorded gate run failed">Failing</span>'
|
|
292
|
+
: '<span class="pill" title="no gate run recorded yet">No runs yet</span>';
|
|
293
|
+
// Unavailable and unknown are shown only when they exist, and never
|
|
294
|
+
// folded into "missing" — the board must not report an unanswered
|
|
295
|
+
// question as a shortcoming any more than the CLI does.
|
|
296
|
+
const unmeasured = [
|
|
297
|
+
app.checksSummary.unavailable > 0
|
|
298
|
+
? `${app.checksSummary.unavailable} unavailable`
|
|
299
|
+
: undefined,
|
|
300
|
+
app.checksSummary.indeterminate > 0
|
|
301
|
+
? `${app.checksSummary.indeterminate} unknown`
|
|
302
|
+
: undefined,
|
|
303
|
+
].filter((part) => part !== undefined);
|
|
304
|
+
const checks = `<details><summary title="what init detected: Enforced blocks merges · Checked runs · Missing needs a fix · Unavailable cannot exist here · Unknown was never established"><span class="t-ok">${app.checksSummary.enforced} enforced</span> · ${app.checksSummary.checked} checked · <span class="${app.checksSummary.missing > 0 ? 't-warn' : 't-muted'}">${app.checksSummary.missing} missing</span>${unmeasured.length > 0 ? ` · <span class="t-muted">${unmeasured.join(' · ')}</span>` : ''}</summary>
|
|
305
|
+
${app.missingFixes.length > 0 ? `<ul class="fixes">${app.missingFixes.map((fix) => `<li><b>${escapeHtml(fix.label)}</b> — <code>${escapeHtml(fix.fix)}</code></li>`).join('')}</ul>` : '<p class="t-muted fix-note">nothing missing that can be detected locally</p>'}
|
|
306
|
+
</details>`;
|
|
307
|
+
const flags = app.redFlags.length === 0
|
|
308
|
+
? '<span class="t-muted">None</span>'
|
|
309
|
+
: app.redFlags.map((flag) => `<span class="flag">${escapeHtml(flag)}</span>`).join(' ');
|
|
310
|
+
return `${row}
|
|
311
|
+
${appCell}
|
|
312
|
+
<td>${app.liveVersion ? `<span title="most recent passport">${escapeHtml(app.liveVersion.slice(0, 10))}</span>` : '<span class="t-muted">Nothing yet</span>'}</td>
|
|
313
|
+
<td><span title="in-flight changes vs the WIP limit">${app.openChanges}<span class="t-muted"> / ${app.wipLimit}</span></span></td>
|
|
314
|
+
<td>${gate}</td>
|
|
315
|
+
<td class="cell-flags">${flags}</td>
|
|
316
|
+
<td>${checks}</td>
|
|
317
|
+
</tr>`;
|
|
318
|
+
})
|
|
319
|
+
.join('\n');
|
|
320
|
+
return `<div class="panel"><table class="apps"><thead><tr><th>App</th><th>Last shipped</th><th title="in-flight changes vs the WIP limit">Open</th><th title="the merge gate — the one choke point">Gate</th><th>Red flags</th><th>Checks</th></tr></thead><tbody>${rows}</tbody></table></div>`;
|
|
321
|
+
}
|
|
322
|
+
function renderReleases(releases, pendingVerification, legacyReleases, intents) {
|
|
323
|
+
// The empty state claims nothing exists yet — false, and confusing to show
|
|
324
|
+
// directly above a list of pending or legacy contracts that plainly do.
|
|
325
|
+
const passports = releases.length === 0
|
|
326
|
+
? pendingVerification.length === 0 && legacyReleases.length === 0
|
|
327
|
+
? `<div class="empty">
|
|
328
|
+
<p class="empty-title">Nothing has shipped yet.</p>
|
|
329
|
+
<p class="empty-sub">A release appears here only after its change merges, deploys, and passes a live check — with a tested way back.</p>
|
|
330
|
+
</div>`
|
|
331
|
+
: ''
|
|
332
|
+
: releases
|
|
333
|
+
.map((release) => `<article class="release" data-app="${escapeHtml(release.app)}">
|
|
334
|
+
<div class="release-head">
|
|
335
|
+
<span class="dot" style="background:${STATE_TONE.live.dot}"></span>
|
|
336
|
+
<h4 class="card-title">${escapeHtml(release.passport.title)}</h4>
|
|
337
|
+
${appChip(release.app)}
|
|
338
|
+
</div>
|
|
339
|
+
<p class="sentence">Shipped ${escapeHtml(release.passport.shippedAt.slice(0, 10))} · deploy: ${escapeHtml(release.passport.deploy.result)} · rollback tested: ${escapeHtml(release.passport.rollback.route)}</p>
|
|
340
|
+
<nav class="links"><a class="rl" href="${escapeHtml(release.passport.pr)}" title="the pull request it merged through">PR</a>${recordLink(release.repo, 'passports', release.passport.id, 'passport', 'what shipped, its proof, and the tested rollback route')}</nav>
|
|
341
|
+
</article>`)
|
|
342
|
+
.join('\n');
|
|
343
|
+
// A merged contract with no passport yet — eligible for `ship --verify`,
|
|
344
|
+
// distinct from a verified release (has a passport) and from a legacy one
|
|
345
|
+
// (never eligible at all). Never claims GitHub confirmed a merge; that is
|
|
346
|
+
// `ship --verify`'s own job.
|
|
347
|
+
const pendingBlock = pendingVerification.length === 0
|
|
348
|
+
? ''
|
|
349
|
+
: `<div class="rel-group"><h3 class="subhead">Awaiting live verification</h3>
|
|
350
|
+
<p class="sentence t-muted">Merged, with no passport yet. Run <code>prismatica ship <id> --verify</code> once it has actually deployed — never shown as shipped until it does.</p>` +
|
|
351
|
+
pendingVerification
|
|
352
|
+
.map((item) => `<article class="release" data-app="${escapeHtml(item.app)}">
|
|
353
|
+
<div class="release-head">
|
|
354
|
+
<span class="dot" style="background:${STATE_TONE.shipping.dot}"></span>
|
|
355
|
+
<h4 class="card-title">${escapeHtml(item.title)}</h4>
|
|
356
|
+
${appChip(item.app)}
|
|
357
|
+
<span class="chip st-open" title="no passport yet — not described as shipped or verified">pending verification</span>
|
|
358
|
+
</div>
|
|
359
|
+
<p class="id">${escapeHtml(item.contractId)}</p>
|
|
360
|
+
<nav class="links">${recordLink(item.repo, 'contracts', item.contractId, 'contract', 'the agreed goal, scope and checks')}</nav>
|
|
361
|
+
</article>`)
|
|
362
|
+
.join('\n') +
|
|
363
|
+
'</div>';
|
|
364
|
+
// Created before this app started tracking release verification
|
|
365
|
+
// (`releaseTrackingSince`), and carrying no passport — its release proof was
|
|
366
|
+
// never tracked, so it is never queued for `ship --verify` and never
|
|
367
|
+
// described as shipped or verified. A pre-boundary contract that DOES have a
|
|
368
|
+
// passport is a verified release above, not one of these: the boundary
|
|
369
|
+
// decides what a missing passport means, never what a present one does.
|
|
370
|
+
const legacyBlock = legacyReleases.length === 0
|
|
371
|
+
? ''
|
|
372
|
+
: `<div class="rel-group"><h3 class="subhead">Legacy — release proof not tracked</h3>
|
|
373
|
+
<p class="sentence t-muted">Created before this app adopted release tracking. Not queued for verification, and never described as shipped or verified.</p>` +
|
|
374
|
+
legacyReleases
|
|
375
|
+
.map((item) => `<article class="release" data-app="${escapeHtml(item.app)}">
|
|
376
|
+
<div class="release-head">
|
|
377
|
+
<span class="dot" style="background:${STATE_TONE.planned.dot}"></span>
|
|
378
|
+
<h4 class="card-title">${escapeHtml(item.title)}</h4>
|
|
379
|
+
${appChip(item.app)}
|
|
380
|
+
<span class="chip" title="this contract predates releaseTrackingSince — its release proof was never tracked">legacy — untracked</span>
|
|
381
|
+
</div>
|
|
382
|
+
<p class="id">${escapeHtml(item.contractId)}</p>
|
|
383
|
+
<nav class="links">${recordLink(item.repo, 'contracts', item.contractId, 'contract', 'the agreed goal, scope and checks')}</nav>
|
|
384
|
+
</article>`)
|
|
385
|
+
.join('\n') +
|
|
386
|
+
'</div>';
|
|
387
|
+
// An Intent is the PLAN the owner approved when `prismatica start` created
|
|
388
|
+
// the change — not a progress tracker. Nothing ever advances its state or
|
|
389
|
+
// its per-check status, so the old chip and "N of N proven" counter were
|
|
390
|
+
// reporting a number that could only ever be zero. What is honest to say is
|
|
391
|
+
// what the plan intended, and — from a passport, the one record that means
|
|
392
|
+
// work shipped — whether it got there.
|
|
393
|
+
const intentBlock = intents.length === 0
|
|
394
|
+
? ''
|
|
395
|
+
: `<div class="rel-group"><h3 class="subhead">Approved plans</h3>
|
|
396
|
+
<p class="sentence">Each one is the plan your agent wrote and you confirmed when <code>prismatica start</code> created the change, recorded verbatim. The outcomes below are what it set out to achieve; whether the code does them is settled by the checks and the gate, never here.</p>` +
|
|
397
|
+
intents
|
|
398
|
+
.map((item) => `<article class="intent" data-app="${escapeHtml(item.app)}">
|
|
399
|
+
<div class="release-head"><h4 class="card-title">${escapeHtml(item.intent.title)}</h4>
|
|
400
|
+
${item.shipped
|
|
401
|
+
? '<span class="chip st-proven" title="a passport exists for this change — it merged, deployed and passed a live check">shipped</span>'
|
|
402
|
+
: '<span class="chip st-open" title="no passport for this change yet — it has not shipped">not shipped yet</span>'}</div>
|
|
403
|
+
<p class="sentence">Intended outcomes · ${escapeHtml(item.app)}</p>
|
|
404
|
+
<ul class="intent-checks">${item.intent.checks
|
|
405
|
+
.map((check) => `<li>${escapeHtml(check.description)}</li>`)
|
|
406
|
+
.join('')}</ul></article>`)
|
|
407
|
+
.join('\n') +
|
|
408
|
+
'</div>';
|
|
409
|
+
return passports + pendingBlock + legacyBlock + intentBlock + filterEmpty('releases');
|
|
410
|
+
}
|
|
411
|
+
// ── Understand (Flows + Rules) ───────────────────────────────────────────────
|
|
412
|
+
function flowActionForm(repo, id, action, confirmKind, title, label, cls) {
|
|
413
|
+
return `<form method="post" action="/${action}" class="act" data-confirm="${confirmKind}" data-title="${escapeHtml(title)}">
|
|
414
|
+
${csrfField()}
|
|
415
|
+
<input type="hidden" name="repo" value="${escapeHtml(repo)}">
|
|
416
|
+
<input type="hidden" name="id" value="${escapeHtml(id)}">
|
|
417
|
+
<button type="submit" class="${cls}">${label}</button>
|
|
418
|
+
</form>`;
|
|
419
|
+
}
|
|
420
|
+
function statusChip(status) {
|
|
421
|
+
return `<span class="chip" style="color:${FLOW_STATUS_TONE[status]};border-color:${FLOW_STATUS_TONE[status]}"><span class="dot" style="background:${FLOW_STATUS_TONE[status]}"></span> ${escapeHtml(FLOW_STATUS_LABEL[status])}</span>`;
|
|
422
|
+
}
|
|
423
|
+
function pendingBadge(kind, href) {
|
|
424
|
+
const isFlow = href !== undefined;
|
|
425
|
+
const title = kind === 'draft'
|
|
426
|
+
? `a new ${isFlow ? 'flow' : 'rule'} proposed by an agent, awaiting your review`
|
|
427
|
+
: `a proposed change, awaiting your review${isFlow ? ' — click to see the diff' : ''}`;
|
|
428
|
+
const label = kind === 'draft' ? 'new — pending review' : href ? 'update pending — review' : 'update pending';
|
|
429
|
+
const tag = href ? `a href="${href}"` : 'span';
|
|
430
|
+
const closeTag = href ? 'a' : 'span';
|
|
431
|
+
return `<${tag} class="chip st-partly" title="${title}">${label}</${closeTag}>`;
|
|
432
|
+
}
|
|
433
|
+
/** Groups a list-result's entries by id — canonical and any pending proposal share one id. */
|
|
434
|
+
function groupById(entries) {
|
|
435
|
+
const map = new Map();
|
|
436
|
+
for (const entry of entries) {
|
|
437
|
+
const list = map.get(entry.id) ?? [];
|
|
438
|
+
list.push(entry);
|
|
439
|
+
map.set(entry.id, list);
|
|
440
|
+
}
|
|
441
|
+
return map;
|
|
442
|
+
}
|
|
443
|
+
function flowHref(repo, id, kind) {
|
|
444
|
+
return `/flow?repo=${encodeURIComponent(repo)}&id=${encodeURIComponent(id)}${kind ? `&kind=${kind}` : ''}`;
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* One Flow on the Map. Answers, in about a second: what outcome does this give
|
|
448
|
+
* me, is it real, and can I trust the evidence — with signals only when there
|
|
449
|
+
* is something to say. Repetitive "Works now" is deliberately omitted: the
|
|
450
|
+
* status chip appears only when the status is NOT the ordinary "works", so its
|
|
451
|
+
* presence always carries information.
|
|
452
|
+
*/
|
|
453
|
+
function flowCard(repo, group) {
|
|
454
|
+
const canonical = group.find((view) => view.kind === 'flow');
|
|
455
|
+
const pending = group.find((view) => view.kind !== 'flow');
|
|
456
|
+
const primary = canonical ?? pending;
|
|
457
|
+
// The title always opens the canonical Storyboard when one exists — a
|
|
458
|
+
// pending update gets its OWN link (the badge below), since it needs the
|
|
459
|
+
// diff view, not the plain Storyboard.
|
|
460
|
+
const titleHref = flowHref(repo, primary.id, canonical ? undefined : pending?.kind);
|
|
461
|
+
const signals = primary.signals
|
|
462
|
+
.map((signal) => `<li class="flag${signal.tone === 'warn' ? ' flag-warn' : ''}">${signal.tone === 'bad' ? '✗' : '!'} ${escapeHtml(signal.text)}</li>`)
|
|
463
|
+
.join('\n ');
|
|
464
|
+
return `<article class="card flow-card" data-status="${escapeHtml(primary.status)}">
|
|
465
|
+
<h4 class="card-title"><a href="${titleHref}" title="open the storyboard">${escapeHtml(primary.title)}</a></h4>
|
|
466
|
+
<p class="sentence outcome">${escapeHtml(primary.outcome)}</p>
|
|
467
|
+
<div class="meta-row">
|
|
468
|
+
${canonical && canonical.status !== 'works' ? statusChip(canonical.status) : ''}
|
|
469
|
+
${primary.evidence.freshness === 'verified' ? '' : `<span class="chip" title="${escapeHtml(primary.evidence.detail)}">${escapeHtml(primary.evidence.label)}</span>`}
|
|
470
|
+
${pending ? pendingBadge(pending.kind, flowHref(repo, pending.id, pending.kind)) : ''}
|
|
471
|
+
</div>
|
|
472
|
+
${signals ? `<ul class="flags flag-list">\n ${signals}\n </ul>` : ''}
|
|
473
|
+
<p class="id" title="flow id: ${escapeHtml(primary.id)}">${escapeHtml(primary.id)}</p>
|
|
474
|
+
</article>`;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Rules rendered as their complete, unmodified text inline — never clipped to a
|
|
478
|
+
* derived label or hidden behind a click.
|
|
479
|
+
*/
|
|
480
|
+
function renderRulesCard(repo, rules, problems) {
|
|
481
|
+
const groups = [...groupById(rules).values()];
|
|
482
|
+
if (groups.length === 0 && problems === 0) {
|
|
483
|
+
return `<div class="empty">
|
|
484
|
+
<p class="empty-title">No app rules yet.</p>
|
|
485
|
+
<p class="empty-sub">Rules are things that must stay true across the whole app — Prismatica Understand proposes candidates alongside the Flows.</p>
|
|
486
|
+
</div>`;
|
|
487
|
+
}
|
|
488
|
+
const rows = groups
|
|
489
|
+
.map((group) => {
|
|
490
|
+
const canonical = group.find((view) => view.kind === 'rule');
|
|
491
|
+
const pending = group.find((view) => view.kind !== 'rule');
|
|
492
|
+
const actions = pending
|
|
493
|
+
? `<div class="need-action">
|
|
494
|
+
${flowActionForm(repo, pending.id, 'rules/approve', 'rules-approve', pending.text, canonical ? 'Approve update' : 'Approve', 'btn-primary')}
|
|
495
|
+
${flowActionForm(repo, pending.id, 'rules/dismiss', 'rules-dismiss', pending.text, 'Dismiss', 'btn-ghost')}
|
|
496
|
+
</div>`
|
|
497
|
+
: '';
|
|
498
|
+
// An update proposal shows current text vs proposed text, never just the
|
|
499
|
+
// proposed text alone.
|
|
500
|
+
const textBlock = pending && canonical && pending.text !== canonical.text
|
|
501
|
+
? `<div class="sentence" style="flex:1 1 auto">
|
|
502
|
+
<div class="t-bad">− ${escapeHtml(canonical.text)}</div>
|
|
503
|
+
<div class="t-ok">+ ${escapeHtml(pending.text)}</div>
|
|
504
|
+
</div>`
|
|
505
|
+
: `<p class="sentence" style="flex:1 1 auto">${escapeHtml((pending ?? canonical).text)}</p>`;
|
|
506
|
+
const primary = (canonical ?? pending);
|
|
507
|
+
const facts = [
|
|
508
|
+
primary.id,
|
|
509
|
+
canonical ? canonical.evidenceLabel : 'Proposed',
|
|
510
|
+
canonical && canonical.citedByFlowIds.length > 0
|
|
511
|
+
? `used by ${canonical.citedByFlowIds.length} flow${canonical.citedByFlowIds.length === 1 ? '' : 's'}`
|
|
512
|
+
: '',
|
|
513
|
+
].filter(Boolean);
|
|
514
|
+
return `<article class="release">
|
|
515
|
+
<div class="release-head">
|
|
516
|
+
${pending ? pendingBadge(pending.kind) : ''}
|
|
517
|
+
${textBlock}
|
|
518
|
+
</div>
|
|
519
|
+
<p class="id">${escapeHtml(facts.join(' · '))}</p>
|
|
520
|
+
${actions}
|
|
521
|
+
</article>`;
|
|
522
|
+
})
|
|
523
|
+
.join('\n');
|
|
524
|
+
return rows;
|
|
525
|
+
}
|
|
526
|
+
function renderFlowMap(repo, entry) {
|
|
527
|
+
const byId = groupById(entry.flows);
|
|
528
|
+
// One card per flow id (canonical plus any pending proposal), ordered and
|
|
529
|
+
// grouped by the SAME shared model the terminal uses.
|
|
530
|
+
const canonicalOrder = sortFlowViews(entry.flows.filter((view, index, all) => all.findIndex((other) => other.id === view.id) === index));
|
|
531
|
+
const journeys = groupByJourney(canonicalOrder);
|
|
532
|
+
const flowsHtml = entry.flows.length === 0
|
|
533
|
+
? `<div class="empty">
|
|
534
|
+
<p class="empty-title">No Flows yet.</p>
|
|
535
|
+
<p class="empty-sub">${escapeHtml(UNDERSTAND_CTA)} It reads this repo and hands you one command to run:</p>
|
|
536
|
+
<pre class="cmd"><code>${escapeHtml(UNDERSTAND_IMPORT_COMMAND)}</code></pre>
|
|
537
|
+
<p class="empty-sub">Whatever it drafts arrives here for you to review.</p>
|
|
538
|
+
</div>`
|
|
539
|
+
: `<div class="filters">
|
|
540
|
+
<label>Status <select id="f-status"><option value="">All</option>${Object.keys(FLOW_STATUS_LABEL).map((status) => `<option value="${status}">${escapeHtml(FLOW_STATUS_LABEL[status])}</option>`).join('')}</select></label>
|
|
541
|
+
</div>
|
|
542
|
+
${journeys
|
|
543
|
+
.map((journey) => `<h3 class="subhead">${escapeHtml(journey.title)}</h3>
|
|
544
|
+
<div class="flow-grid">${journey.flows.map((view) => flowCard(repo, byId.get(view.id) ?? [view])).join('\n')}</div>`)
|
|
545
|
+
.join('\n')}`;
|
|
546
|
+
const problemsHtml = entry.flowProblems + entry.ruleProblems > 0
|
|
547
|
+
? `<div class="flags" style="margin-top:10px"><span class="flag">${entry.flowProblems + entry.ruleProblems} file(s) could not be read — run <code>prismatica flow list</code> or <code>prismatica rules list</code> in the repo for details</span></div>`
|
|
548
|
+
: '';
|
|
549
|
+
const appWide = partitionGuardrails(entry.rules.filter((rule) => rule.kind === 'rule'));
|
|
550
|
+
return `
|
|
551
|
+
<p style="margin-bottom:18px"><a class="back" href="/understand">← All apps</a></p>
|
|
552
|
+
<section id="flow-map">
|
|
553
|
+
<div class="sec-head"><h2>${escapeHtml(entry.app)}</h2><span class="sec-sub">Flow Map — what this app does, in plain language</span></div>
|
|
554
|
+
${flowsHtml}
|
|
555
|
+
${problemsHtml}
|
|
556
|
+
</section>
|
|
557
|
+
<section id="rules">
|
|
558
|
+
<div class="sec-head"><h2>Must stay true</h2><span class="sec-sub">${appWide.flowSpecific.length > 0 ? 'guardrails across the app, and the ones specific flows name' : 'guardrails that apply across every flow'}</span></div>
|
|
559
|
+
${renderRulesCard(repo, entry.rules, entry.ruleProblems)}
|
|
560
|
+
</section>`;
|
|
561
|
+
}
|
|
562
|
+
function renderUnderstandPicker(model) {
|
|
563
|
+
if (model.understand.length === 0) {
|
|
564
|
+
return `<section><div class="sec-head"><h2>Understand</h2></div>
|
|
565
|
+
<div class="empty">
|
|
566
|
+
<p class="empty-title">No apps yet.</p>
|
|
567
|
+
<p class="empty-sub">Run <code>prismatica init</code> in a repo, then ${escapeHtml(UNDERSTAND_CTA.replace(/^Open/, 'open'))} It will draft its Flows for you to review.</p>
|
|
568
|
+
</div>
|
|
569
|
+
</section>`;
|
|
570
|
+
}
|
|
571
|
+
const cards = model.understand
|
|
572
|
+
.map((entry) => {
|
|
573
|
+
const canonicalFlows = entry.flows.filter((flow) => flow.kind === 'flow').length;
|
|
574
|
+
const pendingFlows = entry.flows.filter((flow) => flow.kind !== 'flow').length;
|
|
575
|
+
const canonicalRules = entry.rules.filter((rule) => rule.kind === 'rule').length;
|
|
576
|
+
const pendingRules = entry.rules.filter((rule) => rule.kind !== 'rule').length;
|
|
577
|
+
const pending = pendingFlows + pendingRules;
|
|
578
|
+
return `<article class="release">
|
|
579
|
+
<div class="release-head">
|
|
580
|
+
<h4 class="card-title"><a href="/understand?repo=${encodeURIComponent(entry.repo)}">${escapeHtml(entry.app)}</a></h4>
|
|
581
|
+
${entry.mode === 'map-only' ? '<span class="chip">map only</span>' : ''}
|
|
582
|
+
${pending > 0 ? `<span class="chip st-partly">${pending} to review</span>` : ''}
|
|
583
|
+
</div>
|
|
584
|
+
<p class="sentence">${canonicalFlows} flow${canonicalFlows === 1 ? '' : 's'} · ${canonicalRules} rule${canonicalRules === 1 ? '' : 's'}</p>
|
|
585
|
+
</article>`;
|
|
586
|
+
})
|
|
587
|
+
.join('\n');
|
|
588
|
+
return `<section><div class="sec-head"><h2>Understand</h2><span class="sec-sub">pick an app to see its Flow Map</span></div>${cards}</section>`;
|
|
589
|
+
}
|
|
590
|
+
function diffRow(label, current, proposed) {
|
|
591
|
+
const changed = current !== proposed;
|
|
592
|
+
return `<tr class="${changed ? 't-warn' : ''}"><th>${escapeHtml(label)}</th><td>${escapeHtml(current) || '<span class="t-muted">—</span>'}</td><td>${escapeHtml(proposed) || '<span class="t-muted">—</span>'}</td></tr>`;
|
|
593
|
+
}
|
|
594
|
+
/** A list-valued truth field (needs/rules/involves): added/removed, never a blind blob diff. */
|
|
595
|
+
function listDiffRow(label, current, proposed) {
|
|
596
|
+
const { added, removed, unchanged } = diffList(current, proposed);
|
|
597
|
+
if (added.length === 0 && removed.length === 0) {
|
|
598
|
+
return diffRow(label, current.join('; '), proposed.join('; '));
|
|
599
|
+
}
|
|
600
|
+
const parts = [
|
|
601
|
+
...unchanged.map((item) => escapeHtml(item)),
|
|
602
|
+
...added.map((item) => `<span class="t-ok">+ ${escapeHtml(item)}</span>`),
|
|
603
|
+
...removed.map((item) => `<span class="t-bad">− ${escapeHtml(item)}</span>`),
|
|
604
|
+
];
|
|
605
|
+
return `<tr class="t-warn"><th>${escapeHtml(label)}</th><td colspan="2">${parts.join(' · ')}</td></tr>`;
|
|
606
|
+
}
|
|
607
|
+
const STEP_DIFF_TAG = {
|
|
608
|
+
added: { tone: 't-ok', tag: '+ added' },
|
|
609
|
+
removed: { tone: 't-bad', tag: '− removed' },
|
|
610
|
+
unchanged: { tone: 't-muted', tag: 'unchanged' },
|
|
611
|
+
};
|
|
612
|
+
function stepDiffItem(entry) {
|
|
613
|
+
const { step } = entry;
|
|
614
|
+
const { tone, tag } = STEP_DIFF_TAG[entry.kind];
|
|
615
|
+
const fields = [
|
|
616
|
+
step.shows ? `${FLOW_STEP_FIELD.shows.label}: ${step.shows}` : null,
|
|
617
|
+
step.changes ? `${FLOW_STEP_FIELD.changes.label}: ${step.changes}` : null,
|
|
618
|
+
step.assumes.length > 0 ? `${FLOW_STEP_FIELD.assumes.label}: ${step.assumes.join('; ')}` : null,
|
|
619
|
+
].filter((line) => line !== null);
|
|
620
|
+
return `<li class="${tone}"><span class="chip">${tag}</span> <b>${escapeHtml(step.actor)}</b> ${escapeHtml(step.action)}${fields.length > 0
|
|
621
|
+
? `<div class="sentence t-muted">${fields.map((f) => escapeHtml(f)).join(' · ')}</div>`
|
|
622
|
+
: ''}</li>`;
|
|
623
|
+
}
|
|
624
|
+
/** The real per-step diff — added/removed/edited(-as-remove+add), never "N steps → M steps". */
|
|
625
|
+
function stepDiffList(current, proposed) {
|
|
626
|
+
const entries = diffSteps(current, proposed);
|
|
627
|
+
if (entries.every((entry) => entry.kind === 'unchanged')) {
|
|
628
|
+
return '<p class="sentence t-muted">No step changes.</p>';
|
|
629
|
+
}
|
|
630
|
+
return `<ul class="fixes">${entries.map((entry) => stepDiffItem(entry)).join('\n')}</ul>`;
|
|
631
|
+
}
|
|
632
|
+
function variationDiffItem(entry) {
|
|
633
|
+
if (entry.kind === 'edited') {
|
|
634
|
+
return `<li class="t-warn"><span class="chip">edited</span> <b>${escapeHtml(entry.after.name)}</b> — was: ${escapeHtml(entry.before.differs)} → now: ${escapeHtml(entry.after.differs)}</li>`;
|
|
635
|
+
}
|
|
636
|
+
const { tone, tag } = STEP_DIFF_TAG[entry.kind];
|
|
637
|
+
return `<li class="${tone}"><span class="chip">${tag}</span> <b>${escapeHtml(entry.variation.name)}</b> — ${escapeHtml(entry.variation.differs)}</li>`;
|
|
638
|
+
}
|
|
639
|
+
/** Variations are keyed by name (their natural stable identity), so edits show as edits, not remove+add. */
|
|
640
|
+
function variationDiffList(current, proposed) {
|
|
641
|
+
const entries = diffVariations(current, proposed);
|
|
642
|
+
if (entries.length === 0) {
|
|
643
|
+
return '<p class="sentence t-muted">No variations.</p>';
|
|
644
|
+
}
|
|
645
|
+
if (entries.every((entry) => entry.kind === 'unchanged')) {
|
|
646
|
+
return '<p class="sentence t-muted">No variation changes.</p>';
|
|
647
|
+
}
|
|
648
|
+
return `<ul class="fixes">${entries.map((entry) => variationDiffItem(entry)).join('\n')}</ul>`;
|
|
649
|
+
}
|
|
650
|
+
/**
|
|
651
|
+
* Display metadata lives outside the truth hash, so a rename/regroup/reorder
|
|
652
|
+
* produces an entirely empty truth diff. Showing it here — clearly marked as
|
|
653
|
+
* display, not truth — is what keeps a presentation-only update from being
|
|
654
|
+
* approved unseen.
|
|
655
|
+
*/
|
|
656
|
+
function presentationDiff(current, proposed) {
|
|
657
|
+
const entries = diffPresentation(current, proposed);
|
|
658
|
+
if (entries.length === 0) {
|
|
659
|
+
return '';
|
|
660
|
+
}
|
|
661
|
+
return `<div class="panel" style="margin-bottom:18px">
|
|
662
|
+
<p class="sentence" style="margin-bottom:8px"><b>${escapeHtml(PRESENTATION_DIFF_HEADING)}</b></p>
|
|
663
|
+
<table class="apps">
|
|
664
|
+
<thead><tr><th></th><th>Current (approved)</th><th>Proposed</th></tr></thead>
|
|
665
|
+
<tbody>
|
|
666
|
+
${entries
|
|
667
|
+
.map((entry) => diffRow(FLOW_PRESENTATION_FIELD[entry.field].label, entry.before ?? '', entry.after ?? ''))
|
|
668
|
+
.join('\n')}
|
|
669
|
+
</tbody>
|
|
670
|
+
</table></div>`;
|
|
671
|
+
}
|
|
672
|
+
function truthDiff(current, proposed, currentPresentation, proposedPresentation) {
|
|
673
|
+
return `${presentationDiff(currentPresentation, proposedPresentation)}
|
|
674
|
+
<div class="panel" style="margin-bottom:18px"><table class="apps">
|
|
675
|
+
<thead><tr><th></th><th>Current (approved)</th><th>Proposed</th></tr></thead>
|
|
676
|
+
<tbody>
|
|
677
|
+
${diffRow(FLOW_FIELD.goal.label, current.goal, proposed.goal)}
|
|
678
|
+
${diffRow(FLOW_FIELD.startsWhen.label, current.startsWhen, proposed.startsWhen)}
|
|
679
|
+
${listDiffRow(FLOW_FIELD.needs.label, current.needs, proposed.needs)}
|
|
680
|
+
${diffRow(FLOW_FIELD.endsWith.label, current.endsWith, proposed.endsWith)}
|
|
681
|
+
${listDiffRow(FLOW_FIELD.rules.label, current.rules, proposed.rules)}
|
|
682
|
+
${listDiffRow(FLOW_FIELD.involves.label, current.involves, proposed.involves)}
|
|
683
|
+
</tbody>
|
|
684
|
+
</table></div>
|
|
685
|
+
<div class="panel" style="margin-bottom:18px">
|
|
686
|
+
<p class="sentence" style="margin-bottom:8px"><b>${escapeHtml(FLOW_FIELD.steps.label)}</b></p>
|
|
687
|
+
${stepDiffList(current.steps, proposed.steps)}
|
|
688
|
+
</div>
|
|
689
|
+
<div class="panel" style="margin-bottom:18px">
|
|
690
|
+
<p class="sentence" style="margin-bottom:8px"><b>${escapeHtml(FLOW_FIELD.variations.label)}</b></p>
|
|
691
|
+
${variationDiffList(current.variations, proposed.variations)}
|
|
692
|
+
</div>`;
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* One collapsed step shows exactly six things: its number, a concise action
|
|
696
|
+
* title, who acts, what becomes visible (or "Background step" — never
|
|
697
|
+
* "Shows: Nothing"), what changes, and how it was verified. Assumptions and
|
|
698
|
+
* anything longer live inside a native <details>, so keyboard and screen-reader
|
|
699
|
+
* behaviour is the browser's, not ours.
|
|
700
|
+
*/
|
|
701
|
+
function storyboardSteps(view) {
|
|
702
|
+
return view.steps
|
|
703
|
+
.map((step) => {
|
|
704
|
+
const tone = EVIDENCE_TONE[step.evidenceState];
|
|
705
|
+
return `<li class="storystep">
|
|
706
|
+
<div class="storystep-n" aria-hidden="true">${step.number}</div>
|
|
707
|
+
<div class="storystep-body">
|
|
708
|
+
<p class="step-title"><b>${escapeHtml(step.actor)}</b> ${escapeHtml(step.title)}</p>
|
|
709
|
+
<p class="sentence${step.hasVisibleResult ? '' : ' t-muted'}">${step.hasVisibleResult ? `${escapeHtml(FLOW_STEP_FIELD.shows.label)}: ${escapeHtml(step.result)}` : escapeHtml(step.result)}</p>
|
|
710
|
+
${step.changes ? `<p class="sentence"><span class="t-muted">${escapeHtml(FLOW_STEP_FIELD.changes.label)}:</span> ${escapeHtml(step.changes)}</p>` : ''}
|
|
711
|
+
<span class="chip" style="color:${tone};border-color:${tone}" title="${escapeHtml(LAST_VERIFIED_FIELD.hint)}">${escapeHtml(step.evidenceLabel)}</span>
|
|
712
|
+
${step.assumes.length > 0 || step.resultNote
|
|
713
|
+
? `<details class="step-detail"><summary>${step.assumes.length > 0 ? 'Assumptions' : 'Details'}</summary>
|
|
714
|
+
<ul class="fixes">${[
|
|
715
|
+
...(step.resultNote
|
|
716
|
+
? [
|
|
717
|
+
`<li><b>${escapeHtml(FLOW_STEP_FIELD.shows.label)}</b> — ${escapeHtml(step.resultNote)}</li>`,
|
|
718
|
+
]
|
|
719
|
+
: []),
|
|
720
|
+
...step.assumes.map((assumption) => `<li>${escapeHtml(assumption)}</li>`),
|
|
721
|
+
].join('')}</ul>
|
|
722
|
+
</details>`
|
|
723
|
+
: ''}
|
|
724
|
+
</div>
|
|
725
|
+
</li>`;
|
|
726
|
+
})
|
|
727
|
+
.join('\n');
|
|
728
|
+
}
|
|
729
|
+
function storyboardSignals(view) {
|
|
730
|
+
if (view.signals.length === 0) {
|
|
731
|
+
return '';
|
|
732
|
+
}
|
|
733
|
+
return `<ul class="flags flag-list" style="margin-bottom:14px">${view.signals
|
|
734
|
+
.map((signal) => `<li class="flag${signal.tone === 'warn' ? ' flag-warn' : ''}">${signal.tone === 'bad' ? '✗' : '!'} ${escapeHtml(signal.text)}</li>`)
|
|
735
|
+
.join('\n')}</ul>`;
|
|
736
|
+
}
|
|
737
|
+
function renderStoryboard(repo, detail) {
|
|
738
|
+
const { view } = detail;
|
|
739
|
+
const kindNote = view.kind === 'flow'
|
|
740
|
+
? ''
|
|
741
|
+
: view.kind === 'draft'
|
|
742
|
+
? ' — new, proposed by an agent'
|
|
743
|
+
: ' — proposed update';
|
|
744
|
+
const actions = view.kind !== 'flow'
|
|
745
|
+
? `<div class="need-action" style="margin:14px 0">
|
|
746
|
+
${flowActionForm(repo, view.id, 'flow/approve', 'flow-approve', view.title, view.kind === 'update' ? 'Approve update' : 'Approve', 'btn-primary')}
|
|
747
|
+
${flowActionForm(repo, view.id, 'flow/dismiss', 'flow-dismiss', view.title, 'Keep current / dismiss', 'btn-ghost')}
|
|
748
|
+
</div>`
|
|
749
|
+
: '';
|
|
750
|
+
const nav = [
|
|
751
|
+
detail.neighbours.previous
|
|
752
|
+
? `<a class="rl" href="${flowHref(repo, detail.neighbours.previous.id)}" rel="prev">← ${escapeHtml(detail.neighbours.previous.title)}</a>`
|
|
753
|
+
: '<span></span>',
|
|
754
|
+
detail.neighbours.next
|
|
755
|
+
? `<a class="rl" href="${flowHref(repo, detail.neighbours.next.id)}" rel="next">${escapeHtml(detail.neighbours.next.title)} →</a>`
|
|
756
|
+
: '<span></span>',
|
|
757
|
+
].join('');
|
|
758
|
+
return `
|
|
759
|
+
<nav class="crumbs" aria-label="Breadcrumb"><a class="back" href="/understand">Understand</a> <span aria-hidden="true">/</span> <a class="back" href="/understand?repo=${encodeURIComponent(repo)}">Flow Map</a> <span aria-hidden="true">/</span> <span aria-current="page">${escapeHtml(view.title)}</span></nav>
|
|
760
|
+
<section>
|
|
761
|
+
<div class="sec-head"><h2>${escapeHtml(view.title)}</h2><span class="sec-sub">${escapeHtml(view.id)}${kindNote}</span></div>
|
|
762
|
+
<p class="ask" style="margin-bottom:10px">${escapeHtml(view.outcome)}</p>
|
|
763
|
+
<p class="sentence" style="margin-bottom:12px">${escapeHtml([view.statusLabel, view.evidence.label, view.evidence.detail].join(' · '))}</p>
|
|
764
|
+
${storyboardSignals(view)}
|
|
765
|
+
${view.reason ? `<p class="sentence" style="margin-bottom:12px"><span class="t-muted">Why proposed:</span> ${escapeHtml(view.reason)}</p>` : ''}
|
|
766
|
+
${view.kind === 'update' && detail.current ? `<details class="diff-detail" open><summary>What this update would change</summary>${truthDiff(detail.current.truth, detail.truth, detail.current.presentation, detail.presentation)}</details>` : ''}
|
|
767
|
+
${actions}
|
|
768
|
+
|
|
769
|
+
<h3 class="subhead">Overview</h3>
|
|
770
|
+
<dl class="overview">
|
|
771
|
+
<dt>Starts</dt><dd>${escapeHtml(view.startsWhen)}</dd>
|
|
772
|
+
${view.needs.length > 0 ? `<dt>Needs</dt><dd>${escapeHtml(view.needs.join('; '))}</dd>` : ''}
|
|
773
|
+
<dt>Ends</dt><dd>${escapeHtml(view.endsWith)}</dd>
|
|
774
|
+
</dl>
|
|
775
|
+
|
|
776
|
+
<h3 class="subhead">What happens</h3>
|
|
777
|
+
<ol class="storyboard">${storyboardSteps(view)}</ol>
|
|
778
|
+
|
|
779
|
+
${view.otherPaths.length > 0
|
|
780
|
+
? `<h3 class="subhead">Other paths</h3>
|
|
781
|
+
<p class="sentence t-muted" style="margin-bottom:8px">Alternatives through the whole flow. The record does not say which step each one branches from, so none is claimed.</p>
|
|
782
|
+
<ul class="fixes">${view.otherPaths
|
|
783
|
+
.map((path) => `<li><b>${escapeHtml(path.name)}</b> — ${escapeHtml(path.differs)}${path.statusLabel ? ` <span class="chip">${escapeHtml(path.statusLabel)}</span>` : ''}</li>`)
|
|
784
|
+
.join('\n')}</ul>
|
|
785
|
+
${detail.variationsSuggestion ? `<p class="sentence t-warn" style="margin-top:8px">${escapeHtml(detail.variationsSuggestion)}</p>` : ''}`
|
|
786
|
+
: ''}
|
|
787
|
+
|
|
788
|
+
${view.guardrails.length > 0
|
|
789
|
+
? `<h3 class="subhead">Must stay true</h3>
|
|
790
|
+
<ul class="fixes">${view.guardrails
|
|
791
|
+
.map((guardrail) => `<li>${escapeHtml(guardrail.text)}${guardrail.id && !guardrail.dangling ? ` <span class="t-muted">(${escapeHtml(guardrail.id)})</span>` : ''}${guardrail.dangling ? ' <span class="flag">no such rule</span>' : ''}</li>`)
|
|
792
|
+
.join('\n')}</ul>`
|
|
793
|
+
: ''}
|
|
794
|
+
|
|
795
|
+
${view.implementation.isEmpty
|
|
796
|
+
? ''
|
|
797
|
+
: `<details style="margin-top:18px"><summary>${escapeHtml(MECHANICS_FIELD.label)}</summary>
|
|
798
|
+
<p class="sentence t-muted">${escapeHtml(MECHANICS_FIELD.hint)}</p>
|
|
799
|
+
<ul class="fixes">
|
|
800
|
+
${view.implementation.touchpoints.length > 0 ? `<li><b>touchpoints</b> — ${escapeHtml(view.implementation.touchpoints.join(', '))}</li>` : ''}
|
|
801
|
+
${view.implementation.routes.length > 0 ? `<li><b>routes</b> — ${escapeHtml(view.implementation.routes.join(', '))}</li>` : ''}
|
|
802
|
+
${view.implementation.components.length > 0 ? `<li><b>components</b> — ${escapeHtml(view.implementation.components.join(', '))}</li>` : ''}
|
|
803
|
+
${view.implementation.entities.length > 0 ? `<li><b>entities</b> — ${escapeHtml(view.implementation.entities.join(', '))}</li>` : ''}
|
|
804
|
+
${view.implementation.tests.length > 0 ? `<li><b>tests</b> — ${escapeHtml(view.implementation.tests.join(', '))}</li>` : ''}
|
|
805
|
+
</ul>
|
|
806
|
+
</details>`}
|
|
807
|
+
|
|
808
|
+
${detail.neighbours.previous || detail.neighbours.next ? `<nav class="flow-nav" aria-label="Flows in this journey">${nav}</nav>` : ''}
|
|
809
|
+
</section>`;
|
|
810
|
+
}
|
|
811
|
+
const DARK_VARS = `
|
|
812
|
+
--bg:#101012; --panel:#1A1A1E; --panel-2:#151518; --border:#2A2A30; --border-soft:#232329;
|
|
813
|
+
--text:#EDEDEF; --text-2:#A0A0AB; --text-3:#6F6F7A;
|
|
814
|
+
--accent:#9E8CFC; --amber:#F59E0B; --amber-hover:#FBBF24; --amber-soft:#2A2013;
|
|
815
|
+
--ok:#3DD68C; --bad:#F2645A; --bad-soft:#2A1715;
|
|
816
|
+
--tier-normal-fg:#849DFF; --btn-text:#1A1205;
|
|
817
|
+
--shadow:none; --shadow-hover:0 0 0 1px var(--border);
|
|
818
|
+
`;
|
|
819
|
+
const CSS = `
|
|
820
|
+
:root{
|
|
821
|
+
--fs-xs:12.5px; --fs-sm:14px; --fs-base:16px; --fs-md:16.5px; --fs-lg:19px; --fs-xl:22px;
|
|
822
|
+
--bg:#FAFAFA; --panel:#FFFFFF; --panel-2:#F4F4F5; --border:#E4E4E7; --border-soft:#EEEEF0;
|
|
823
|
+
--text:#18181B; --text-2:#52525B; --text-3:#8A8A93;
|
|
824
|
+
--accent:#6E56CF; --amber:#B45309; --amber-hover:#92400E; --amber-soft:#FFF7ED;
|
|
825
|
+
--ok:#1D7A4F; --bad:#B4423A; --bad-soft:#FEF2F2;
|
|
826
|
+
--tier-normal-fg:#3A5CCC; --btn-text:#FFFFFF;
|
|
827
|
+
--shadow:0 1px 2px rgba(0,0,0,.04); --shadow-hover:0 2px 8px rgba(0,0,0,.07);
|
|
828
|
+
--mono:ui-monospace,'SF Mono','Cascadia Mono',Menlo,Consolas,monospace;
|
|
829
|
+
--sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',system-ui,sans-serif;
|
|
830
|
+
}
|
|
831
|
+
:root[data-theme="dark"]{${DARK_VARS}}
|
|
832
|
+
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){${DARK_VARS}}}
|
|
833
|
+
*{box-sizing:border-box;margin:0;padding:0}
|
|
834
|
+
html{color-scheme:light dark;scroll-behavior:smooth;scroll-padding-top:24px}
|
|
835
|
+
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
|
|
836
|
+
body{background:var(--bg);color:var(--text);font:var(--fs-base)/1.6 var(--sans);
|
|
837
|
+
-webkit-font-smoothing:antialiased;overflow-x:hidden}
|
|
838
|
+
/* Wide content (the board, tables, records) scrolls INSIDE its own box; the
|
|
839
|
+
page itself never scrolls sideways, at 390px or at 200% zoom. */
|
|
840
|
+
html{max-width:100%}
|
|
841
|
+
a{color:inherit}
|
|
842
|
+
code{font-family:var(--mono);font-size:.92em;background:var(--panel-2);border:1px solid var(--border-soft);border-radius:4px;padding:0 4px}
|
|
843
|
+
|
|
844
|
+
/* ── App shell ─────────────────────────────────────────────────────────── */
|
|
845
|
+
.shell{display:flex;min-height:100vh}
|
|
846
|
+
.side{width:230px;flex-shrink:0;border-right:1px solid var(--border);background:var(--panel-2);
|
|
847
|
+
padding:20px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}
|
|
848
|
+
.brand{display:flex;align-items:center;gap:8px;padding:2px 10px 12px;font-weight:600;
|
|
849
|
+
font-size:var(--fs-md);letter-spacing:-.01em}
|
|
850
|
+
.brand .gem{color:var(--accent);font-size:13px}
|
|
851
|
+
.prismline{height:2px;border-radius:1px;margin:0 10px 14px;background:linear-gradient(90deg,
|
|
852
|
+
#8B8D98,#3E63DD,#12A594,#D97706,#8E4EC6,#30A46C)}
|
|
853
|
+
.nav a{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;
|
|
854
|
+
font-size:var(--fs-sm);font-weight:500;color:var(--text-2);text-decoration:none}
|
|
855
|
+
.nav a:hover{background:var(--panel);color:var(--text)}
|
|
856
|
+
.nav a.active{background:var(--panel);color:var(--text);box-shadow:var(--shadow)}
|
|
857
|
+
.nav .n-dot{width:7px;height:7px;border-radius:50%;background:var(--text-3)}
|
|
858
|
+
.nav a[href='#needs'] .n-dot{background:#D97706}
|
|
859
|
+
.nav a[href='#work'] .n-dot{background:#3E63DD}
|
|
860
|
+
.nav a[href='#apps'] .n-dot{background:#12A594}
|
|
861
|
+
.nav a[href='#releases'] .n-dot{background:#30A46C}
|
|
862
|
+
.nav a[href='/understand'] .n-dot{background:var(--accent)}
|
|
863
|
+
.nav .badge{margin-left:auto;font-size:var(--fs-xs);font-weight:600;color:var(--text-2);
|
|
864
|
+
background:var(--panel);border:1px solid var(--border);border-radius:10px;
|
|
865
|
+
min-width:20px;text-align:center;padding:0 6px;line-height:18px}
|
|
866
|
+
.nav .badge.hot{background:var(--amber-soft);border-color:var(--amber);color:var(--amber)}
|
|
867
|
+
.side-controls{margin-top:14px;padding:12px 10px 0;border-top:1px solid var(--border);
|
|
868
|
+
display:flex;flex-direction:column;gap:8px}
|
|
869
|
+
.ctl-btn{font:500 var(--fs-sm) var(--sans);color:var(--text-2);background:var(--panel);
|
|
870
|
+
border:1px solid var(--border);border-radius:6px;padding:6px 10px;cursor:pointer;text-align:left}
|
|
871
|
+
.ctl-btn:hover{color:var(--text)}
|
|
872
|
+
.ctl-toggle{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--text-2);cursor:pointer;padding:0 2px}
|
|
873
|
+
.ctl-toggle input{accent-color:var(--accent)}
|
|
874
|
+
.side-foot{margin-top:auto;padding:12px 10px 0;font-size:var(--fs-xs);color:var(--text-3);line-height:1.7}
|
|
875
|
+
.side-foot a{color:var(--text-2)}
|
|
876
|
+
|
|
877
|
+
/* ── Main column ───────────────────────────────────────────────────────── */
|
|
878
|
+
main{flex:1;min-width:0;padding:28px 32px 96px;max-width:1320px}
|
|
879
|
+
section{margin-bottom:44px;scroll-margin-top:24px}
|
|
880
|
+
.sec-head{display:flex;align-items:baseline;gap:10px;margin-bottom:14px;flex-wrap:wrap}
|
|
881
|
+
.sec-head h2{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.01em}
|
|
882
|
+
.sec-head .sec-sub{font-size:var(--fs-sm);color:var(--text-3)}
|
|
883
|
+
.subhead{font-size:var(--fs-sm);font-weight:600;color:var(--text-2);margin:22px 0 10px}
|
|
884
|
+
|
|
885
|
+
/* ── Shared atoms ──────────────────────────────────────────────────────── */
|
|
886
|
+
.meta-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
|
|
887
|
+
.chip{font-size:var(--fs-xs);font-weight:500;line-height:19px;border-radius:5px;padding:0 7px;
|
|
888
|
+
border:1px solid var(--border);color:var(--text-2);background:var(--panel);white-space:nowrap}
|
|
889
|
+
a.chip:hover{text-decoration:underline}
|
|
890
|
+
.app-chip{background:var(--panel-2)}
|
|
891
|
+
.tier-heavy{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent);background:var(--bad-soft);font-weight:600}
|
|
892
|
+
.tier-normal{color:var(--tier-normal-fg);border-color:color-mix(in srgb,var(--tier-normal-fg) 40%,transparent)}
|
|
893
|
+
.st-open{color:var(--text-2)} .st-partly{color:var(--amber);border-color:var(--amber)}
|
|
894
|
+
.st-proven{color:var(--ok);border-color:var(--ok)}
|
|
895
|
+
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}
|
|
896
|
+
.pill{font-size:var(--fs-xs);font-weight:500;border:1px solid var(--border);border-radius:12px;
|
|
897
|
+
padding:2px 10px;color:var(--text-2);white-space:nowrap}
|
|
898
|
+
.pill-ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent)}
|
|
899
|
+
.pill-bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent);background:var(--bad-soft)}
|
|
900
|
+
.flag{font-size:var(--fs-xs);font-weight:500;color:var(--bad);background:var(--bad-soft);
|
|
901
|
+
border:1px solid color-mix(in srgb,var(--bad) 30%,transparent);border-radius:5px;
|
|
902
|
+
padding:1px 6px;line-height:1.5;display:inline-block;margin:1px 4px 1px 0;overflow-wrap:anywhere}
|
|
903
|
+
.links{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px;row-gap:3px;
|
|
904
|
+
font-size:var(--fs-sm);min-width:0}
|
|
905
|
+
.links-label{color:var(--text-3)}
|
|
906
|
+
.rl{color:var(--text-2);text-decoration:underline;text-decoration-color:var(--border);
|
|
907
|
+
text-underline-offset:3px;white-space:nowrap}
|
|
908
|
+
.rl:hover{color:var(--accent);text-decoration-color:var(--accent)}
|
|
909
|
+
.sentence{font-size:var(--fs-sm);color:var(--text-2);overflow-wrap:anywhere}
|
|
910
|
+
.t-ok{color:var(--ok)} .t-bad{color:var(--bad)} .t-warn{color:var(--amber)} .t-muted{color:var(--text-3)}
|
|
911
|
+
.empty{border:1px dashed var(--border);border-radius:10px;padding:22px 24px}
|
|
912
|
+
.empty-title{font-weight:500;font-size:var(--fs-md)}
|
|
913
|
+
.empty-sub{font-size:var(--fs-sm);color:var(--text-3);margin-top:3px}
|
|
914
|
+
.btn-primary{font:600 var(--fs-sm) var(--sans);color:var(--btn-text);background:var(--amber);border:none;
|
|
915
|
+
border-radius:7px;padding:8px 16px;cursor:pointer;white-space:nowrap;box-shadow:var(--shadow)}
|
|
916
|
+
.btn-primary:hover{background:var(--amber-hover)}
|
|
917
|
+
.btn-ghost{font:600 var(--fs-sm) var(--sans);color:var(--text-2);background:transparent;
|
|
918
|
+
border:1px solid var(--border);border-radius:7px;padding:7px 14px;cursor:pointer;white-space:nowrap}
|
|
919
|
+
.btn-ghost:hover{color:var(--text);border-color:var(--text-3)}
|
|
920
|
+
|
|
921
|
+
/* ── Needs you ─────────────────────────────────────────────────────────── */
|
|
922
|
+
.need{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
|
|
923
|
+
background:var(--panel);border:1px solid var(--border);border-radius:10px;
|
|
924
|
+
padding:16px 20px;margin-bottom:10px;box-shadow:var(--shadow);border-left:3px solid #D97706}
|
|
925
|
+
.need-body{min-width:0;flex:1 1 380px;display:flex;flex-direction:column;gap:7px}
|
|
926
|
+
.ask{font-size:var(--fs-md);max-width:72ch;overflow-wrap:anywhere}
|
|
927
|
+
.need-action{flex-shrink:0;display:flex;gap:8px;flex-wrap:wrap}
|
|
928
|
+
|
|
929
|
+
/* ── Work board ────────────────────────────────────────────────────────── */
|
|
930
|
+
.filters{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:14px;font-size:var(--fs-sm);color:var(--text-2)}
|
|
931
|
+
.app-scope{align-items:center;gap:10px;margin-bottom:20px;padding:10px 14px;border:1px solid var(--line);
|
|
932
|
+
border-radius:10px;background:var(--panel)}
|
|
933
|
+
.app-scope label{font-weight:600;color:var(--text)}
|
|
934
|
+
.scope-note{color:var(--text-2)}
|
|
935
|
+
.filter-empty{margin-top:10px}
|
|
936
|
+
.filters label{display:flex;align-items:center;gap:6px}
|
|
937
|
+
.filters select{font:var(--fs-sm) var(--sans);color:var(--text);background:var(--panel);
|
|
938
|
+
border:1px solid var(--border);border-radius:6px;padding:4px 6px}
|
|
939
|
+
.board{display:grid;grid-template-columns:repeat(6,minmax(176px,1fr));gap:10px;
|
|
940
|
+
overflow-x:auto;padding-bottom:8px}
|
|
941
|
+
.col{background:var(--panel-2);border:1px solid var(--border-soft);border-radius:10px;padding:8px;min-width:0}
|
|
942
|
+
.col-head{display:flex;align-items:center;gap:7px;font-size:var(--fs-sm);font-weight:600;
|
|
943
|
+
color:var(--text-2);padding:4px 6px 8px;cursor:default}
|
|
944
|
+
.col-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
945
|
+
.count{margin-left:auto;font-size:var(--fs-xs);font-weight:600;color:var(--text-3);
|
|
946
|
+
background:var(--panel);border:1px solid var(--border);border-radius:9px;
|
|
947
|
+
min-width:18px;text-align:center;line-height:17px;padding:0 5px}
|
|
948
|
+
.col-body{display:flex;flex-direction:column;gap:8px}
|
|
949
|
+
.col-empty{font-size:var(--fs-sm);color:var(--text-3);padding:6px}
|
|
950
|
+
.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;
|
|
951
|
+
padding:11px 12px;box-shadow:var(--shadow);min-width:0;display:flex;flex-direction:column;gap:7px}
|
|
952
|
+
.card:hover{box-shadow:var(--shadow-hover)}
|
|
953
|
+
.card-title{font-size:var(--fs-md);font-weight:600;line-height:1.4;overflow-wrap:anywhere}
|
|
954
|
+
.card-title a{color:inherit;text-decoration:none}
|
|
955
|
+
.card-title a:hover{color:var(--accent);text-decoration:underline}
|
|
956
|
+
.flags{min-width:0}
|
|
957
|
+
.id{font-family:var(--mono);font-size:var(--fs-xs);color:var(--text-3);
|
|
958
|
+
overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
959
|
+
|
|
960
|
+
/* ── Apps table ────────────────────────────────────────────────────────── */
|
|
961
|
+
.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;
|
|
962
|
+
box-shadow:var(--shadow);overflow-x:auto}
|
|
963
|
+
table.apps{width:100%;border-collapse:collapse}
|
|
964
|
+
table.apps th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;font-weight:600;
|
|
965
|
+
color:var(--text-3);text-align:left;padding:11px 16px;border-bottom:1px solid var(--border)}
|
|
966
|
+
table.apps td{padding:14px 16px;border-bottom:1px solid var(--border-soft);vertical-align:top;font-size:var(--fs-sm)}
|
|
967
|
+
table.apps tr:last-child td{border-bottom:none}
|
|
968
|
+
.cell-app .app-name{font-weight:600;font-size:var(--fs-md)}
|
|
969
|
+
.app-remove{margin-top:4px}
|
|
970
|
+
.btn-remove{font:500 var(--fs-xs) var(--sans);color:var(--text-3);background:transparent;
|
|
971
|
+
border:none;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
|
|
972
|
+
.btn-remove:hover{color:var(--bad)}
|
|
973
|
+
.cell-flags{max-width:320px}
|
|
974
|
+
details summary{cursor:pointer;font-size:var(--fs-sm);color:var(--text-2)}
|
|
975
|
+
details summary:hover{color:var(--text)}
|
|
976
|
+
.fixes{margin:8px 0 0 18px;font-size:var(--fs-sm);color:var(--text-2)}
|
|
977
|
+
.fixes li{margin-bottom:3px}
|
|
978
|
+
.fix-note{font-size:var(--fs-sm);margin-top:6px}
|
|
979
|
+
|
|
980
|
+
/* ── Understand: Flow Map + Storyboard ────────────────────────────────────── */
|
|
981
|
+
.flow-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
|
|
982
|
+
.flow-grid .flow-card{padding:14px 16px;min-width:0}
|
|
983
|
+
.storyboard{display:flex;flex-direction:column;gap:0;margin:14px 0}
|
|
984
|
+
.storystep{display:flex;gap:14px;padding:10px 0;border-left:2px solid var(--border);margin-left:10px;padding-left:16px}
|
|
985
|
+
.storystep-n{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--panel-2);margin-left:-27px;
|
|
986
|
+
border:1px solid var(--border);font-size:var(--fs-xs);font-weight:600;color:var(--text-2);
|
|
987
|
+
display:flex;align-items:center;justify-content:center}
|
|
988
|
+
.storystep-body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
|
|
989
|
+
.storystep-body p{overflow-wrap:anywhere}
|
|
990
|
+
|
|
991
|
+
/* ── Releases ──────────────────────────────────────────────────────────── */
|
|
992
|
+
.release,.intent{background:var(--panel);border:1px solid var(--border);border-radius:10px;
|
|
993
|
+
padding:14px 18px;margin-bottom:10px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:7px}
|
|
994
|
+
.release-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-width:0}
|
|
995
|
+
.intent-checks{margin:0;padding-left:20px;color:var(--text-2);font-size:var(--fs-sm);
|
|
996
|
+
display:flex;flex-direction:column;gap:4px}
|
|
997
|
+
|
|
998
|
+
/* ── Record page ───────────────────────────────────────────────────────── */
|
|
999
|
+
pre.cmd{background:var(--panel);border:1px solid var(--border);border-radius:10px;
|
|
1000
|
+
padding:14px 16px;overflow-x:auto;font:var(--fs-sm)/1.6 var(--mono);
|
|
1001
|
+
white-space:pre-wrap;word-break:break-word;user-select:all;margin:10px 0}
|
|
1002
|
+
pre.record{background:var(--panel);border:1px solid var(--border);border-radius:10px;
|
|
1003
|
+
padding:20px;overflow-x:auto;font:var(--fs-sm)/1.65 var(--mono);white-space:pre-wrap;
|
|
1004
|
+
overflow-wrap:anywhere;box-shadow:var(--shadow)}
|
|
1005
|
+
a.back{font-size:var(--fs-sm);color:var(--text-2)}
|
|
1006
|
+
.msg{font-size:var(--fs-md);max-width:72ch}
|
|
1007
|
+
|
|
1008
|
+
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}
|
|
1009
|
+
/* Meaning never rides on colour alone: every flag carries ✗ or !, every chip
|
|
1010
|
+
carries its own words, and evidence tone always accompanies a text label. */
|
|
1011
|
+
|
|
1012
|
+
/* ── Understand: signals, overview, journey navigation ─────────────────── */
|
|
1013
|
+
.flag-list{list-style:none;display:flex;flex-direction:column;gap:4px;margin:2px 0}
|
|
1014
|
+
.flag-warn{color:var(--amber);background:var(--amber-soft);
|
|
1015
|
+
border-color:color-mix(in srgb,var(--amber) 30%,transparent)}
|
|
1016
|
+
.outcome{color:var(--text);font-size:var(--fs-sm)}
|
|
1017
|
+
.crumbs{font-size:var(--fs-sm);color:var(--text-3);margin-bottom:18px;
|
|
1018
|
+
display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}
|
|
1019
|
+
.overview{display:grid;grid-template-columns:minmax(5.5rem,auto) 1fr;gap:6px 16px;
|
|
1020
|
+
font-size:var(--fs-sm);margin-bottom:6px}
|
|
1021
|
+
.overview dt{color:var(--text-3);font-weight:600}
|
|
1022
|
+
.overview dd{overflow-wrap:anywhere}
|
|
1023
|
+
.step-title{overflow-wrap:anywhere}
|
|
1024
|
+
/* A chip sizes to its text; a flex column would otherwise stretch it edge to edge. */
|
|
1025
|
+
.storystep-body .chip,.storystep-body details{align-self:flex-start}
|
|
1026
|
+
.step-detail,.diff-detail{min-width:0}
|
|
1027
|
+
.step-detail summary,.diff-detail summary{
|
|
1028
|
+
min-height:44px;display:flex;align-items:center;min-width:0;overflow-wrap:anywhere}
|
|
1029
|
+
.flow-nav{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;
|
|
1030
|
+
margin-top:28px;padding-top:14px;border-top:1px solid var(--border)}
|
|
1031
|
+
.flow-nav a{min-height:44px;display:flex;align-items:center;white-space:normal}
|
|
1032
|
+
.nav a,.ctl-btn,.btn-primary,.btn-ghost,.filters select{min-height:44px}
|
|
1033
|
+
.nav a,.ctl-btn{align-items:center}
|
|
1034
|
+
@media (max-width:520px){
|
|
1035
|
+
.btn-primary,.btn-ghost{flex:1 1 auto}
|
|
1036
|
+
.overview{grid-template-columns:1fr;gap:2px 0}
|
|
1037
|
+
.overview dd{margin-bottom:8px}
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
/* ── Responsive ────────────────────────────────────────────────────────── */
|
|
1041
|
+
@media (max-width:860px){
|
|
1042
|
+
.shell{flex-direction:column}
|
|
1043
|
+
.side{position:static;width:100%;height:auto;flex-direction:row;align-items:center;gap:2px;
|
|
1044
|
+
padding:10px 12px;border-right:none;border-bottom:1px solid var(--border);overflow-x:auto}
|
|
1045
|
+
.brand{padding:0 8px 0 0;white-space:nowrap}
|
|
1046
|
+
.prismline,.side-controls,.side-foot{display:none}
|
|
1047
|
+
.nav{display:flex;gap:2px}
|
|
1048
|
+
.nav a{white-space:nowrap;padding:6px 9px}
|
|
1049
|
+
main{padding:20px 14px 72px;max-width:100%}
|
|
1050
|
+
.board{grid-template-columns:repeat(6,236px)}
|
|
1051
|
+
.flow-grid{grid-template-columns:1fr}
|
|
1052
|
+
.need{align-items:flex-start}
|
|
1053
|
+
}
|
|
1054
|
+
`;
|
|
1055
|
+
const PAGE_JS = `
|
|
1056
|
+
(function(){
|
|
1057
|
+
// The decisions above, verbatim — one implementation, unit-tested in
|
|
1058
|
+
// board.test.ts rather than only exercised through a browser.
|
|
1059
|
+
${keepIfStillOffered.toString()}
|
|
1060
|
+
${badgeText.toString()}
|
|
1061
|
+
${showFilterEmpty.toString()}
|
|
1062
|
+
${showGroup.toString()}
|
|
1063
|
+
var root=document.documentElement;
|
|
1064
|
+
var THEMES=['auto','light','dark'];
|
|
1065
|
+
var THEME_LABEL={auto:'\\u25D0 Theme: Auto',light:'\\u2600 Theme: Light',dark:'\\u263E Theme: Dark'};
|
|
1066
|
+
function getTheme(){try{return localStorage.getItem('prismatica-theme')||'auto';}catch(e){return 'auto';}}
|
|
1067
|
+
function applyTheme(mode){
|
|
1068
|
+
if(mode==='auto') root.removeAttribute('data-theme'); else root.setAttribute('data-theme',mode);
|
|
1069
|
+
var b=document.getElementById('theme-toggle'); if(b) b.textContent=THEME_LABEL[mode];
|
|
1070
|
+
}
|
|
1071
|
+
var tb=document.getElementById('theme-toggle');
|
|
1072
|
+
if(tb) tb.addEventListener('click',function(){
|
|
1073
|
+
var next=THEMES[(THEMES.indexOf(getTheme())+1)%THEMES.length];
|
|
1074
|
+
try{localStorage.setItem('prismatica-theme',next);}catch(e){}
|
|
1075
|
+
applyTheme(next);
|
|
1076
|
+
});
|
|
1077
|
+
applyTheme(getTheme());
|
|
1078
|
+
|
|
1079
|
+
// Filters + confirm dialogs — rebound after each partial refresh.
|
|
1080
|
+
//
|
|
1081
|
+
// ONE filter, extended: the app selector governs every section that carries
|
|
1082
|
+
// a data-app, and the work board's own tier/intent selectors narrow further
|
|
1083
|
+
// within it. A second, section-specific filter would eventually disagree
|
|
1084
|
+
// with this one about what "showing app X" means.
|
|
1085
|
+
var SECTIONS=[
|
|
1086
|
+
{id:'needs',sel:'#needs .need'},
|
|
1087
|
+
{id:'work',sel:'#work .card'},
|
|
1088
|
+
{id:'apps',sel:'#apps tr[data-app]'},
|
|
1089
|
+
{id:'releases',sel:'#releases .release, #releases .intent'}
|
|
1090
|
+
];
|
|
1091
|
+
function applyFilters(){
|
|
1092
|
+
var app=document.getElementById('f-app'),tier=document.getElementById('f-tier'),intent=document.getElementById('f-intent');
|
|
1093
|
+
var scope=app&&app.value?app.value:'';
|
|
1094
|
+
document.querySelectorAll('[data-app]').forEach(function(el){
|
|
1095
|
+
var show=!scope||el.dataset.app===scope;
|
|
1096
|
+
// Work cards additionally answer to risk and intent.
|
|
1097
|
+
if(show&&el.classList.contains('card')){
|
|
1098
|
+
show=(!tier||!tier.value||el.dataset.tier===tier.value)
|
|
1099
|
+
&&(!intent||!intent.value||el.dataset.intent===intent.value);
|
|
1100
|
+
}
|
|
1101
|
+
el.style.display=show?'':'none';
|
|
1102
|
+
});
|
|
1103
|
+
// A subhead must never outlive its own cards. It carries no data-app of
|
|
1104
|
+
// its own (a group spans every app), so the loop above cannot reach it.
|
|
1105
|
+
document.querySelectorAll('.rel-group').forEach(function(group){
|
|
1106
|
+
var displays=[];
|
|
1107
|
+
group.querySelectorAll('.release,.intent').forEach(function(el){ displays.push(el.style.display); });
|
|
1108
|
+
group.style.display=showGroup(displays)?'':'none';
|
|
1109
|
+
});
|
|
1110
|
+
// Recount what is actually visible NOW, from the live DOM — never from a
|
|
1111
|
+
// number the server rendered before any of this was hidden.
|
|
1112
|
+
document.querySelectorAll('#work .col').forEach(function(col){
|
|
1113
|
+
var visible=0;
|
|
1114
|
+
col.querySelectorAll('.card').forEach(function(card){ if(card.style.display!=='none') visible++; });
|
|
1115
|
+
var count=col.querySelector('.count'); if(count) count.textContent=String(visible);
|
|
1116
|
+
});
|
|
1117
|
+
SECTIONS.forEach(function(section){
|
|
1118
|
+
var all=document.querySelectorAll(section.sel), visible=0;
|
|
1119
|
+
all.forEach(function(el){ if(el.style.display!=='none') visible++; });
|
|
1120
|
+
var badge=document.getElementById('badge-'+section.id);
|
|
1121
|
+
if(badge){
|
|
1122
|
+
if(badge.dataset.total===undefined) badge.dataset.total=badge.textContent;
|
|
1123
|
+
badge.textContent=badgeText(scope,visible,badge.dataset.total);
|
|
1124
|
+
}
|
|
1125
|
+
var empty=document.getElementById('fe-'+section.id);
|
|
1126
|
+
if(empty) empty.hidden=!showFilterEmpty(visible,all.length);
|
|
1127
|
+
});
|
|
1128
|
+
var status=document.getElementById('f-status');
|
|
1129
|
+
document.querySelectorAll('.flow-card').forEach(function(card){
|
|
1130
|
+
var show=!status||!status.value||card.dataset.status===status.value;
|
|
1131
|
+
card.style.display=show?'':'none';
|
|
1132
|
+
});
|
|
1133
|
+
}
|
|
1134
|
+
var CONFIRM_MSG={
|
|
1135
|
+
reject:'Request changes on {q}?\\n\\nThis records a signed rejection and sends the change back to the builder.',
|
|
1136
|
+
forget:'Remove {q} from the board?\\n\\nThis only forgets the pointer. The repo and its records are untouched.',
|
|
1137
|
+
'flow-approve':'Approve the flow "{q}"?\\n\\nThis writes it as the app\\'s current truth (signed, if this app is governed).',
|
|
1138
|
+
'flow-dismiss':'Dismiss this proposal for "{q}"?\\n\\nNothing changes — the current flow (if any) stays exactly as it is.',
|
|
1139
|
+
'rules-approve':'Approve this rule?\\n\\n"{q}"\\n\\nThis writes it as one of the app\\'s current rules (signed, if this app is governed).',
|
|
1140
|
+
'rules-dismiss':'Dismiss this rule proposal?\\n\\n"{q}"\\n\\nNothing changes.',
|
|
1141
|
+
approve:'Approve {q}?\\n\\nThis signs a decision over its exact diff and writes it into the repo.'
|
|
1142
|
+
};
|
|
1143
|
+
function initMain(){
|
|
1144
|
+
['f-app','f-tier','f-intent','f-status'].forEach(function(id){
|
|
1145
|
+
var el=document.getElementById(id); if(el) el.addEventListener('change',applyFilters);
|
|
1146
|
+
});
|
|
1147
|
+
document.querySelectorAll('form[data-confirm]').forEach(function(form){
|
|
1148
|
+
form.addEventListener('submit',function(event){
|
|
1149
|
+
var kind=form.getAttribute('data-confirm'), title=form.getAttribute('data-title')||'this change';
|
|
1150
|
+
var q='\\u201C'+title+'\\u201D';
|
|
1151
|
+
var msg=(CONFIRM_MSG[kind]||CONFIRM_MSG.approve).split('{q}').join(q);
|
|
1152
|
+
if(!window.confirm(msg)) event.preventDefault();
|
|
1153
|
+
});
|
|
1154
|
+
});
|
|
1155
|
+
onScroll();
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
// Sidebar highlight. A clicked tab is PINNED (stays lit) until you actually
|
|
1159
|
+
// scroll — so it works even when the page is too short to scroll. Free
|
|
1160
|
+
// scrolling then picks the section nearest the top; the bottom-snap for the
|
|
1161
|
+
// last section only applies when the page is genuinely scrollable (otherwise a
|
|
1162
|
+
// short/empty board, which always "sits at the bottom", would force Releases).
|
|
1163
|
+
var navLinks=[].slice.call(document.querySelectorAll('.nav a[href^="#"]'));
|
|
1164
|
+
var pinned=null;
|
|
1165
|
+
function setActive(id){
|
|
1166
|
+
navLinks.forEach(function(l){ l.classList.toggle('active', l.getAttribute('href')==='#'+id); });
|
|
1167
|
+
}
|
|
1168
|
+
function fromScroll(){
|
|
1169
|
+
var sections=[].slice.call(document.querySelectorAll('main section[id]'));
|
|
1170
|
+
if(!sections.length||!navLinks.length) return;
|
|
1171
|
+
var y=window.scrollY+88, current=sections[0].id;
|
|
1172
|
+
sections.forEach(function(s){ if(s.offsetTop<=y) current=s.id; });
|
|
1173
|
+
var doc=document.documentElement;
|
|
1174
|
+
var scrollable=doc.scrollHeight>window.innerHeight+8;
|
|
1175
|
+
if(scrollable && window.innerHeight+window.scrollY>=doc.scrollHeight-4) current=sections[sections.length-1].id;
|
|
1176
|
+
setActive(current);
|
|
1177
|
+
}
|
|
1178
|
+
function onScroll(){ if(pinned){ setActive(pinned); } else { fromScroll(); } }
|
|
1179
|
+
window.addEventListener('scroll',onScroll,{passive:true});
|
|
1180
|
+
window.addEventListener('resize',onScroll);
|
|
1181
|
+
['wheel','touchmove'].forEach(function(ev){ window.addEventListener(ev,function(){ pinned=null; },{passive:true}); });
|
|
1182
|
+
window.addEventListener('keydown',function(e){
|
|
1183
|
+
if(['ArrowUp','ArrowDown','PageUp','PageDown','Home','End',' '].indexOf(e.key)>-1) pinned=null;
|
|
1184
|
+
});
|
|
1185
|
+
navLinks.forEach(function(l){
|
|
1186
|
+
l.addEventListener('click',function(){ pinned=l.getAttribute('href').slice(1); setActive(pinned); });
|
|
1187
|
+
});
|
|
1188
|
+
|
|
1189
|
+
// Auto-refresh — swap only <main>, keeping the sidebar, scroll, and filters.
|
|
1190
|
+
var timer=null;
|
|
1191
|
+
function autoOn(){try{return localStorage.getItem('prismatica-autorefresh')==='1';}catch(e){return false;}}
|
|
1192
|
+
async function refresh(){
|
|
1193
|
+
try{
|
|
1194
|
+
var keep={};['f-app','f-tier','f-intent'].forEach(function(id){var el=document.getElementById(id);if(el)keep[id]=el.value;});
|
|
1195
|
+
var res=await fetch(location.pathname); var text=await res.text();
|
|
1196
|
+
var doc=new DOMParser().parseFromString(text,'text/html'); var fresh=doc.querySelector('main');
|
|
1197
|
+
if(fresh){
|
|
1198
|
+
document.querySelector('main').replaceWith(fresh);
|
|
1199
|
+
initMain();
|
|
1200
|
+
Object.keys(keep).forEach(function(id){
|
|
1201
|
+
var el=document.getElementById(id); if(!el) return;
|
|
1202
|
+
// Restore the selection ONLY if the replacement still offers it: an
|
|
1203
|
+
// app the owner removed (or a filter value no longer present) would
|
|
1204
|
+
// otherwise leave the select showing a value it does not have, and
|
|
1205
|
+
// every section filtered to nothing with no way back.
|
|
1206
|
+
var offered=Array.prototype.map.call(el.options,function(o){return o.value;});
|
|
1207
|
+
el.value=keepIfStillOffered(offered,keep[id]);
|
|
1208
|
+
});
|
|
1209
|
+
// Recount against the REPLACEMENT DOM, not the one that was measured
|
|
1210
|
+
// before the swap.
|
|
1211
|
+
applyFilters();
|
|
1212
|
+
}
|
|
1213
|
+
var f=document.getElementById('updated-at'); if(f) f.textContent='updated '+new Date().toTimeString().slice(0,8);
|
|
1214
|
+
}catch(e){}
|
|
1215
|
+
}
|
|
1216
|
+
function setAuto(on){
|
|
1217
|
+
try{localStorage.setItem('prismatica-autorefresh',on?'1':'0');}catch(e){}
|
|
1218
|
+
var cb=document.getElementById('autorefresh'); if(cb) cb.checked=on;
|
|
1219
|
+
if(timer){clearInterval(timer);timer=null;}
|
|
1220
|
+
if(on) timer=setInterval(refresh,10000);
|
|
1221
|
+
}
|
|
1222
|
+
var cb=document.getElementById('autorefresh');
|
|
1223
|
+
if(cb){ cb.addEventListener('change',function(){setAuto(cb.checked);}); setAuto(autoOn()); }
|
|
1224
|
+
|
|
1225
|
+
initMain();
|
|
1226
|
+
})();
|
|
1227
|
+
`;
|
|
1228
|
+
const THEME_BOOT = `(function(){try{var t=localStorage.getItem('prismatica-theme');if(t&&t!=='auto')document.documentElement.setAttribute('data-theme',t);}catch(e){}})();`;
|
|
1229
|
+
function sideNav(model, active) {
|
|
1230
|
+
// `section` gives the filter a stable handle: the sidebar is NOT replaced by
|
|
1231
|
+
// the auto-refresh, so these are updated in place rather than re-rendered.
|
|
1232
|
+
const badge = (count, hot = false, section) => `<span class="badge${hot && count > 0 ? ' hot' : ''}"${section ? ` id="badge-${section}"` : ''}>${count}</span>`;
|
|
1233
|
+
if (!model) {
|
|
1234
|
+
return `<aside class="side">
|
|
1235
|
+
<div class="brand"><span class="gem">◆</span> Prismatica</div>
|
|
1236
|
+
<div class="prismline"></div>
|
|
1237
|
+
<nav class="nav" aria-label="Sections"><a href="/">← Back to the board</a></nav>
|
|
1238
|
+
<div class="side-controls"><button id="theme-toggle" class="ctl-btn" type="button">◐ Theme: Auto</button></div>
|
|
1239
|
+
<div class="side-foot">local only (127.0.0.1)</div>
|
|
1240
|
+
</aside>`;
|
|
1241
|
+
}
|
|
1242
|
+
const needsYouTotal = model.needsYou.length + model.understandPending;
|
|
1243
|
+
const needsYouTitle = model.understandPending > 0
|
|
1244
|
+
? `${model.needsYou.length} decision(s) here, plus ${model.understandPending} Flow/Rule proposal(s) to review in Understand`
|
|
1245
|
+
: '';
|
|
1246
|
+
return `<aside class="side">
|
|
1247
|
+
<div class="brand"><span class="gem">◆</span> Prismatica</div>
|
|
1248
|
+
<div class="prismline" title="white light in, six states out: planned · being built · being proven · waiting on you · shipping · live"></div>
|
|
1249
|
+
<nav class="nav" aria-label="Sections">
|
|
1250
|
+
<!--
|
|
1251
|
+
No "Start" link. Starting a change begins in the owner's coding agent,
|
|
1252
|
+
not on this page, and the guidance for it is an empty state that only
|
|
1253
|
+
appears when nothing is in flight — so a permanent nav entry would
|
|
1254
|
+
point at a section that is usually not there. The sidebar is also NOT
|
|
1255
|
+
replaced by the auto-refresh, so a conditional link would go stale the
|
|
1256
|
+
moment the first change appeared. Every entry below is a real
|
|
1257
|
+
destination that is always present.
|
|
1258
|
+
-->
|
|
1259
|
+
<a href="${active === 'understand' ? '/#needs' : '#needs'}" title="${escapeHtml(needsYouTitle)}"><span class="n-dot"></span>Needs you ${badge(needsYouTotal, true, 'needs')}</a>
|
|
1260
|
+
<a href="${active === 'understand' ? '/#work' : '#work'}"><span class="n-dot"></span>Work ${badge(model.cards.length, false, 'work')}</a>
|
|
1261
|
+
<a href="${active === 'understand' ? '/#apps' : '#apps'}"><span class="n-dot"></span>Apps ${badge(model.apps.length, false, 'apps')}</a>
|
|
1262
|
+
<a href="${active === 'understand' ? '/#releases' : '#releases'}"><span class="n-dot"></span>Releases ${badge(model.releases.length + model.pendingVerification.length + model.legacyReleases.length, false, 'releases')}</a>
|
|
1263
|
+
<a href="/understand" class="${active === 'understand' ? 'active' : ''}" title="what each app does, in plain language — Flows and Rules"><span class="n-dot"></span>Understand ${badge(model.understandPending, true)}</a>
|
|
1264
|
+
</nav>
|
|
1265
|
+
<div class="side-controls">
|
|
1266
|
+
<button id="theme-toggle" class="ctl-btn" type="button" title="Switch theme (Auto follows your system)">◐ Theme: Auto</button>
|
|
1267
|
+
<label class="ctl-toggle"><input type="checkbox" id="autorefresh"> Auto-refresh (10s)</label>
|
|
1268
|
+
</div>
|
|
1269
|
+
<div class="side-foot">${model.repos} repo${model.repos === 1 ? '' : 's'} · read at ${escapeHtml(model.generatedAt.slice(11, 19))} UTC<br><span id="updated-at"></span><br><a href="/">Refresh</a> · local only (127.0.0.1)</div>
|
|
1270
|
+
</aside>`;
|
|
1271
|
+
}
|
|
1272
|
+
export function pageShell(title, main, model, active) {
|
|
1273
|
+
return `<!doctype html>
|
|
1274
|
+
<html lang="en">
|
|
1275
|
+
<head>
|
|
1276
|
+
<meta charset="utf-8">
|
|
1277
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
1278
|
+
<meta name="color-scheme" content="light dark">
|
|
1279
|
+
<title>${escapeHtml(title)}</title>
|
|
1280
|
+
<script>${THEME_BOOT}</script>
|
|
1281
|
+
<style>${CSS}</style>
|
|
1282
|
+
</head>
|
|
1283
|
+
<body>
|
|
1284
|
+
<div class="shell">
|
|
1285
|
+
${sideNav(model, active)}
|
|
1286
|
+
<main>
|
|
1287
|
+
${main}
|
|
1288
|
+
</main>
|
|
1289
|
+
</div>
|
|
1290
|
+
<script>${PAGE_JS}</script>
|
|
1291
|
+
</body>
|
|
1292
|
+
</html>`;
|
|
1293
|
+
}
|
|
1294
|
+
/**
|
|
1295
|
+
* "Start a change" — an EMPTY STATE, not a permanent section.
|
|
1296
|
+
*
|
|
1297
|
+
* It renders only when nothing is in flight, and that condition is the whole
|
|
1298
|
+
* design. Guidance that never changes, sitting above "Needs you" on every
|
|
1299
|
+
* visit, is chrome: it costs the owner vertical space ahead of the one section
|
|
1300
|
+
* that actually wants a decision from them, and after the first change they
|
|
1301
|
+
* already know how to start another. When there IS no work, the same block is
|
|
1302
|
+
* the most useful thing on the page. So it appears exactly when it helps and
|
|
1303
|
+
* gets out of the way otherwise, and the sidebar carries no "Start" link at all
|
|
1304
|
+
* — every remaining nav entry is a real, badge-bearing destination.
|
|
1305
|
+
*
|
|
1306
|
+
* It describes ONE step the owner takes, and it is not a command. Starting a
|
|
1307
|
+
* change begins in the coding agent: the owner activates Prismatica Start,
|
|
1308
|
+
* settles the plan in conversation, and the skill hands back one
|
|
1309
|
+
* `prismatica start --import …` line. `prismatica context start` is the
|
|
1310
|
+
* machine-facing half the skill runs for itself, so showing it here would be
|
|
1311
|
+
* teaching an owner to do by hand what a skill already does — and it takes no
|
|
1312
|
+
* argument, so a copyable form of it says nothing anyway.
|
|
1313
|
+
*
|
|
1314
|
+
* The board stays read-mostly: no route, no POST target, no form, so the
|
|
1315
|
+
* existing same-origin/CSRF guards still cover the entire write surface.
|
|
1316
|
+
*/
|
|
1317
|
+
function renderStartAction(model) {
|
|
1318
|
+
if (model.cards.length > 0) {
|
|
1319
|
+
return '';
|
|
1320
|
+
}
|
|
1321
|
+
const importCommand = 'prismatica start --import <proposal.json>';
|
|
1322
|
+
return `<section id="start">
|
|
1323
|
+
<div class="sec-head"><h2>Start a change</h2><span class="sec-sub" title="your agent proposes; you see the whole plan and the issue text before anything exists">nothing is in flight — here is how one begins</span></div>
|
|
1324
|
+
<div class="empty">
|
|
1325
|
+
<p class="empty-title">Open your coding agent and use Prismatica Start.</p>
|
|
1326
|
+
<p class="empty-sub">Describe what you need and settle the plan with it. When you are both ready it hands you one command to run in your own terminal:</p>
|
|
1327
|
+
<pre class="cmd"><code>${importCommand}</code></pre>
|
|
1328
|
+
<p class="empty-sub">Nothing is created until you have reviewed the complete plan and the exact GitHub issue, and said yes.</p>
|
|
1329
|
+
</div>
|
|
1330
|
+
</section>`;
|
|
1331
|
+
}
|
|
1332
|
+
export function renderBoardPage(model) {
|
|
1333
|
+
const main = `
|
|
1334
|
+
${renderAppScope(model)}
|
|
1335
|
+
${renderStartAction(model)}
|
|
1336
|
+
<section id="needs">
|
|
1337
|
+
<div class="sec-head"><h2>Needs you</h2><span class="sec-sub" title="everything waiting on the owner, across every app">decisions only you can make</span></div>
|
|
1338
|
+
${renderNeedsYou(model.needsYou)}
|
|
1339
|
+
</section>
|
|
1340
|
+
<section id="work">
|
|
1341
|
+
<div class="sec-head"><h2>Work</h2><span class="sec-sub" title="cards move only when records change — never by hand">every in-flight change, straight from the records</span></div>
|
|
1342
|
+
${renderWork(model.cards)}
|
|
1343
|
+
</section>
|
|
1344
|
+
<section id="apps">
|
|
1345
|
+
<div class="sec-head"><h2>Apps</h2><span class="sec-sub">one row per adopted repo</span></div>
|
|
1346
|
+
${renderApps(model.apps)}
|
|
1347
|
+
${filterEmpty('apps')}
|
|
1348
|
+
</section>
|
|
1349
|
+
<section id="releases">
|
|
1350
|
+
<div class="sec-head"><h2>Releases</h2><span class="sec-sub" title="verified, pending and legacy release records">verified releases, pending verification and legacy records</span></div>
|
|
1351
|
+
${renderReleases(model.releases, model.pendingVerification, model.legacyReleases, model.intents)}
|
|
1352
|
+
</section>`;
|
|
1353
|
+
return pageShell('Prismatica — board', main, model);
|
|
1354
|
+
}
|
|
1355
|
+
export function renderRecordPage(title, content) {
|
|
1356
|
+
const main = `
|
|
1357
|
+
<section>
|
|
1358
|
+
<div class="sec-head"><h2>${escapeHtml(title)}</h2></div>
|
|
1359
|
+
<p style="margin-bottom:12px"><a class="back" href="/">← Back to the board</a></p>
|
|
1360
|
+
<pre class="record">${escapeHtml(content)}</pre>
|
|
1361
|
+
</section>`;
|
|
1362
|
+
return pageShell(`Prismatica — ${title}`, main, null);
|
|
1363
|
+
}
|
|
1364
|
+
export function renderMessagePage(heading, message, back) {
|
|
1365
|
+
const main = `
|
|
1366
|
+
<section>
|
|
1367
|
+
<div class="sec-head"><h2>${escapeHtml(heading)}</h2></div>
|
|
1368
|
+
<p class="msg">${escapeHtml(message)}</p>
|
|
1369
|
+
<p style="margin-top:14px"><a class="back" href="${escapeHtml(back?.href ?? '/')}">${escapeHtml(back?.label ?? '← Back to the board')}</a></p>
|
|
1370
|
+
</section>`;
|
|
1371
|
+
return pageShell(`Prismatica — ${heading}`, main, null);
|
|
1372
|
+
}
|
|
1373
|
+
export function renderUnderstandPage(model) {
|
|
1374
|
+
return pageShell('Prismatica — Understand', renderUnderstandPicker(model), model, 'understand');
|
|
1375
|
+
}
|
|
1376
|
+
export function renderFlowMapPage(model, entry) {
|
|
1377
|
+
return pageShell(`Prismatica — ${entry.app} — Understand`, renderFlowMap(entry.repo, entry), model, 'understand');
|
|
1378
|
+
}
|
|
1379
|
+
export function renderStoryboardPage(model, repo, detail) {
|
|
1380
|
+
return pageShell(`Prismatica — ${detail.truth.goal}`, renderStoryboard(repo, detail), model, 'understand');
|
|
1381
|
+
}
|
|
1382
|
+
//# sourceMappingURL=html.js.map
|