mu-harness 0.16.3
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/esm/core/src/agent.d.ts +39 -0
- package/esm/core/src/agent.js +96 -0
- package/esm/core/src/index.d.ts +4 -0
- package/esm/core/src/index.js +2 -0
- package/esm/core/src/types.d.ts +59 -0
- package/esm/core/src/types.js +3 -0
- package/esm/harness/npm/src/_dnt.polyfills.d.ts +11 -0
- package/esm/harness/npm/src/_dnt.polyfills.js +15 -0
- package/esm/harness/npm/src/agents/index.d.ts +4 -0
- package/esm/harness/npm/src/agents/index.js +3 -0
- package/esm/harness/npm/src/agents/loader.d.ts +2 -0
- package/esm/harness/npm/src/agents/loader.js +24 -0
- package/esm/harness/npm/src/agents/parser.d.ts +2 -0
- package/esm/harness/npm/src/agents/parser.js +20 -0
- package/esm/harness/npm/src/agents/registry.d.ts +6 -0
- package/esm/harness/npm/src/agents/registry.js +31 -0
- package/esm/harness/npm/src/agents/types.d.ts +8 -0
- package/esm/harness/npm/src/agents/types.js +1 -0
- package/esm/harness/npm/src/channels/channel.d.ts +7 -0
- package/esm/harness/npm/src/channels/channel.js +25 -0
- package/esm/harness/npm/src/channels/index.d.ts +3 -0
- package/esm/harness/npm/src/channels/index.js +2 -0
- package/esm/harness/npm/src/channels/manager.d.ts +6 -0
- package/esm/harness/npm/src/channels/manager.js +28 -0
- package/esm/harness/npm/src/channels/types.d.ts +30 -0
- package/esm/harness/npm/src/channels/types.js +1 -0
- package/esm/harness/npm/src/commands/defaults.d.ts +9 -0
- package/esm/harness/npm/src/commands/defaults.js +53 -0
- package/esm/harness/npm/src/commands/index.d.ts +3 -0
- package/esm/harness/npm/src/commands/index.js +2 -0
- package/esm/harness/npm/src/commands/registry.d.ts +2 -0
- package/esm/harness/npm/src/commands/registry.js +59 -0
- package/esm/harness/npm/src/commands/types.d.ts +23 -0
- package/esm/harness/npm/src/commands/types.js +1 -0
- package/esm/harness/npm/src/common/frontmatter.d.ts +6 -0
- package/esm/harness/npm/src/common/frontmatter.js +18 -0
- package/esm/harness/npm/src/common/index.d.ts +2 -0
- package/esm/harness/npm/src/common/index.js +2 -0
- package/esm/harness/npm/src/common/utils.d.ts +5 -0
- package/esm/harness/npm/src/common/utils.js +13 -0
- package/esm/harness/npm/src/config/index.d.ts +2 -0
- package/esm/harness/npm/src/config/index.js +1 -0
- package/esm/harness/npm/src/config/resolve.d.ts +2 -0
- package/esm/harness/npm/src/config/resolve.js +10 -0
- package/esm/harness/npm/src/config/types.d.ts +15 -0
- package/esm/harness/npm/src/config/types.js +1 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_chars.d.ts +32 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_chars.js +48 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_dumper_state.d.ts +105 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_dumper_state.js +638 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_loader_state.d.ts +63 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_loader_state.js +1371 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_schema.d.ts +43 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_schema.js +117 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/binary.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/binary.js +103 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/bool.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/bool.js +32 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/float.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/float.js +96 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/int.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/int.js +159 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/map.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/map.js +14 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/merge.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/merge.js +10 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/nil.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/nil.js +22 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/omap.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/omap.js +29 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/pairs.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/pairs.js +19 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/regexp.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/regexp.js +30 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/seq.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/seq.js +10 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/set.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/set.js +14 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/str.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/str.js +9 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/timestamp.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/timestamp.js +81 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/undefined.d.ts +2 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/undefined.js +20 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type.d.ts +31 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type.js +6 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_utils.d.ts +3 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_utils.js +13 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/mod.d.ts +49 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/mod.js +52 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/parse.d.ts +75 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/parse.js +91 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/stringify.d.ts +99 -0
- package/esm/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/stringify.js +33 -0
- package/esm/harness/npm/src/harness/create.d.ts +2 -0
- package/esm/harness/npm/src/harness/create.js +139 -0
- package/esm/harness/npm/src/harness/index.d.ts +3 -0
- package/esm/harness/npm/src/harness/index.js +2 -0
- package/esm/harness/npm/src/harness/models.d.ts +16 -0
- package/esm/harness/npm/src/harness/models.js +30 -0
- package/esm/harness/npm/src/harness/types.d.ts +35 -0
- package/esm/harness/npm/src/harness/types.js +1 -0
- package/esm/harness/npm/src/hooks/index.d.ts +3 -0
- package/esm/harness/npm/src/hooks/index.js +2 -0
- package/esm/harness/npm/src/hooks/merge-hooks.d.ts +2 -0
- package/esm/harness/npm/src/hooks/merge-hooks.js +42 -0
- package/esm/harness/npm/src/hooks/types.d.ts +20 -0
- package/esm/harness/npm/src/hooks/types.js +1 -0
- package/esm/harness/npm/src/hooks/with-hooks.d.ts +3 -0
- package/esm/harness/npm/src/hooks/with-hooks.js +12 -0
- package/esm/harness/npm/src/index.d.ts +15 -0
- package/esm/harness/npm/src/index.js +15 -0
- package/esm/harness/npm/src/permissions/allow-list.d.ts +4 -0
- package/esm/harness/npm/src/permissions/allow-list.js +8 -0
- package/esm/harness/npm/src/permissions/approval.d.ts +17 -0
- package/esm/harness/npm/src/permissions/approval.js +13 -0
- package/esm/harness/npm/src/permissions/glob.d.ts +1 -0
- package/esm/harness/npm/src/permissions/glob.js +2 -0
- package/esm/harness/npm/src/permissions/index.d.ts +3 -0
- package/esm/harness/npm/src/permissions/index.js +3 -0
- package/esm/harness/npm/src/plugin/define.d.ts +2 -0
- package/esm/harness/npm/src/plugin/define.js +1 -0
- package/esm/harness/npm/src/plugin/import-ts.d.ts +1 -0
- package/esm/harness/npm/src/plugin/import-ts.js +85 -0
- package/esm/harness/npm/src/plugin/index.d.ts +5 -0
- package/esm/harness/npm/src/plugin/index.js +4 -0
- package/esm/harness/npm/src/plugin/resolve.d.ts +13 -0
- package/esm/harness/npm/src/plugin/resolve.js +17 -0
- package/esm/harness/npm/src/plugin/store.d.ts +8 -0
- package/esm/harness/npm/src/plugin/store.js +26 -0
- package/esm/harness/npm/src/plugin/types.d.ts +11 -0
- package/esm/harness/npm/src/plugin/types.js +1 -0
- package/esm/harness/npm/src/scheduler/command.d.ts +3 -0
- package/esm/harness/npm/src/scheduler/command.js +19 -0
- package/esm/harness/npm/src/scheduler/engine/index.d.ts +3 -0
- package/esm/harness/npm/src/scheduler/engine/index.js +2 -0
- package/esm/harness/npm/src/scheduler/engine/scheduler.d.ts +12 -0
- package/esm/harness/npm/src/scheduler/engine/scheduler.js +65 -0
- package/esm/harness/npm/src/scheduler/engine/store.d.ts +4 -0
- package/esm/harness/npm/src/scheduler/engine/store.js +55 -0
- package/esm/harness/npm/src/scheduler/engine/types.d.ts +37 -0
- package/esm/harness/npm/src/scheduler/engine/types.js +1 -0
- package/esm/harness/npm/src/scheduler/index.d.ts +4 -0
- package/esm/harness/npm/src/scheduler/index.js +3 -0
- package/esm/harness/npm/src/scheduler/tool.d.ts +8 -0
- package/esm/harness/npm/src/scheduler/tool.js +49 -0
- package/esm/harness/npm/src/session/agent-session.d.ts +15 -0
- package/esm/harness/npm/src/session/agent-session.js +82 -0
- package/esm/harness/npm/src/session/catalog.d.ts +24 -0
- package/esm/harness/npm/src/session/catalog.js +55 -0
- package/esm/harness/npm/src/session/index.d.ts +7 -0
- package/esm/harness/npm/src/session/index.js +6 -0
- package/esm/harness/npm/src/session/manager.d.ts +39 -0
- package/esm/harness/npm/src/session/manager.js +62 -0
- package/esm/harness/npm/src/session/persist.d.ts +3 -0
- package/esm/harness/npm/src/session/persist.js +21 -0
- package/esm/harness/npm/src/session/store.d.ts +13 -0
- package/esm/harness/npm/src/session/store.js +24 -0
- package/esm/harness/npm/src/session/title.d.ts +9 -0
- package/esm/harness/npm/src/session/title.js +24 -0
- package/esm/harness/npm/src/session/types.d.ts +17 -0
- package/esm/harness/npm/src/session/types.js +1 -0
- package/esm/harness/npm/src/skills/index.d.ts +7 -0
- package/esm/harness/npm/src/skills/index.js +6 -0
- package/esm/harness/npm/src/skills/loader.d.ts +2 -0
- package/esm/harness/npm/src/skills/loader.js +26 -0
- package/esm/harness/npm/src/skills/parser.d.ts +2 -0
- package/esm/harness/npm/src/skills/parser.js +10 -0
- package/esm/harness/npm/src/skills/registry.d.ts +8 -0
- package/esm/harness/npm/src/skills/registry.js +16 -0
- package/esm/harness/npm/src/skills/run.d.ts +14 -0
- package/esm/harness/npm/src/skills/run.js +45 -0
- package/esm/harness/npm/src/skills/tool.d.ts +3 -0
- package/esm/harness/npm/src/skills/tool.js +31 -0
- package/esm/harness/npm/src/skills/types.d.ts +6 -0
- package/esm/harness/npm/src/skills/types.js +1 -0
- package/esm/harness/npm/src/skills/writer.d.ts +7 -0
- package/esm/harness/npm/src/skills/writer.js +43 -0
- package/esm/harness/npm/src/subAgents/index.d.ts +4 -0
- package/esm/harness/npm/src/subAgents/index.js +3 -0
- package/esm/harness/npm/src/subAgents/registry.d.ts +2 -0
- package/esm/harness/npm/src/subAgents/registry.js +18 -0
- package/esm/harness/npm/src/subAgents/runner.d.ts +15 -0
- package/esm/harness/npm/src/subAgents/runner.js +33 -0
- package/esm/harness/npm/src/subAgents/tool.d.ts +6 -0
- package/esm/harness/npm/src/subAgents/tool.js +30 -0
- package/esm/harness/npm/src/subAgents/types.d.ts +18 -0
- package/esm/harness/npm/src/subAgents/types.js +1 -0
- package/esm/harness/npm/src/tui/channel.d.ts +3 -0
- package/esm/harness/npm/src/tui/channel.js +53 -0
- package/esm/harness/npm/src/tui/components/composer.d.ts +3 -0
- package/esm/harness/npm/src/tui/components/composer.js +13 -0
- package/esm/harness/npm/src/tui/components/header.d.ts +3 -0
- package/esm/harness/npm/src/tui/components/header.js +1 -0
- package/esm/harness/npm/src/tui/components/index.d.ts +5 -0
- package/esm/harness/npm/src/tui/components/index.js +5 -0
- package/esm/harness/npm/src/tui/components/message.d.ts +6 -0
- package/esm/harness/npm/src/tui/components/message.js +26 -0
- package/esm/harness/npm/src/tui/components/status.d.ts +3 -0
- package/esm/harness/npm/src/tui/components/status.js +8 -0
- package/esm/harness/npm/src/tui/components/transcript.d.ts +4 -0
- package/esm/harness/npm/src/tui/components/transcript.js +4 -0
- package/esm/harness/npm/src/tui/index.d.ts +7 -0
- package/esm/harness/npm/src/tui/index.js +10 -0
- package/esm/harness/npm/src/tui/kit.d.ts +15 -0
- package/esm/harness/npm/src/tui/kit.js +7 -0
- package/esm/harness/npm/src/tui/types.d.ts +38 -0
- package/esm/harness/npm/src/tui/types.js +1 -0
- package/esm/package.json +3 -0
- package/esm/tui/src/capabilities.d.ts +72 -0
- package/esm/tui/src/capabilities.js +90 -0
- package/esm/tui/src/components/command-palette.d.ts +24 -0
- package/esm/tui/src/components/command-palette.js +60 -0
- package/esm/tui/src/components/editor.d.ts +26 -0
- package/esm/tui/src/components/editor.js +111 -0
- package/esm/tui/src/components/scroll-view.d.ts +14 -0
- package/esm/tui/src/components/scroll-view.js +45 -0
- package/esm/tui/src/components/select-list.d.ts +24 -0
- package/esm/tui/src/components/select-list.js +69 -0
- package/esm/tui/src/events.d.ts +56 -0
- package/esm/tui/src/events.js +6 -0
- package/esm/tui/src/index.d.ts +17 -0
- package/esm/tui/src/index.js +13 -0
- package/esm/tui/src/inputRouter.d.ts +28 -0
- package/esm/tui/src/inputRouter.js +122 -0
- package/esm/tui/src/keybinds.d.ts +13 -0
- package/esm/tui/src/keybinds.js +15 -0
- package/esm/tui/src/keyboard.d.ts +2 -0
- package/esm/tui/src/keyboard.js +305 -0
- package/esm/tui/src/layout/ansi.d.ts +3 -0
- package/esm/tui/src/layout/ansi.js +323 -0
- package/esm/tui/src/layout/cell.d.ts +24 -0
- package/esm/tui/src/layout/cell.js +46 -0
- package/esm/tui/src/layout/cellbuffer.d.ts +29 -0
- package/esm/tui/src/layout/cellbuffer.js +306 -0
- package/esm/tui/src/layout/color.d.ts +22 -0
- package/esm/tui/src/layout/color.js +163 -0
- package/esm/tui/src/layout/insets.d.ts +8 -0
- package/esm/tui/src/layout/insets.js +55 -0
- package/esm/tui/src/layout/types.d.ts +33 -0
- package/esm/tui/src/layout/types.js +8 -0
- package/esm/tui/src/parser.d.ts +18 -0
- package/esm/tui/src/parser.js +136 -0
- package/esm/tui/src/renderer.d.ts +32 -0
- package/esm/tui/src/renderer.js +168 -0
- package/esm/tui/src/surface.d.ts +27 -0
- package/esm/tui/src/surface.js +110 -0
- package/esm/tui/src/terminal.d.ts +48 -0
- package/esm/tui/src/terminal.js +255 -0
- package/esm/tui/src/tui.d.ts +60 -0
- package/esm/tui/src/tui.js +194 -0
- package/esm/tui/src/types/terminal.d.ts +20 -0
- package/esm/tui/src/types/terminal.js +1 -0
- package/esm/tui/src/utils.d.ts +6 -0
- package/esm/tui/src/utils.js +292 -0
- package/esm/tui/src/views.d.ts +35 -0
- package/esm/tui/src/views.js +112 -0
- package/package.json +23 -0
- package/script/core/src/agent.d.ts +39 -0
- package/script/core/src/agent.js +101 -0
- package/script/core/src/index.d.ts +4 -0
- package/script/core/src/index.js +10 -0
- package/script/core/src/types.d.ts +59 -0
- package/script/core/src/types.js +9 -0
- package/script/harness/npm/src/_dnt.polyfills.d.ts +11 -0
- package/script/harness/npm/src/_dnt.polyfills.js +16 -0
- package/script/harness/npm/src/agents/index.d.ts +4 -0
- package/script/harness/npm/src/agents/index.js +9 -0
- package/script/harness/npm/src/agents/loader.d.ts +2 -0
- package/script/harness/npm/src/agents/loader.js +28 -0
- package/script/harness/npm/src/agents/parser.d.ts +2 -0
- package/script/harness/npm/src/agents/parser.js +24 -0
- package/script/harness/npm/src/agents/registry.d.ts +6 -0
- package/script/harness/npm/src/agents/registry.js +35 -0
- package/script/harness/npm/src/agents/types.d.ts +8 -0
- package/script/harness/npm/src/agents/types.js +2 -0
- package/script/harness/npm/src/channels/channel.d.ts +7 -0
- package/script/harness/npm/src/channels/channel.js +29 -0
- package/script/harness/npm/src/channels/index.d.ts +3 -0
- package/script/harness/npm/src/channels/index.js +7 -0
- package/script/harness/npm/src/channels/manager.d.ts +6 -0
- package/script/harness/npm/src/channels/manager.js +32 -0
- package/script/harness/npm/src/channels/types.d.ts +30 -0
- package/script/harness/npm/src/channels/types.js +2 -0
- package/script/harness/npm/src/commands/defaults.d.ts +9 -0
- package/script/harness/npm/src/commands/defaults.js +61 -0
- package/script/harness/npm/src/commands/index.d.ts +3 -0
- package/script/harness/npm/src/commands/index.js +11 -0
- package/script/harness/npm/src/commands/registry.d.ts +2 -0
- package/script/harness/npm/src/commands/registry.js +63 -0
- package/script/harness/npm/src/commands/types.d.ts +23 -0
- package/script/harness/npm/src/commands/types.js +2 -0
- package/script/harness/npm/src/common/frontmatter.d.ts +6 -0
- package/script/harness/npm/src/common/frontmatter.js +23 -0
- package/script/harness/npm/src/common/index.d.ts +2 -0
- package/script/harness/npm/src/common/index.js +8 -0
- package/script/harness/npm/src/common/utils.d.ts +5 -0
- package/script/harness/npm/src/common/utils.js +17 -0
- package/script/harness/npm/src/config/index.d.ts +2 -0
- package/script/harness/npm/src/config/index.js +5 -0
- package/script/harness/npm/src/config/resolve.d.ts +2 -0
- package/script/harness/npm/src/config/resolve.js +14 -0
- package/script/harness/npm/src/config/types.d.ts +15 -0
- package/script/harness/npm/src/config/types.js +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_chars.d.ts +32 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_chars.js +55 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_dumper_state.d.ts +105 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_dumper_state.js +642 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_loader_state.d.ts +63 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_loader_state.js +1375 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_schema.d.ts +43 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_schema.js +121 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/binary.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/binary.js +106 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/bool.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/bool.js +35 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/float.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/float.js +99 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/int.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/int.js +162 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/map.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/map.js +17 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/merge.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/merge.js +13 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/nil.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/nil.js +25 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/omap.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/omap.js +32 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/pairs.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/pairs.js +22 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/regexp.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/regexp.js +33 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/seq.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/seq.js +13 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/set.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/set.js +17 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/str.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/str.js +12 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/timestamp.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/timestamp.js +84 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/undefined.d.ts +2 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type/undefined.js +23 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type.d.ts +31 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_type.js +7 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_utils.d.ts +3 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/_utils.js +18 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/mod.d.ts +49 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/mod.js +68 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/parse.d.ts +75 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/parse.js +95 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/stringify.d.ts +99 -0
- package/script/harness/npm/src/deps/jsr.io/@std/yaml/1.1.0/stringify.js +36 -0
- package/script/harness/npm/src/harness/create.d.ts +2 -0
- package/script/harness/npm/src/harness/create.js +146 -0
- package/script/harness/npm/src/harness/index.d.ts +3 -0
- package/script/harness/npm/src/harness/index.js +7 -0
- package/script/harness/npm/src/harness/models.d.ts +16 -0
- package/script/harness/npm/src/harness/models.js +34 -0
- package/script/harness/npm/src/harness/types.d.ts +35 -0
- package/script/harness/npm/src/harness/types.js +2 -0
- package/script/harness/npm/src/hooks/index.d.ts +3 -0
- package/script/harness/npm/src/hooks/index.js +7 -0
- package/script/harness/npm/src/hooks/merge-hooks.d.ts +2 -0
- package/script/harness/npm/src/hooks/merge-hooks.js +46 -0
- package/script/harness/npm/src/hooks/types.d.ts +20 -0
- package/script/harness/npm/src/hooks/types.js +2 -0
- package/script/harness/npm/src/hooks/with-hooks.d.ts +3 -0
- package/script/harness/npm/src/hooks/with-hooks.js +16 -0
- package/script/harness/npm/src/index.d.ts +15 -0
- package/script/harness/npm/src/index.js +31 -0
- package/script/harness/npm/src/permissions/allow-list.d.ts +4 -0
- package/script/harness/npm/src/permissions/allow-list.js +13 -0
- package/script/harness/npm/src/permissions/approval.d.ts +17 -0
- package/script/harness/npm/src/permissions/approval.js +17 -0
- package/script/harness/npm/src/permissions/glob.d.ts +1 -0
- package/script/harness/npm/src/permissions/glob.js +6 -0
- package/script/harness/npm/src/permissions/index.d.ts +3 -0
- package/script/harness/npm/src/permissions/index.js +10 -0
- package/script/harness/npm/src/plugin/define.d.ts +2 -0
- package/script/harness/npm/src/plugin/define.js +5 -0
- package/script/harness/npm/src/plugin/import-ts.d.ts +1 -0
- package/script/harness/npm/src/plugin/import-ts.js +122 -0
- package/script/harness/npm/src/plugin/index.d.ts +5 -0
- package/script/harness/npm/src/plugin/index.js +11 -0
- package/script/harness/npm/src/plugin/resolve.d.ts +13 -0
- package/script/harness/npm/src/plugin/resolve.js +21 -0
- package/script/harness/npm/src/plugin/store.d.ts +8 -0
- package/script/harness/npm/src/plugin/store.js +30 -0
- package/script/harness/npm/src/plugin/types.d.ts +11 -0
- package/script/harness/npm/src/plugin/types.js +2 -0
- package/script/harness/npm/src/scheduler/command.d.ts +3 -0
- package/script/harness/npm/src/scheduler/command.js +23 -0
- package/script/harness/npm/src/scheduler/engine/index.d.ts +3 -0
- package/script/harness/npm/src/scheduler/engine/index.js +7 -0
- package/script/harness/npm/src/scheduler/engine/scheduler.d.ts +12 -0
- package/script/harness/npm/src/scheduler/engine/scheduler.js +69 -0
- package/script/harness/npm/src/scheduler/engine/store.d.ts +4 -0
- package/script/harness/npm/src/scheduler/engine/store.js +59 -0
- package/script/harness/npm/src/scheduler/engine/types.d.ts +37 -0
- package/script/harness/npm/src/scheduler/engine/types.js +2 -0
- package/script/harness/npm/src/scheduler/index.d.ts +4 -0
- package/script/harness/npm/src/scheduler/index.js +10 -0
- package/script/harness/npm/src/scheduler/tool.d.ts +8 -0
- package/script/harness/npm/src/scheduler/tool.js +53 -0
- package/script/harness/npm/src/session/agent-session.d.ts +15 -0
- package/script/harness/npm/src/session/agent-session.js +86 -0
- package/script/harness/npm/src/session/catalog.d.ts +24 -0
- package/script/harness/npm/src/session/catalog.js +59 -0
- package/script/harness/npm/src/session/index.d.ts +7 -0
- package/script/harness/npm/src/session/index.js +17 -0
- package/script/harness/npm/src/session/manager.d.ts +39 -0
- package/script/harness/npm/src/session/manager.js +66 -0
- package/script/harness/npm/src/session/persist.d.ts +3 -0
- package/script/harness/npm/src/session/persist.js +25 -0
- package/script/harness/npm/src/session/store.d.ts +13 -0
- package/script/harness/npm/src/session/store.js +28 -0
- package/script/harness/npm/src/session/title.d.ts +9 -0
- package/script/harness/npm/src/session/title.js +30 -0
- package/script/harness/npm/src/session/types.d.ts +17 -0
- package/script/harness/npm/src/session/types.js +2 -0
- package/script/harness/npm/src/skills/index.d.ts +7 -0
- package/script/harness/npm/src/skills/index.js +16 -0
- package/script/harness/npm/src/skills/loader.d.ts +2 -0
- package/script/harness/npm/src/skills/loader.js +30 -0
- package/script/harness/npm/src/skills/parser.d.ts +2 -0
- package/script/harness/npm/src/skills/parser.js +14 -0
- package/script/harness/npm/src/skills/registry.d.ts +8 -0
- package/script/harness/npm/src/skills/registry.js +20 -0
- package/script/harness/npm/src/skills/run.d.ts +14 -0
- package/script/harness/npm/src/skills/run.js +50 -0
- package/script/harness/npm/src/skills/tool.d.ts +3 -0
- package/script/harness/npm/src/skills/tool.js +35 -0
- package/script/harness/npm/src/skills/types.d.ts +6 -0
- package/script/harness/npm/src/skills/types.js +2 -0
- package/script/harness/npm/src/skills/writer.d.ts +7 -0
- package/script/harness/npm/src/skills/writer.js +47 -0
- package/script/harness/npm/src/subAgents/index.d.ts +4 -0
- package/script/harness/npm/src/subAgents/index.js +9 -0
- package/script/harness/npm/src/subAgents/registry.d.ts +2 -0
- package/script/harness/npm/src/subAgents/registry.js +22 -0
- package/script/harness/npm/src/subAgents/runner.d.ts +15 -0
- package/script/harness/npm/src/subAgents/runner.js +37 -0
- package/script/harness/npm/src/subAgents/tool.d.ts +6 -0
- package/script/harness/npm/src/subAgents/tool.js +34 -0
- package/script/harness/npm/src/subAgents/types.d.ts +18 -0
- package/script/harness/npm/src/subAgents/types.js +2 -0
- package/script/harness/npm/src/tui/channel.d.ts +3 -0
- package/script/harness/npm/src/tui/channel.js +57 -0
- package/script/harness/npm/src/tui/components/composer.d.ts +3 -0
- package/script/harness/npm/src/tui/components/composer.js +17 -0
- package/script/harness/npm/src/tui/components/header.d.ts +3 -0
- package/script/harness/npm/src/tui/components/header.js +5 -0
- package/script/harness/npm/src/tui/components/index.d.ts +5 -0
- package/script/harness/npm/src/tui/components/index.js +16 -0
- package/script/harness/npm/src/tui/components/message.d.ts +6 -0
- package/script/harness/npm/src/tui/components/message.js +32 -0
- package/script/harness/npm/src/tui/components/status.d.ts +3 -0
- package/script/harness/npm/src/tui/components/status.js +12 -0
- package/script/harness/npm/src/tui/components/transcript.d.ts +4 -0
- package/script/harness/npm/src/tui/components/transcript.js +9 -0
- package/script/harness/npm/src/tui/index.d.ts +7 -0
- package/script/harness/npm/src/tui/index.js +29 -0
- package/script/harness/npm/src/tui/kit.d.ts +15 -0
- package/script/harness/npm/src/tui/kit.js +10 -0
- package/script/harness/npm/src/tui/types.d.ts +38 -0
- package/script/harness/npm/src/tui/types.js +2 -0
- package/script/package.json +3 -0
- package/script/tui/src/capabilities.d.ts +72 -0
- package/script/tui/src/capabilities.js +98 -0
- package/script/tui/src/components/command-palette.d.ts +24 -0
- package/script/tui/src/components/command-palette.js +65 -0
- package/script/tui/src/components/editor.d.ts +26 -0
- package/script/tui/src/components/editor.js +116 -0
- package/script/tui/src/components/scroll-view.d.ts +14 -0
- package/script/tui/src/components/scroll-view.js +50 -0
- package/script/tui/src/components/select-list.d.ts +24 -0
- package/script/tui/src/components/select-list.js +74 -0
- package/script/tui/src/events.d.ts +56 -0
- package/script/tui/src/events.js +9 -0
- package/script/tui/src/index.d.ts +17 -0
- package/script/tui/src/index.js +46 -0
- package/script/tui/src/inputRouter.d.ts +28 -0
- package/script/tui/src/inputRouter.js +126 -0
- package/script/tui/src/keybinds.d.ts +13 -0
- package/script/tui/src/keybinds.js +18 -0
- package/script/tui/src/keyboard.d.ts +2 -0
- package/script/tui/src/keyboard.js +308 -0
- package/script/tui/src/layout/ansi.d.ts +3 -0
- package/script/tui/src/layout/ansi.js +327 -0
- package/script/tui/src/layout/cell.d.ts +24 -0
- package/script/tui/src/layout/cell.js +54 -0
- package/script/tui/src/layout/cellbuffer.d.ts +29 -0
- package/script/tui/src/layout/cellbuffer.js +321 -0
- package/script/tui/src/layout/color.d.ts +22 -0
- package/script/tui/src/layout/color.js +174 -0
- package/script/tui/src/layout/insets.d.ts +8 -0
- package/script/tui/src/layout/insets.js +64 -0
- package/script/tui/src/layout/types.d.ts +33 -0
- package/script/tui/src/layout/types.js +11 -0
- package/script/tui/src/parser.d.ts +18 -0
- package/script/tui/src/parser.js +140 -0
- package/script/tui/src/renderer.d.ts +32 -0
- package/script/tui/src/renderer.js +175 -0
- package/script/tui/src/surface.d.ts +27 -0
- package/script/tui/src/surface.js +115 -0
- package/script/tui/src/terminal.d.ts +48 -0
- package/script/tui/src/terminal.js +262 -0
- package/script/tui/src/tui.d.ts +60 -0
- package/script/tui/src/tui.js +198 -0
- package/script/tui/src/types/terminal.d.ts +20 -0
- package/script/tui/src/types/terminal.js +2 -0
- package/script/tui/src/utils.d.ts +6 -0
- package/script/tui/src/utils.js +300 -0
- package/script/tui/src/views.d.ts +35 -0
- package/script/tui/src/views.js +123 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { KindType, Type } from "./_type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Name of the schema to use.
|
|
4
|
+
*
|
|
5
|
+
* > [!NOTE]
|
|
6
|
+
* > It is recommended to use the schema that is most appropriate for your use
|
|
7
|
+
* > case. Doing so will avoid any unnecessary processing and benefit
|
|
8
|
+
* > performance.
|
|
9
|
+
*
|
|
10
|
+
* Options include:
|
|
11
|
+
* - `failsafe`: supports generic mappings, generic sequences and generic
|
|
12
|
+
* strings.
|
|
13
|
+
* - `json`: extends `failsafe` schema by also supporting nulls, booleans,
|
|
14
|
+
* integers and floats.
|
|
15
|
+
* - `core`: functionally the same as `json` schema.
|
|
16
|
+
* - `default`: extends `core` schema by also supporting binary, omap, pairs and
|
|
17
|
+
* set types.
|
|
18
|
+
* - `extended`: extends `default` schema by also supporting regular
|
|
19
|
+
* expressions and undefined values.
|
|
20
|
+
*
|
|
21
|
+
* See
|
|
22
|
+
* {@link https://yaml.org/spec/1.2.2/#chapter-10-recommended-schemas | YAML 1.2 spec}
|
|
23
|
+
* for more details on the `failsafe`, `json` and `core` schemas.
|
|
24
|
+
*/
|
|
25
|
+
export type SchemaType = "failsafe" | "json" | "core" | "default" | "extended";
|
|
26
|
+
/**
|
|
27
|
+
* A type that can be implicitly resolved (i.e. without using a tag) when
|
|
28
|
+
* loading a YAML document.
|
|
29
|
+
*/
|
|
30
|
+
export type ImplicitType = Type<"scalar">;
|
|
31
|
+
export type ExplicitType = Type<KindType>;
|
|
32
|
+
export type TypeMap = Record<KindType | "fallback", Map<string, ExplicitType>>;
|
|
33
|
+
export interface Schema {
|
|
34
|
+
implicitTypes: ImplicitType[];
|
|
35
|
+
explicitTypes: ExplicitType[];
|
|
36
|
+
typeMap: TypeMap;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Default YAML schema. It is not described in the YAML specification.
|
|
40
|
+
*/
|
|
41
|
+
export declare const DEFAULT_SCHEMA: Schema;
|
|
42
|
+
export declare const SCHEMA_MAP: Map<SchemaType, Schema>;
|
|
43
|
+
export declare function getSchema(schema?: SchemaType, types?: ImplicitType[]): Schema;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// Ported from js-yaml v3.13.1:
|
|
2
|
+
// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
|
|
3
|
+
// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
|
|
4
|
+
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
5
|
+
// This module is browser compatible.
|
|
6
|
+
import { binary } from "./_type/binary.js";
|
|
7
|
+
import { bool } from "./_type/bool.js";
|
|
8
|
+
import { float } from "./_type/float.js";
|
|
9
|
+
import { int } from "./_type/int.js";
|
|
10
|
+
import { map } from "./_type/map.js";
|
|
11
|
+
import { merge } from "./_type/merge.js";
|
|
12
|
+
import { nil } from "./_type/nil.js";
|
|
13
|
+
import { omap } from "./_type/omap.js";
|
|
14
|
+
import { pairs } from "./_type/pairs.js";
|
|
15
|
+
import { regexp } from "./_type/regexp.js";
|
|
16
|
+
import { seq } from "./_type/seq.js";
|
|
17
|
+
import { set } from "./_type/set.js";
|
|
18
|
+
import { str } from "./_type/str.js";
|
|
19
|
+
import { timestamp } from "./_type/timestamp.js";
|
|
20
|
+
import { undefinedType } from "./_type/undefined.js";
|
|
21
|
+
function createTypeMap(implicitTypes, explicitTypes) {
|
|
22
|
+
const result = {
|
|
23
|
+
fallback: new Map(),
|
|
24
|
+
mapping: new Map(),
|
|
25
|
+
scalar: new Map(),
|
|
26
|
+
sequence: new Map(),
|
|
27
|
+
};
|
|
28
|
+
const fallbackMap = result.fallback;
|
|
29
|
+
for (const type of [...implicitTypes, ...explicitTypes]) {
|
|
30
|
+
const map = result[type.kind];
|
|
31
|
+
map.set(type.tag, type);
|
|
32
|
+
fallbackMap.set(type.tag, type);
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
function createSchema({ explicitTypes = [], implicitTypes = [], include }) {
|
|
37
|
+
if (include) {
|
|
38
|
+
implicitTypes.push(...include.implicitTypes);
|
|
39
|
+
explicitTypes.push(...include.explicitTypes);
|
|
40
|
+
}
|
|
41
|
+
const typeMap = createTypeMap(implicitTypes, explicitTypes);
|
|
42
|
+
return { implicitTypes, explicitTypes, typeMap };
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Standard YAML's failsafe schema.
|
|
46
|
+
*
|
|
47
|
+
* @see {@link http://www.yaml.org/spec/1.2/spec.html#id2802346}
|
|
48
|
+
*/
|
|
49
|
+
const FAILSAFE_SCHEMA = createSchema({
|
|
50
|
+
explicitTypes: [str, seq, map],
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* Standard YAML's JSON schema.
|
|
54
|
+
*
|
|
55
|
+
* @see {@link http://www.yaml.org/spec/1.2/spec.html#id2803231}
|
|
56
|
+
*/
|
|
57
|
+
const JSON_SCHEMA = createSchema({
|
|
58
|
+
implicitTypes: [nil, bool, int, float],
|
|
59
|
+
include: FAILSAFE_SCHEMA,
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Standard YAML's core schema.
|
|
63
|
+
*
|
|
64
|
+
* @see {@link http://www.yaml.org/spec/1.2/spec.html#id2804923}
|
|
65
|
+
*/
|
|
66
|
+
const CORE_SCHEMA = createSchema({
|
|
67
|
+
include: JSON_SCHEMA,
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Default YAML schema. It is not described in the YAML specification.
|
|
71
|
+
*/
|
|
72
|
+
export const DEFAULT_SCHEMA = createSchema({
|
|
73
|
+
explicitTypes: [binary, omap, pairs, set],
|
|
74
|
+
implicitTypes: [timestamp, merge],
|
|
75
|
+
include: CORE_SCHEMA,
|
|
76
|
+
});
|
|
77
|
+
/***
|
|
78
|
+
* Extends JS-YAML default schema with additional JavaScript types
|
|
79
|
+
* It is not described in the YAML specification.
|
|
80
|
+
* Functions are no longer supported for security reasons.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* import { parse } from "@std/yaml";
|
|
85
|
+
*
|
|
86
|
+
* const data = parse(
|
|
87
|
+
* `
|
|
88
|
+
* regexp:
|
|
89
|
+
* simple: !!js/regexp foobar
|
|
90
|
+
* modifiers: !!js/regexp /foobar/mi
|
|
91
|
+
* undefined: !!js/undefined ~
|
|
92
|
+
* `,
|
|
93
|
+
* { schema: "extended" },
|
|
94
|
+
* );
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
const EXTENDED_SCHEMA = createSchema({
|
|
98
|
+
explicitTypes: [regexp, undefinedType],
|
|
99
|
+
include: DEFAULT_SCHEMA,
|
|
100
|
+
});
|
|
101
|
+
export const SCHEMA_MAP = new Map([
|
|
102
|
+
["core", CORE_SCHEMA],
|
|
103
|
+
["default", DEFAULT_SCHEMA],
|
|
104
|
+
["failsafe", FAILSAFE_SCHEMA],
|
|
105
|
+
["json", JSON_SCHEMA],
|
|
106
|
+
["extended", EXTENDED_SCHEMA],
|
|
107
|
+
]);
|
|
108
|
+
export function getSchema(schema = "default", types) {
|
|
109
|
+
const schemaObj = SCHEMA_MAP.get(schema);
|
|
110
|
+
if (!types) {
|
|
111
|
+
return schemaObj;
|
|
112
|
+
}
|
|
113
|
+
return createSchema({
|
|
114
|
+
implicitTypes: [...types, ...schemaObj.implicitTypes],
|
|
115
|
+
explicitTypes: [...schemaObj.explicitTypes],
|
|
116
|
+
});
|
|
117
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// [ 64, 65, 66 ] -> [ padding, CR, LF ]
|
|
2
|
+
const BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";
|
|
3
|
+
function resolveYamlBinary(data) {
|
|
4
|
+
if (data === null)
|
|
5
|
+
return false;
|
|
6
|
+
let code;
|
|
7
|
+
let bitlen = 0;
|
|
8
|
+
const max = data.length;
|
|
9
|
+
const map = BASE64_MAP;
|
|
10
|
+
// Convert one by one.
|
|
11
|
+
for (let idx = 0; idx < max; idx++) {
|
|
12
|
+
code = map.indexOf(data.charAt(idx));
|
|
13
|
+
// Skip CR/LF
|
|
14
|
+
if (code > 64)
|
|
15
|
+
continue;
|
|
16
|
+
// Fail on illegal characters
|
|
17
|
+
if (code < 0)
|
|
18
|
+
return false;
|
|
19
|
+
bitlen += 6;
|
|
20
|
+
}
|
|
21
|
+
// If there are any bits left, source was corrupted
|
|
22
|
+
return bitlen % 8 === 0;
|
|
23
|
+
}
|
|
24
|
+
function constructYamlBinary(data) {
|
|
25
|
+
// remove CR/LF & padding to simplify scan
|
|
26
|
+
const input = data.replace(/[\r\n=]/g, "");
|
|
27
|
+
const max = input.length;
|
|
28
|
+
const map = BASE64_MAP;
|
|
29
|
+
// Collect by 6*4 bits (3 bytes)
|
|
30
|
+
const result = [];
|
|
31
|
+
let bits = 0;
|
|
32
|
+
for (let idx = 0; idx < max; idx++) {
|
|
33
|
+
if (idx % 4 === 0 && idx) {
|
|
34
|
+
result.push((bits >> 16) & 0xff);
|
|
35
|
+
result.push((bits >> 8) & 0xff);
|
|
36
|
+
result.push(bits & 0xff);
|
|
37
|
+
}
|
|
38
|
+
bits = (bits << 6) | map.indexOf(input.charAt(idx));
|
|
39
|
+
}
|
|
40
|
+
// Dump tail
|
|
41
|
+
const tailbits = (max % 4) * 6;
|
|
42
|
+
if (tailbits === 0) {
|
|
43
|
+
result.push((bits >> 16) & 0xff);
|
|
44
|
+
result.push((bits >> 8) & 0xff);
|
|
45
|
+
result.push(bits & 0xff);
|
|
46
|
+
}
|
|
47
|
+
else if (tailbits === 18) {
|
|
48
|
+
result.push((bits >> 10) & 0xff);
|
|
49
|
+
result.push((bits >> 2) & 0xff);
|
|
50
|
+
}
|
|
51
|
+
else if (tailbits === 12) {
|
|
52
|
+
result.push((bits >> 4) & 0xff);
|
|
53
|
+
}
|
|
54
|
+
return new Uint8Array(result);
|
|
55
|
+
}
|
|
56
|
+
function representYamlBinary(object) {
|
|
57
|
+
const max = object.length;
|
|
58
|
+
const map = BASE64_MAP;
|
|
59
|
+
// Convert every three bytes to 4 ASCII characters.
|
|
60
|
+
let result = "";
|
|
61
|
+
let bits = 0;
|
|
62
|
+
for (let idx = 0; idx < max; idx++) {
|
|
63
|
+
if (idx % 3 === 0 && idx) {
|
|
64
|
+
result += map[(bits >> 18) & 0x3f];
|
|
65
|
+
result += map[(bits >> 12) & 0x3f];
|
|
66
|
+
result += map[(bits >> 6) & 0x3f];
|
|
67
|
+
result += map[bits & 0x3f];
|
|
68
|
+
}
|
|
69
|
+
bits = (bits << 8) + object[idx];
|
|
70
|
+
}
|
|
71
|
+
// Dump tail
|
|
72
|
+
const tail = max % 3;
|
|
73
|
+
if (tail === 0) {
|
|
74
|
+
result += map[(bits >> 18) & 0x3f];
|
|
75
|
+
result += map[(bits >> 12) & 0x3f];
|
|
76
|
+
result += map[(bits >> 6) & 0x3f];
|
|
77
|
+
result += map[bits & 0x3f];
|
|
78
|
+
}
|
|
79
|
+
else if (tail === 2) {
|
|
80
|
+
result += map[(bits >> 10) & 0x3f];
|
|
81
|
+
result += map[(bits >> 4) & 0x3f];
|
|
82
|
+
result += map[(bits << 2) & 0x3f];
|
|
83
|
+
result += map[64];
|
|
84
|
+
}
|
|
85
|
+
else if (tail === 1) {
|
|
86
|
+
result += map[(bits >> 2) & 0x3f];
|
|
87
|
+
result += map[(bits << 4) & 0x3f];
|
|
88
|
+
result += map[64];
|
|
89
|
+
result += map[64];
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
function isBinary(obj) {
|
|
94
|
+
return obj instanceof Uint8Array;
|
|
95
|
+
}
|
|
96
|
+
export const binary = {
|
|
97
|
+
tag: "tag:yaml.org,2002:binary",
|
|
98
|
+
construct: constructYamlBinary,
|
|
99
|
+
kind: "scalar",
|
|
100
|
+
predicate: isBinary,
|
|
101
|
+
represent: representYamlBinary,
|
|
102
|
+
resolve: resolveYamlBinary,
|
|
103
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Ported from js-yaml v3.13.1:
|
|
2
|
+
// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
|
|
3
|
+
// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
|
|
4
|
+
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
5
|
+
const YAML_TRUE_BOOLEANS = ["true", "True", "TRUE"];
|
|
6
|
+
const YAML_FALSE_BOOLEANS = ["false", "False", "FALSE"];
|
|
7
|
+
const YAML_BOOLEANS = [...YAML_TRUE_BOOLEANS, ...YAML_FALSE_BOOLEANS];
|
|
8
|
+
export const bool = {
|
|
9
|
+
tag: "tag:yaml.org,2002:bool",
|
|
10
|
+
kind: "scalar",
|
|
11
|
+
defaultStyle: "lowercase",
|
|
12
|
+
predicate: (value) => typeof value === "boolean" || value instanceof Boolean,
|
|
13
|
+
construct: (data) => YAML_TRUE_BOOLEANS.includes(data),
|
|
14
|
+
resolve: (data) => YAML_BOOLEANS.includes(data),
|
|
15
|
+
represent: {
|
|
16
|
+
// deno-lint-ignore ban-types
|
|
17
|
+
lowercase: (object) => {
|
|
18
|
+
const value = object instanceof Boolean ? object.valueOf() : object;
|
|
19
|
+
return value ? "true" : "false";
|
|
20
|
+
},
|
|
21
|
+
// deno-lint-ignore ban-types
|
|
22
|
+
uppercase: (object) => {
|
|
23
|
+
const value = object instanceof Boolean ? object.valueOf() : object;
|
|
24
|
+
return value ? "TRUE" : "FALSE";
|
|
25
|
+
},
|
|
26
|
+
// deno-lint-ignore ban-types
|
|
27
|
+
camelcase: (object) => {
|
|
28
|
+
const value = object instanceof Boolean ? object.valueOf() : object;
|
|
29
|
+
return value ? "True" : "False";
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// Ported from js-yaml v3.13.1:
|
|
2
|
+
// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
|
|
3
|
+
// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
|
|
4
|
+
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
5
|
+
import { isNegativeZero } from "../_utils.js";
|
|
6
|
+
const YAML_FLOAT_REGEXP = new RegExp(
|
|
7
|
+
// 2.5e4, 2.5 and integers
|
|
8
|
+
"^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?" +
|
|
9
|
+
// .2e4, .2
|
|
10
|
+
// special case, seems not from spec
|
|
11
|
+
"|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?" +
|
|
12
|
+
// .inf
|
|
13
|
+
"|[-+]?\\.(?:inf|Inf|INF)" +
|
|
14
|
+
// .nan
|
|
15
|
+
"|\\.(?:nan|NaN|NAN))$");
|
|
16
|
+
function resolveYamlFloat(data) {
|
|
17
|
+
if (!YAML_FLOAT_REGEXP.test(data) ||
|
|
18
|
+
// Quick hack to not allow integers end with `_`
|
|
19
|
+
// Probably should update regexp & check speed
|
|
20
|
+
data[data.length - 1] === "_") {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
function constructYamlFloat(data) {
|
|
26
|
+
let value = data.replace(/_/g, "").toLowerCase();
|
|
27
|
+
const sign = value[0] === "-" ? -1 : 1;
|
|
28
|
+
if (value[0] && "+-".includes(value[0])) {
|
|
29
|
+
value = value.slice(1);
|
|
30
|
+
}
|
|
31
|
+
if (value === ".inf") {
|
|
32
|
+
return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
|
|
33
|
+
}
|
|
34
|
+
if (value === ".nan") {
|
|
35
|
+
return NaN;
|
|
36
|
+
}
|
|
37
|
+
return sign * parseFloat(value);
|
|
38
|
+
}
|
|
39
|
+
const SCIENTIFIC_WITHOUT_DOT_REGEXP = /^[-+]?[0-9]+e/;
|
|
40
|
+
function representYamlFloat(
|
|
41
|
+
// deno-lint-ignore ban-types
|
|
42
|
+
object, style) {
|
|
43
|
+
const value = object instanceof Number ? object.valueOf() : object;
|
|
44
|
+
if (isNaN(value)) {
|
|
45
|
+
switch (style) {
|
|
46
|
+
case "lowercase":
|
|
47
|
+
return ".nan";
|
|
48
|
+
case "uppercase":
|
|
49
|
+
return ".NAN";
|
|
50
|
+
case "camelcase":
|
|
51
|
+
return ".NaN";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (Number.POSITIVE_INFINITY === value) {
|
|
55
|
+
switch (style) {
|
|
56
|
+
case "lowercase":
|
|
57
|
+
return ".inf";
|
|
58
|
+
case "uppercase":
|
|
59
|
+
return ".INF";
|
|
60
|
+
case "camelcase":
|
|
61
|
+
return ".Inf";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (Number.NEGATIVE_INFINITY === value) {
|
|
65
|
+
switch (style) {
|
|
66
|
+
case "lowercase":
|
|
67
|
+
return "-.inf";
|
|
68
|
+
case "uppercase":
|
|
69
|
+
return "-.INF";
|
|
70
|
+
case "camelcase":
|
|
71
|
+
return "-.Inf";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (isNegativeZero(value)) {
|
|
75
|
+
return "-0.0";
|
|
76
|
+
}
|
|
77
|
+
const res = value.toString(10);
|
|
78
|
+
// JS stringifier can build scientific format without dots: 5e-100,
|
|
79
|
+
// while YAML requires dot: 5.e-100. Fix it with simple hack
|
|
80
|
+
return SCIENTIFIC_WITHOUT_DOT_REGEXP.test(res) ? res.replace("e", ".e") : res;
|
|
81
|
+
}
|
|
82
|
+
function isFloat(object) {
|
|
83
|
+
if (object instanceof Number)
|
|
84
|
+
object = object.valueOf();
|
|
85
|
+
return typeof object === "number" &&
|
|
86
|
+
(object % 1 !== 0 || isNegativeZero(object));
|
|
87
|
+
}
|
|
88
|
+
export const float = {
|
|
89
|
+
tag: "tag:yaml.org,2002:float",
|
|
90
|
+
construct: constructYamlFloat,
|
|
91
|
+
defaultStyle: "lowercase",
|
|
92
|
+
kind: "scalar",
|
|
93
|
+
predicate: isFloat,
|
|
94
|
+
represent: representYamlFloat,
|
|
95
|
+
resolve: resolveYamlFloat,
|
|
96
|
+
};
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
// Ported from js-yaml v3.13.1:
|
|
2
|
+
// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
|
|
3
|
+
// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
|
|
4
|
+
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
5
|
+
import { isNegativeZero } from "../_utils.js";
|
|
6
|
+
function isCharCodeInRange(c, lower, upper) {
|
|
7
|
+
return lower <= c && c <= upper;
|
|
8
|
+
}
|
|
9
|
+
function isHexCode(c) {
|
|
10
|
+
return (isCharCodeInRange(c, 0x30, 0x39) || // 0-9
|
|
11
|
+
isCharCodeInRange(c, 0x41, 0x46) || // A-F
|
|
12
|
+
isCharCodeInRange(c, 0x61, 0x66) // a-f
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
function isOctCode(c) {
|
|
16
|
+
return isCharCodeInRange(c, 0x30, 0x37); // 0-7
|
|
17
|
+
}
|
|
18
|
+
function isDecCode(c) {
|
|
19
|
+
return isCharCodeInRange(c, 0x30, 0x39); // 0-9
|
|
20
|
+
}
|
|
21
|
+
function resolveYamlInteger(data) {
|
|
22
|
+
const max = data.length;
|
|
23
|
+
let index = 0;
|
|
24
|
+
let hasDigits = false;
|
|
25
|
+
if (!max)
|
|
26
|
+
return false;
|
|
27
|
+
let ch = data[index];
|
|
28
|
+
// sign
|
|
29
|
+
if (ch === "-" || ch === "+") {
|
|
30
|
+
ch = data[++index];
|
|
31
|
+
}
|
|
32
|
+
if (ch === "0") {
|
|
33
|
+
// 0
|
|
34
|
+
if (index + 1 === max)
|
|
35
|
+
return true;
|
|
36
|
+
ch = data[++index];
|
|
37
|
+
// base 2, base 8, base 16
|
|
38
|
+
if (ch === "b") {
|
|
39
|
+
// base 2
|
|
40
|
+
index++;
|
|
41
|
+
for (; index < max; index++) {
|
|
42
|
+
ch = data[index];
|
|
43
|
+
if (ch === "_")
|
|
44
|
+
continue;
|
|
45
|
+
if (ch !== "0" && ch !== "1")
|
|
46
|
+
return false;
|
|
47
|
+
hasDigits = true;
|
|
48
|
+
}
|
|
49
|
+
return hasDigits && ch !== "_";
|
|
50
|
+
}
|
|
51
|
+
if (ch === "x") {
|
|
52
|
+
// base 16
|
|
53
|
+
index++;
|
|
54
|
+
for (; index < max; index++) {
|
|
55
|
+
ch = data[index];
|
|
56
|
+
if (ch === "_")
|
|
57
|
+
continue;
|
|
58
|
+
if (!isHexCode(data.charCodeAt(index)))
|
|
59
|
+
return false;
|
|
60
|
+
hasDigits = true;
|
|
61
|
+
}
|
|
62
|
+
return hasDigits && ch !== "_";
|
|
63
|
+
}
|
|
64
|
+
// base 8
|
|
65
|
+
for (; index < max; index++) {
|
|
66
|
+
ch = data[index];
|
|
67
|
+
if (ch === "_")
|
|
68
|
+
continue;
|
|
69
|
+
if (!isOctCode(data.charCodeAt(index)))
|
|
70
|
+
return false;
|
|
71
|
+
hasDigits = true;
|
|
72
|
+
}
|
|
73
|
+
return hasDigits && ch !== "_";
|
|
74
|
+
}
|
|
75
|
+
// base 10 (except 0) or base 60
|
|
76
|
+
// value should not start with `_`;
|
|
77
|
+
if (ch === "_")
|
|
78
|
+
return false;
|
|
79
|
+
for (; index < max; index++) {
|
|
80
|
+
ch = data[index];
|
|
81
|
+
if (ch === "_")
|
|
82
|
+
continue;
|
|
83
|
+
if (!isDecCode(data.charCodeAt(index))) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
hasDigits = true;
|
|
87
|
+
}
|
|
88
|
+
// Should have digits and should not end with `_`
|
|
89
|
+
if (!hasDigits || ch === "_")
|
|
90
|
+
return false;
|
|
91
|
+
// base60 almost not used, no needs to optimize
|
|
92
|
+
return /^(:[0-5]?[0-9])+$/.test(data.slice(index));
|
|
93
|
+
}
|
|
94
|
+
function constructYamlInteger(data) {
|
|
95
|
+
let value = data;
|
|
96
|
+
if (value.includes("_")) {
|
|
97
|
+
value = value.replace(/_/g, "");
|
|
98
|
+
}
|
|
99
|
+
let sign = 1;
|
|
100
|
+
let ch = value[0];
|
|
101
|
+
if (ch === "-" || ch === "+") {
|
|
102
|
+
if (ch === "-")
|
|
103
|
+
sign = -1;
|
|
104
|
+
value = value.slice(1);
|
|
105
|
+
ch = value[0];
|
|
106
|
+
}
|
|
107
|
+
if (value === "0")
|
|
108
|
+
return 0;
|
|
109
|
+
if (ch === "0") {
|
|
110
|
+
if (value[1] === "b")
|
|
111
|
+
return sign * parseInt(value.slice(2), 2);
|
|
112
|
+
if (value[1] === "x")
|
|
113
|
+
return sign * parseInt(value, 16);
|
|
114
|
+
return sign * parseInt(value, 8);
|
|
115
|
+
}
|
|
116
|
+
return sign * parseInt(value, 10);
|
|
117
|
+
}
|
|
118
|
+
function isInteger(object) {
|
|
119
|
+
if (object instanceof Number)
|
|
120
|
+
object = object.valueOf();
|
|
121
|
+
return typeof object === "number" && object % 1 === 0 &&
|
|
122
|
+
!isNegativeZero(object);
|
|
123
|
+
}
|
|
124
|
+
export const int = {
|
|
125
|
+
tag: "tag:yaml.org,2002:int",
|
|
126
|
+
construct: constructYamlInteger,
|
|
127
|
+
defaultStyle: "decimal",
|
|
128
|
+
kind: "scalar",
|
|
129
|
+
predicate: isInteger,
|
|
130
|
+
represent: {
|
|
131
|
+
// deno-lint-ignore ban-types
|
|
132
|
+
binary(object) {
|
|
133
|
+
const value = object instanceof Number ? object.valueOf() : object;
|
|
134
|
+
return value >= 0
|
|
135
|
+
? `0b${value.toString(2)}`
|
|
136
|
+
: `-0b${value.toString(2).slice(1)}`;
|
|
137
|
+
},
|
|
138
|
+
// deno-lint-ignore ban-types
|
|
139
|
+
octal(object) {
|
|
140
|
+
const value = object instanceof Number ? object.valueOf() : object;
|
|
141
|
+
return value >= 0
|
|
142
|
+
? `0${value.toString(8)}`
|
|
143
|
+
: `-0${value.toString(8).slice(1)}`;
|
|
144
|
+
},
|
|
145
|
+
// deno-lint-ignore ban-types
|
|
146
|
+
decimal(object) {
|
|
147
|
+
const value = object instanceof Number ? object.valueOf() : object;
|
|
148
|
+
return value.toString(10);
|
|
149
|
+
},
|
|
150
|
+
// deno-lint-ignore ban-types
|
|
151
|
+
hexadecimal(object) {
|
|
152
|
+
const value = object instanceof Number ? object.valueOf() : object;
|
|
153
|
+
return value >= 0
|
|
154
|
+
? `0x${value.toString(16).toUpperCase()}`
|
|
155
|
+
: `-0x${value.toString(16).toUpperCase().slice(1)}`;
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
resolve: resolveYamlInteger,
|
|
159
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Ported from js-yaml v3.13.1:
|
|
2
|
+
// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
|
|
3
|
+
// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
|
|
4
|
+
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
5
|
+
export const map = {
|
|
6
|
+
tag: "tag:yaml.org,2002:map",
|
|
7
|
+
resolve() {
|
|
8
|
+
return true;
|
|
9
|
+
},
|
|
10
|
+
construct(data) {
|
|
11
|
+
return data !== null ? data : {};
|
|
12
|
+
},
|
|
13
|
+
kind: "mapping",
|
|
14
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Ported from js-yaml v3.13.1:
|
|
2
|
+
// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
|
|
3
|
+
// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
|
|
4
|
+
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
5
|
+
export const merge = {
|
|
6
|
+
tag: "tag:yaml.org,2002:merge",
|
|
7
|
+
kind: "scalar",
|
|
8
|
+
resolve: (data) => data === "<<" || data === null,
|
|
9
|
+
construct: (data) => data,
|
|
10
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Ported from js-yaml v3.13.1:
|
|
2
|
+
// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
|
|
3
|
+
// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
|
|
4
|
+
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
5
|
+
export const nil = {
|
|
6
|
+
tag: "tag:yaml.org,2002:null",
|
|
7
|
+
kind: "scalar",
|
|
8
|
+
defaultStyle: "lowercase",
|
|
9
|
+
predicate: (object) => object === null,
|
|
10
|
+
construct: () => null,
|
|
11
|
+
resolve: (data) => {
|
|
12
|
+
return (data === "~" ||
|
|
13
|
+
data === "null" ||
|
|
14
|
+
data === "Null" ||
|
|
15
|
+
data === "NULL");
|
|
16
|
+
},
|
|
17
|
+
represent: {
|
|
18
|
+
lowercase: () => "null",
|
|
19
|
+
uppercase: () => "NULL",
|
|
20
|
+
camelcase: () => "Null",
|
|
21
|
+
},
|
|
22
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Ported from js-yaml v3.13.1:
|
|
2
|
+
// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
|
|
3
|
+
// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
|
|
4
|
+
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
5
|
+
import { isPlainObject } from "../_utils.js";
|
|
6
|
+
function resolveYamlOmap(data) {
|
|
7
|
+
const objectKeys = new Set();
|
|
8
|
+
for (const object of data) {
|
|
9
|
+
if (!isPlainObject(object))
|
|
10
|
+
return false;
|
|
11
|
+
const keys = Object.keys(object);
|
|
12
|
+
if (keys.length !== 1)
|
|
13
|
+
return false;
|
|
14
|
+
for (const key of keys) {
|
|
15
|
+
if (objectKeys.has(key))
|
|
16
|
+
return false;
|
|
17
|
+
objectKeys.add(key);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
export const omap = {
|
|
23
|
+
tag: "tag:yaml.org,2002:omap",
|
|
24
|
+
kind: "sequence",
|
|
25
|
+
resolve: resolveYamlOmap,
|
|
26
|
+
construct(data) {
|
|
27
|
+
return data;
|
|
28
|
+
},
|
|
29
|
+
};
|