@dipoleml/dcode-cli 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/THIRD-PARTY-NOTICES.md +1081 -12
- package/dist/dcode.cjs +59368 -45608
- package/dist/packages/browser-use-plugin/README.md +12 -12
- package/dist/packages/browser-use-plugin/docs/api.json +1 -1
- package/dist/packages/browser-use-plugin/docs/overview.md +5 -4
- package/dist/packages/browser-use-plugin/docs/workflow.md +1 -1
- package/dist/packages/browser-use-plugin/scripts/build.mjs +1 -0
- package/dist/packages/browser-use-plugin/skills/control-browser/SKILL.md +10 -7
- package/dist/packages/bundled-skills/skills/dynamic-workflows/SKILL.md +760 -687
- package/dist/packages/bundled-skills/skills/dynamic-workflows/examples.md +310 -1
- package/dist/packages/bundled-skills/skills/dynamic-workflows/patterns.md +336 -4
- package/dist/packages/node-repl-host/.dcode-plugin/plugin.json +1 -1
- package/dist/packages/node-repl-host/dist/mcp/server.js +9 -14
- package/dist/packages/node-repl-host/scripts/build.mjs +1 -0
- package/dist/provider/dcode-builtin.json +6612 -202
- package/node_modules/@dcode/contracts/dist/compact/index.d.ts +7 -7
- package/node_modules/@dcode/contracts/dist/config/index.d.ts +1 -1
- package/node_modules/@dcode/contracts/dist/events/event-reducer.js +1 -0
- package/node_modules/@dcode/contracts/dist/events/in-memory-session-event-store.js +3 -2
- package/node_modules/@dcode/contracts/dist/events/session-event-retention.d.ts +8 -0
- package/node_modules/@dcode/contracts/dist/events/session-event-retention.js +18 -0
- package/node_modules/@dcode/contracts/dist/events/session.events.d.ts +94 -16
- package/node_modules/@dcode/contracts/dist/events/session.events.js +10 -0
- package/node_modules/@dcode/contracts/dist/hooks/index.d.ts +134 -134
- package/node_modules/@dcode/contracts/dist/hooks/workspace-hook-trust.d.ts +14 -14
- package/node_modules/@dcode/contracts/dist/index.d.ts +2 -0
- package/node_modules/@dcode/contracts/dist/index.js +2 -0
- package/node_modules/@dcode/contracts/dist/interfaces/browser-control.port.d.ts +22 -0
- package/node_modules/@dcode/contracts/dist/interfaces/dynamic-workflow-run-hole.port.d.ts +92 -0
- package/node_modules/@dcode/contracts/dist/interfaces/dynamic-workflow-run-hole.port.js +9 -0
- package/node_modules/@dcode/contracts/dist/interfaces/dynamic-workflow-run-retune.port.d.ts +4 -4
- package/node_modules/@dcode/contracts/dist/interfaces/dynamic-workflow-run-retune.port.js +7 -3
- package/node_modules/@dcode/contracts/dist/interfaces/dynamic-workflow-run-workspace.port.js +8 -3
- package/node_modules/@dcode/contracts/dist/interfaces/dynamic-workflow-run.port.d.ts +119 -18
- package/node_modules/@dcode/contracts/dist/interfaces/dynamic-workflow-run.port.js +13 -0
- package/node_modules/@dcode/contracts/dist/interfaces/index.d.ts +1 -0
- package/node_modules/@dcode/contracts/dist/interfaces/index.js +1 -0
- package/node_modules/@dcode/contracts/dist/interfaces/mcp.port.d.ts +161 -1
- package/node_modules/@dcode/contracts/dist/interfaces/mcp.port.js +17 -0
- package/node_modules/@dcode/contracts/dist/interfaces/permission-full-access.d.ts +15 -15
- package/node_modules/@dcode/contracts/dist/interfaces/permission-full-access.js +1 -1
- package/node_modules/@dcode/contracts/dist/interfaces/permission.port.d.ts +15 -1
- package/node_modules/@dcode/contracts/dist/interfaces/provider-endpoint-routing.port.d.ts +19 -0
- package/node_modules/@dcode/contracts/dist/interfaces/provider-endpoint-routing.port.js +1 -0
- package/node_modules/@dcode/contracts/dist/interfaces/session-store.port.d.ts +4 -2
- package/node_modules/@dcode/contracts/dist/interfaces/session-store.port.js +5 -0
- package/node_modules/@dcode/contracts/dist/interfaces/session.port.d.ts +92 -3
- package/node_modules/@dcode/contracts/dist/interfaces/session.port.js +4 -1
- package/node_modules/@dcode/contracts/dist/interfaces/topic-resource.port.d.ts +25 -0
- package/node_modules/@dcode/contracts/dist/interfaces/topic-resource.port.js +1 -0
- package/node_modules/@dcode/contracts/dist/model/index.d.ts +15 -1
- package/node_modules/@dcode/contracts/dist/model/index.js +5 -0
- package/node_modules/@dcode/contracts/dist/model/invocation-context.d.ts +6 -1
- package/node_modules/@dcode/contracts/dist/plugins/index.d.ts +23 -0
- package/node_modules/@dcode/contracts/dist/plugins/index.js +2 -1
- package/node_modules/@dcode/contracts/dist/telemetry/agent-execution.d.ts +2 -0
- package/node_modules/@dcode/contracts/dist/telemetry/agent-execution.js +2 -0
- package/node_modules/@dcode/contracts/dist/telemetry/index.d.ts +5 -1
- package/node_modules/@dcode/contracts/dist/telemetry/index.js +12 -0
- package/node_modules/@dcode/contracts/dist/tools/agent.d.ts +12 -12
- package/node_modules/@dcode/contracts/dist/tools/amend-workflow.d.ts +39 -15
- package/node_modules/@dcode/contracts/dist/tools/amend-workflow.js +12 -6
- package/node_modules/@dcode/contracts/dist/tools/automation.d.ts +32 -32
- package/node_modules/@dcode/contracts/dist/tools/automation.js +1 -1
- package/node_modules/@dcode/contracts/dist/tools/bash.d.ts +16 -16
- package/node_modules/@dcode/contracts/dist/tools/bash.js +1 -1
- package/node_modules/@dcode/contracts/dist/tools/create-workflow.d.ts +365 -66
- package/node_modules/@dcode/contracts/dist/tools/create-workflow.js +92 -11
- package/node_modules/@dcode/contracts/dist/tools/edit.d.ts +16 -16
- package/node_modules/@dcode/contracts/dist/tools/eval-workflow-snippet.d.ts +6 -6
- package/node_modules/@dcode/contracts/dist/tools/eval-workflow-snippet.js +5 -1
- package/node_modules/@dcode/contracts/dist/tools/fill-workflow-hole.d.ts +729 -0
- package/node_modules/@dcode/contracts/dist/tools/fill-workflow-hole.js +102 -0
- package/node_modules/@dcode/contracts/dist/tools/get-workflow-run.d.ts +136 -28
- package/node_modules/@dcode/contracts/dist/tools/get-workflow-run.js +36 -0
- package/node_modules/@dcode/contracts/dist/tools/grep.d.ts +4 -4
- package/node_modules/@dcode/contracts/dist/tools/grep.js +4 -0
- package/node_modules/@dcode/contracts/dist/tools/index.d.ts +2 -0
- package/node_modules/@dcode/contracts/dist/tools/index.js +4 -0
- package/node_modules/@dcode/contracts/dist/tools/list-saved-workflows.d.ts +8 -8
- package/node_modules/@dcode/contracts/dist/tools/list-workflow-runs.d.ts +8 -8
- package/node_modules/@dcode/contracts/dist/tools/node-repl.d.ts +2 -2
- package/node_modules/@dcode/contracts/dist/tools/off-peak.d.ts +3 -3
- package/node_modules/@dcode/contracts/dist/tools/off-peak.js +2 -2
- package/node_modules/@dcode/contracts/dist/tools/performance.d.ts +22 -22
- package/node_modules/@dcode/contracts/dist/tools/plan-mode.d.ts +12 -12
- package/node_modules/@dcode/contracts/dist/tools/plan-mode.js +6 -4
- package/node_modules/@dcode/contracts/dist/tools/read-session-context.d.ts +86 -13
- package/node_modules/@dcode/contracts/dist/tools/read-session-context.js +37 -6
- package/node_modules/@dcode/contracts/dist/tools/read.d.ts +38 -38
- package/node_modules/@dcode/contracts/dist/tools/save-workflow.d.ts +21 -10
- package/node_modules/@dcode/contracts/dist/tools/save-workflow.js +22 -2
- package/node_modules/@dcode/contracts/dist/tools/saved-workflow.d.ts +4 -4
- package/node_modules/@dcode/contracts/dist/tools/send-message.d.ts +2 -2
- package/node_modules/@dcode/contracts/dist/tools/skill.js +1 -0
- package/node_modules/@dcode/contracts/dist/tools/task-output.d.ts +6 -6
- package/node_modules/@dcode/contracts/dist/tools/tool-result-metadata.d.ts +1228 -259
- package/node_modules/@dcode/contracts/dist/tools/tool-result-metadata.js +41 -0
- package/node_modules/@dcode/contracts/dist/tools/webfetch.d.ts +2 -2
- package/node_modules/@dcode/contracts/dist/tools/workflow-observation-display.d.ts +20 -20
- package/node_modules/@dcode/contracts/dist/tools/workflow-settings.d.ts +55 -0
- package/node_modules/@dcode/contracts/dist/tools/workflow-settings.js +86 -0
- package/node_modules/@dcode/contracts/dist/tools/workflow.d.ts +8 -8
- package/node_modules/@dcode/contracts/dist/tools/write.d.ts +18 -18
- package/node_modules/@dcode/contracts/dist/workflow/index.d.ts +98 -98
- package/node_modules/@dcode/contracts/dist/workflow/script.d.ts +12 -12
- package/node_modules/@dcode/i18n/dist/index.js +2 -2
- package/node_modules/@dcode/i18n/dist/locale.d.ts +1 -1
- package/node_modules/@dcode/i18n/dist/locale.js +4 -4
- package/node_modules/@dcode/i18n/dist/locales/en-US.js +5 -5
- package/node_modules/@dcode/i18n/dist/locales/fr-CA.d.ts +3 -0
- package/node_modules/@dcode/i18n/dist/locales/fr-CA.js +354 -0
- package/node_modules/@dcode/model-option-map/package.json +1 -1
- package/node_modules/@dcode/shared/dist/api-key-usage-scene.d.ts +7 -0
- package/node_modules/@dcode/shared/dist/api-key-usage-scene.js +6 -0
- package/node_modules/@dcode/shared/dist/attachment-source.d.ts +8 -0
- package/node_modules/@dcode/shared/dist/attachment-source.js +4 -0
- package/node_modules/@dcode/shared/dist/background-bash-output.d.ts +4 -4
- package/node_modules/@dcode/shared/dist/bots.d.ts +763 -15
- package/node_modules/@dcode/shared/dist/bots.js +236 -2
- package/node_modules/@dcode/shared/dist/browser-use/command-metadata.d.ts +2 -2
- package/node_modules/@dcode/shared/dist/browser-use/commands.d.ts +4 -3
- package/node_modules/@dcode/shared/dist/browser-use/commands.js +3 -1
- package/node_modules/@dcode/shared/dist/browser-use/nodeReplBroker.d.ts +5 -4
- package/node_modules/@dcode/shared/dist/browser-use/result.d.ts +6 -6
- package/node_modules/@dcode/shared/dist/channel-mention.d.ts +173 -0
- package/node_modules/@dcode/shared/dist/channel-mention.js +120 -0
- package/node_modules/@dcode/shared/dist/channels.d.ts +128 -1
- package/node_modules/@dcode/shared/dist/channels.js +66 -0
- package/node_modules/@dcode/shared/dist/clientConfig.d.ts +1 -0
- package/node_modules/@dcode/shared/dist/clientConfig.js +18 -2
- package/node_modules/@dcode/shared/dist/cloudContent.d.ts +160 -0
- package/node_modules/@dcode/shared/dist/cloudContent.js +116 -0
- package/node_modules/@dcode/shared/dist/coding-plan-subscription.d.ts +59 -0
- package/node_modules/@dcode/shared/dist/conversation-message-projection-policy.js +2 -0
- package/node_modules/@dcode/shared/dist/conversation-share.d.ts +351 -47
- package/node_modules/@dcode/shared/dist/conversation-share.js +8 -6
- package/node_modules/@dcode/shared/dist/conversationSelection.d.ts +23 -0
- package/node_modules/@dcode/shared/dist/conversationSelection.js +30 -0
- package/node_modules/@dcode/shared/dist/database-startup.d.ts +5 -5
- package/node_modules/@dcode/shared/dist/dcode-agent-model-state.js +14 -6
- package/node_modules/@dcode/shared/dist/dcode-agent-policy.d.ts +16 -1
- package/node_modules/@dcode/shared/dist/dcode-agent-policy.js +17 -1
- package/node_modules/@dcode/shared/dist/dcode-agent-runtime.js +1 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol/index.d.ts +1733 -318
- package/node_modules/@dcode/shared/dist/dcode-protocol/index.js +555 -24
- package/node_modules/@dcode/shared/dist/dcode-protocol/trace.d.ts +9 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol/trace.js +10 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-legacy-types.d.ts +30 -20
- package/node_modules/@dcode/shared/dist/dcode-protocol-legacy-types.js +3 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/apply.js +12 -3
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/attachment-ref.d.ts +5 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/attachment-ref.js +3 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/coalesce.d.ts +3 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/coalesce.js +3 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/command.d.ts +359 -28
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/command.js +67 -45
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/controller.d.ts +170 -65
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/create-session-config.d.ts +20 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/create-session-config.js +15 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/create-workflow-display.d.ts +34 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/create-workflow-display.js +45 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/delta.d.ts +1453 -278
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/delta.js +45 -2
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/index.d.ts +1 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/index.js +1 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/input-intent.d.ts +173 -6
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/input-intent.js +29 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/rows.d.ts +731 -125
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/rows.js +23 -11
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/sessions-index-workflow-activity.d.ts +30 -11
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/sessions-index-workflow-activity.js +35 -3
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/sessions-index.d.ts +40 -25
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/snapshot.d.ts +1444 -216
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/snapshot.js +3 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/submission.d.ts +1 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/submission.js +1 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/telemetry.d.ts +62 -58
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/toolDisplay.d.ts +185 -50
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/toolDisplay.js +31 -3
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/transport.d.ts +7145 -1002
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/transport.js +18 -5
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/wire-assembler.js +2 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/wire-fault.js +4 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/wire-reassembly.js +5 -3
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-artifacts.d.ts +29 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-artifacts.js +64 -4
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-command-rejections.d.ts +13 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-command-rejections.js +23 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-observation-display.d.ts +14 -14
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-row-meta.d.ts +52 -8
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-row-meta.js +22 -3
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-run-settings-command.d.ts +4 -4
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-run-settings-command.js +2 -2
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-actor-session.d.ts +21 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-actor-session.js +44 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-actor-status.d.ts +1 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-actor-status.js +3 -2
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-caps.js +5 -4
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-concurrency.d.ts +26 -19
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-concurrency.js +40 -32
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-delta.d.ts +4 -3
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-delta.js +4 -3
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-entries.d.ts +12 -2
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-entries.js +44 -6
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-eviction.d.ts +2 -2
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-eviction.js +17 -10
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-holes.d.ts +33 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-holes.js +202 -0
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-legacy.d.ts +1 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-legacy.js +1 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-phases.js +10 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-reducer.d.ts +1 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-reducer.js +29 -22
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-started.js +5 -2
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-tables.js +2 -1
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs-unlisted.js +6 -3
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs.d.ts +125 -40
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-runs.js +101 -26
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workflow-workspace.d.ts +4 -4
- package/node_modules/@dcode/shared/dist/dcode-protocol-v4/workspace-hook-review.d.ts +1 -1
- package/node_modules/@dcode/shared/dist/dcode-session-content-profile.d.ts +5 -0
- package/node_modules/@dcode/shared/dist/dcode-session-content-profile.js +49 -0
- package/node_modules/@dcode/shared/dist/dcode-slash-command-help.js +4 -4
- package/node_modules/@dcode/shared/dist/dcode-task-mode-schema.d.ts +6 -1
- package/node_modules/@dcode/shared/dist/dcode-task-mode-schema.js +13 -1
- package/node_modules/@dcode/shared/dist/dcode-task-types-core.d.ts +12 -2
- package/node_modules/@dcode/shared/dist/dcode-task-types.d.ts +23 -0
- package/node_modules/@dcode/shared/dist/dcodeEndpoint.d.ts +20 -1
- package/node_modules/@dcode/shared/dist/dcodeEndpoint.js +98 -17
- package/node_modules/@dcode/shared/dist/desktopMenu.js +48 -48
- package/node_modules/@dcode/shared/dist/dynamic-workflow-feature.d.ts +35 -6
- package/node_modules/@dcode/shared/dist/dynamic-workflow-feature.js +45 -6
- package/node_modules/@dcode/shared/dist/env.d.ts +5 -4
- package/node_modules/@dcode/shared/dist/env.js +9 -9
- package/node_modules/@dcode/shared/dist/errors.d.ts +24 -0
- package/node_modules/@dcode/shared/dist/errors.js +54 -0
- package/node_modules/@dcode/shared/dist/execution-state.d.ts +4 -2
- package/node_modules/@dcode/shared/dist/execution-state.js +1 -1
- package/node_modules/@dcode/shared/dist/feedback.d.ts +1 -1
- package/node_modules/@dcode/shared/dist/gen-ui/contract.d.ts +140 -0
- package/node_modules/@dcode/shared/dist/gen-ui/contract.example.d.ts +5 -0
- package/node_modules/@dcode/shared/dist/gen-ui/contract.example.js +36 -0
- package/node_modules/@dcode/shared/dist/gen-ui/contract.js +196 -0
- package/node_modules/@dcode/shared/dist/gen-ui/contract.test.d.ts +2 -0
- package/node_modules/@dcode/shared/dist/gen-ui/contract.test.js +75 -0
- package/node_modules/@dcode/shared/dist/gen-ui/index.d.ts +2 -0
- package/node_modules/@dcode/shared/dist/gen-ui/index.js +2 -0
- package/node_modules/@dcode/shared/dist/gen-ui/module.d.ts +7 -0
- package/node_modules/@dcode/shared/dist/gen-ui/module.js +7 -0
- package/node_modules/@dcode/shared/dist/gen-ui/tweakProtocol.d.ts +202 -0
- package/node_modules/@dcode/shared/dist/gen-ui/tweakProtocol.js +126 -0
- package/node_modules/@dcode/shared/dist/helpAppConfig.d.ts +1 -1
- package/node_modules/@dcode/shared/dist/helpAppConfig.js +2 -2
- package/node_modules/@dcode/shared/dist/highspeed.d.ts +181 -0
- package/node_modules/@dcode/shared/dist/highspeed.js +112 -0
- package/node_modules/@dcode/shared/dist/index.d.ts +27 -5
- package/node_modules/@dcode/shared/dist/index.js +24 -2
- package/node_modules/@dcode/shared/dist/localTtft.d.ts +27 -27
- package/node_modules/@dcode/shared/dist/marketingTouch.d.ts +930 -0
- package/node_modules/@dcode/shared/dist/marketingTouch.js +170 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/appTools.d.ts +83 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/appTools.js +124 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/content.d.ts +4 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/content.js +8 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/contract.d.ts +241 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/contract.example.d.ts +31 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/contract.example.js +42 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/contract.js +101 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/contract.test.d.ts +2 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/contract.test.js +64 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/hostContract.d.ts +47 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/hostContract.js +8 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/index.d.ts +9 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/index.js +9 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/instance.d.ts +10 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/instance.js +11 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/module.d.ts +12 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/module.js +12 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/resourceMime.d.ts +8 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/resourceMime.js +73 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/sampling.d.ts +101 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/sampling.js +107 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/sampling.test.d.ts +2 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/sampling.test.js +55 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/schemas.d.ts +78 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/schemas.js +65 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/toolMeta.d.ts +39 -0
- package/node_modules/@dcode/shared/dist/mcp-apps/toolMeta.js +199 -0
- package/node_modules/@dcode/shared/dist/mcp.d.ts +6 -2
- package/node_modules/@dcode/shared/dist/memory.d.ts +9 -0
- package/node_modules/@dcode/shared/dist/memory.js +2 -0
- package/node_modules/@dcode/shared/dist/model-execution.d.ts +31 -0
- package/node_modules/@dcode/shared/dist/model-execution.js +38 -0
- package/node_modules/@dcode/shared/dist/networkCapture.d.ts +49 -0
- package/node_modules/@dcode/shared/dist/networkCapture.js +41 -0
- package/node_modules/@dcode/shared/dist/node/genUiPaths.d.ts +6 -0
- package/node_modules/@dcode/shared/dist/node/genUiPaths.js +16 -0
- package/node_modules/@dcode/shared/dist/node/genUiPaths.test.d.ts +2 -0
- package/node_modules/@dcode/shared/dist/node/genUiPaths.test.js +30 -0
- package/node_modules/@dcode/shared/dist/node/networkCapture.d.ts +8 -0
- package/node_modules/@dcode/shared/dist/node/networkCapture.js +96 -0
- package/node_modules/@dcode/shared/dist/node/officialPluginCache.d.ts +1 -2
- package/node_modules/@dcode/shared/dist/node/subagentMarkdownMigration.d.ts +1 -2
- package/node_modules/@dcode/shared/dist/node.d.ts +2 -0
- package/node_modules/@dcode/shared/dist/node.js +2 -0
- package/node_modules/@dcode/shared/dist/output-style.d.ts +17 -0
- package/node_modules/@dcode/shared/dist/output-style.js +2 -0
- package/node_modules/@dcode/shared/dist/platform.d.ts +149 -1
- package/node_modules/@dcode/shared/dist/platform.js +2 -0
- package/node_modules/@dcode/shared/dist/platformUpdate.d.ts +61 -0
- package/node_modules/@dcode/shared/dist/platformUpdate.js +2 -0
- package/node_modules/@dcode/shared/dist/plugin-marketplaces.d.ts +5 -0
- package/node_modules/@dcode/shared/dist/plugin-marketplaces.js +20 -14
- package/node_modules/@dcode/shared/dist/project-access-token-client.d.ts +42 -0
- package/node_modules/@dcode/shared/dist/project-access-token-client.js +260 -0
- package/node_modules/@dcode/shared/dist/project-access-token-response.d.ts +4 -0
- package/node_modules/@dcode/shared/dist/project-access-token-response.js +9 -0
- package/node_modules/@dcode/shared/dist/project-access-token.d.ts +45 -0
- package/node_modules/@dcode/shared/dist/project-access-token.js +164 -0
- package/node_modules/@dcode/shared/dist/protocol.d.ts +41 -4
- package/node_modules/@dcode/shared/dist/protocol.js +1 -1
- package/node_modules/@dcode/shared/dist/provider-provisioning.d.ts +26 -2
- package/node_modules/@dcode/shared/dist/provider-provisioning.js +19 -3
- package/node_modules/@dcode/shared/dist/providers.d.ts +1 -2
- package/node_modules/@dcode/shared/dist/providers.js +1 -1
- package/node_modules/@dcode/shared/dist/remote-workspace-identity.d.ts +6 -1
- package/node_modules/@dcode/shared/dist/remote-workspace-identity.js +35 -1
- package/node_modules/@dcode/shared/dist/remoteAppConfig.js +1 -1
- package/node_modules/@dcode/shared/dist/remoteEnvironmentKey.js +19 -0
- package/node_modules/@dcode/shared/dist/remoteTarget.d.ts +14 -1
- package/node_modules/@dcode/shared/dist/remoteTarget.js +4 -0
- package/node_modules/@dcode/shared/dist/remoteUsageTelemetry.d.ts +27 -0
- package/node_modules/@dcode/shared/dist/remoteUsageTelemetry.js +43 -0
- package/node_modules/@dcode/shared/dist/rendererActionTrace.d.ts +35 -35
- package/node_modules/@dcode/shared/dist/request-security-edition/index.d.ts +3 -0
- package/node_modules/@dcode/shared/dist/request-security-edition/index.js +3 -0
- package/node_modules/@dcode/shared/dist/request-security-edition/policy.d.ts +3 -0
- package/node_modules/@dcode/shared/dist/request-security-edition/policy.js +5 -0
- package/node_modules/@dcode/shared/dist/request-security-edition/verification-policy.d.ts +19 -0
- package/node_modules/@dcode/shared/dist/request-security-edition/verification-policy.js +29 -0
- package/node_modules/@dcode/shared/dist/rewardsBridge.d.ts +8 -0
- package/node_modules/@dcode/shared/dist/rewardsBridge.js +80 -0
- package/node_modules/@dcode/shared/dist/rewardsEmbedded.d.ts +37 -0
- package/node_modules/@dcode/shared/dist/rewardsEmbedded.js +50 -0
- package/node_modules/@dcode/shared/dist/sessionCreateTelemetry.d.ts +3 -3
- package/node_modules/@dcode/shared/dist/subagent-profile-frontmatter.d.ts +10 -0
- package/node_modules/@dcode/shared/dist/subagent-profile-frontmatter.js +212 -0
- package/node_modules/@dcode/shared/dist/subagent-profile-parser.d.ts +10 -0
- package/node_modules/@dcode/shared/dist/subagent-profile-parser.js +200 -0
- package/node_modules/@dcode/shared/dist/subagent-profile.d.ts +82 -0
- package/node_modules/@dcode/shared/dist/subagent-profile.js +28 -0
- package/node_modules/@dcode/shared/dist/subagent-runtime-config.d.ts +135 -0
- package/node_modules/@dcode/shared/dist/subagent-runtime-config.js +39 -0
- package/node_modules/@dcode/shared/dist/subagents-types.d.ts +1 -1
- package/node_modules/@dcode/shared/dist/task-realtime-core.d.ts +57 -24
- package/node_modules/@dcode/shared/dist/task-realtime-core.js +8 -2
- package/node_modules/@dcode/shared/dist/test-ids-workflow.d.ts +4 -0
- package/node_modules/@dcode/shared/dist/test-ids-workflow.js +5 -0
- package/node_modules/@dcode/shared/dist/test-ids.d.ts +25 -0
- package/node_modules/@dcode/shared/dist/test-ids.js +25 -0
- package/node_modules/@dcode/shared/dist/tool-identity.d.ts +1 -1
- package/node_modules/@dcode/shared/dist/tool-identity.js +4 -0
- package/node_modules/@dcode/shared/dist/tool-plan-adapter.js +14 -1
- package/node_modules/@dcode/shared/dist/usage-stats.d.ts +13 -0
- package/node_modules/@dcode/shared/dist/validation.d.ts +1461 -85
- package/node_modules/@dcode/shared/dist/validation.js +423 -14
- package/node_modules/@dcode/shared/dist/validationAppSettings.d.ts +71 -15
- package/node_modules/@dcode/shared/dist/validationAppSettings.js +74 -12
- package/node_modules/@dcode/shared/dist/web-remote-control-heartbeat.d.ts +8 -0
- package/node_modules/@dcode/shared/dist/web-remote-control-heartbeat.js +40 -0
- package/node_modules/@dcode/shared/dist/web-remote-control-rpc-transport.d.ts +183 -0
- package/node_modules/@dcode/shared/dist/web-remote-control-rpc-transport.js +562 -0
- package/node_modules/@dcode/shared/dist/web-remote-control.d.ts +645 -0
- package/node_modules/@dcode/shared/dist/web-remote-control.js +174 -0
- package/node_modules/@dcode/shared/package.json +5 -2
- package/node_modules/@dcode/tui/dist/app-approval-panel.js +3 -2
- package/node_modules/@dcode/tui/dist/app-approval.d.ts +3 -1
- package/node_modules/@dcode/tui/dist/app-approval.js +9 -5
- package/node_modules/@dcode/tui/dist/app-compact-timeline.d.ts +3 -0
- package/node_modules/@dcode/tui/dist/app-compact-timeline.js +5 -2
- package/node_modules/@dcode/tui/dist/app-empty-transcript.d.ts +1 -0
- package/node_modules/@dcode/tui/dist/app-empty-transcript.js +1 -1
- package/node_modules/@dcode/tui/dist/app-file-mentions.d.ts +2 -0
- package/node_modules/@dcode/tui/dist/app-file-mentions.js +2 -2
- package/node_modules/@dcode/tui/dist/app-input-pane.d.ts +38 -0
- package/node_modules/@dcode/tui/dist/app-input-pane.js +19 -19
- package/node_modules/@dcode/tui/dist/app-input-status.d.ts +17 -0
- package/node_modules/@dcode/tui/dist/app-input-status.js +4 -4
- package/node_modules/@dcode/tui/dist/app-input.d.ts +1 -0
- package/node_modules/@dcode/tui/dist/app-input.js +1 -1
- package/node_modules/@dcode/tui/dist/app-markdown-theme.d.ts +2 -1
- package/node_modules/@dcode/tui/dist/app-markdown-theme.js +1 -1
- package/node_modules/@dcode/tui/dist/app-markdown.d.ts +1 -0
- package/node_modules/@dcode/tui/dist/app-markdown.js +1 -1
- package/node_modules/@dcode/tui/dist/app-mode-command.d.ts +3 -0
- package/node_modules/@dcode/tui/dist/app-mode-command.js +4 -4
- package/node_modules/@dcode/tui/dist/app-mode-suggestion-panel.d.ts +5 -0
- package/node_modules/@dcode/tui/dist/app-mode-suggestion-panel.js +1 -1
- package/node_modules/@dcode/tui/dist/app-mode.d.ts +1 -1
- package/node_modules/@dcode/tui/dist/app-mode.js +1 -1
- package/node_modules/@dcode/tui/dist/app-model-ref.d.ts +1 -0
- package/node_modules/@dcode/tui/dist/app-model-ref.js +1 -1
- package/node_modules/@dcode/tui/dist/app-motion.d.ts +13 -0
- package/node_modules/@dcode/tui/dist/app-motion.js +17 -7
- package/node_modules/@dcode/tui/dist/app-session-event-handler.d.ts +33 -0
- package/node_modules/@dcode/tui/dist/app-session-event-handler.js +4 -4
- package/node_modules/@dcode/tui/dist/app-shiki-diff-view.d.ts +18 -1
- package/node_modules/@dcode/tui/dist/app-shiki-diff-view.js +3 -3
- package/node_modules/@dcode/tui/dist/app-shiki-highlighter.d.ts +3 -0
- package/node_modules/@dcode/tui/dist/app-shiki-highlighter.js +7 -2
- package/node_modules/@dcode/tui/dist/app-sidebar-layout.d.ts +10 -0
- package/node_modules/@dcode/tui/dist/app-sidebar-layout.js +4 -4
- package/node_modules/@dcode/tui/dist/app-submit.d.ts +1 -0
- package/node_modules/@dcode/tui/dist/app-submit.js +1 -1
- package/node_modules/@dcode/tui/dist/app-thought-components.d.ts +7 -0
- package/node_modules/@dcode/tui/dist/app-thought-components.js +2 -2
- package/node_modules/@dcode/tui/dist/app-tool-transcript.d.ts +1 -0
- package/node_modules/@dcode/tui/dist/app-tool-transcript.js +3 -0
- package/node_modules/@dcode/tui/dist/app-view.d.ts +27 -0
- package/node_modules/@dcode/tui/dist/app-view.js +1 -1
- package/node_modules/@dcode/tui/dist/app-workflow-card.js +1 -1
- package/node_modules/@dcode/tui/dist/app-workflow-seed.d.ts +18 -1
- package/node_modules/@dcode/tui/dist/app-workflow-seed.js +4 -4
- package/node_modules/@dcode/tui/dist/index.js +5118 -2579
- package/node_modules/@dcode/tui/dist/tui.d.ts +3 -0
- package/node_modules/@dcode/tui/dist/tui.js +1 -1
- package/node_modules/@dcode/tui/dist/types.d.ts +1 -1
- package/node_modules/oniguruma-parser/LICENSE +1 -1
- package/node_modules/oniguruma-parser/README.md +15 -61
- package/node_modules/oniguruma-parser/dist/oniguruma-parser.min.js +4 -4
- package/node_modules/oniguruma-parser/dist/parser/parse.js +1 -1
- package/node_modules/oniguruma-parser/dist/traverser/traverse.js +1 -1
- package/node_modules/oniguruma-parser/package.json +5 -5
- package/node_modules/oniguruma-to-es/dist/cjs/generate.d.ts +1 -1
- package/node_modules/oniguruma-to-es/dist/cjs/index.js +121 -120
- package/node_modules/oniguruma-to-es/dist/cjs/subclass.d.ts +2 -2
- package/node_modules/oniguruma-to-es/dist/cjs/transform.d.ts +3 -5
- package/node_modules/oniguruma-to-es/dist/cjs/unicode.d.ts +1 -1
- package/node_modules/oniguruma-to-es/dist/esm/generate.d.ts +1 -1
- package/node_modules/oniguruma-to-es/dist/esm/index.js +1 -3
- package/node_modules/oniguruma-to-es/dist/esm/subclass.d.ts +2 -2
- package/node_modules/oniguruma-to-es/dist/esm/transform.d.ts +3 -5
- package/node_modules/oniguruma-to-es/dist/esm/unicode.d.ts +1 -1
- package/node_modules/oniguruma-to-es/dist/index.min.js +6 -6
- package/node_modules/oniguruma-to-es/package.json +5 -5
- package/package.json +5 -5
|
@@ -7,8 +7,14 @@ define every type it names.
|
|
|
7
7
|
The snippets here are **fragments, not runnable scripts**: they name types and subagents that
|
|
8
8
|
the surrounding prose leaves to you. Complete scripts live in `examples.md`.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
**Start with the pipeline shapes.** Most scripts have more than one stage, and the stages
|
|
11
|
+
should work at the same time, each item moving on as soon as it is ready (SKILL.md §7). #10
|
|
12
|
+
chains stages that map one to one inside one fan-out; #11 streams items between stages through
|
|
13
|
+
channels; #12 adds a feedback loop from a later stage to an earlier one. The other shapes are
|
|
14
|
+
the pieces those pipelines are built from.
|
|
15
|
+
|
|
16
|
+
For the API surface itself, read SKILL.md §16. For the reasoning behind these choices, read
|
|
17
|
+
the rest of `SKILL.md`.
|
|
12
18
|
|
|
13
19
|
---
|
|
14
20
|
|
|
@@ -23,6 +29,7 @@ const paths = await files.glob("src/**/*.ts");
|
|
|
23
29
|
log(`fanning out over ${paths.length} files`);
|
|
24
30
|
|
|
25
31
|
phase("Security-audit each file independently");
|
|
32
|
+
// The report below needs every verdict, so this join is the right one.
|
|
26
33
|
const verdicts = await Promise.all(
|
|
27
34
|
paths.map((p) =>
|
|
28
35
|
agent(`auditor-${p}`).ask<Verdict>(`Security-review ${p}. Report only real issues.`),
|
|
@@ -178,6 +185,7 @@ where correlated judges would defeat the purpose:
|
|
|
178
185
|
|
|
179
186
|
```ts
|
|
180
187
|
phase("Judge the finding from three angles");
|
|
188
|
+
// A majority needs every vote, so the join waits for all three.
|
|
181
189
|
const votes = await Promise.all(
|
|
182
190
|
["correctness", "security", "does-it-reproduce"].map((lens) =>
|
|
183
191
|
agent(`judge-${lens}`)
|
|
@@ -241,9 +249,10 @@ first. Never let the loop fall off the end returning nothing.
|
|
|
241
249
|
|
|
242
250
|
---
|
|
243
251
|
|
|
244
|
-
## 6. Staged
|
|
252
|
+
## 6. Staged handoff with typed results
|
|
245
253
|
|
|
246
|
-
**When:** each stage narrows or transforms what the next one works on
|
|
254
|
+
**When:** each stage narrows or transforms what the next one works on, and the last stage
|
|
255
|
+
needs everything the one before it produced.
|
|
247
256
|
|
|
248
257
|
```ts
|
|
249
258
|
phase("Survey which modules touch auth");
|
|
@@ -251,6 +260,7 @@ const survey = await agent("surveyor").ask<Survey>("List the modules that touch
|
|
|
251
260
|
log(`${survey.modules.length} modules in scope`);
|
|
252
261
|
|
|
253
262
|
phase("Analyse each module for auth bypasses");
|
|
263
|
+
// The write-up deduplicates across modules, so it needs every analysis at once.
|
|
254
264
|
const analyses = await Promise.all(
|
|
255
265
|
survey.modules.map((m) =>
|
|
256
266
|
agent(`analyst-${m.path}`).ask<Analysis>(
|
|
@@ -458,3 +468,325 @@ re-entering two markers out of order would stamp each other's steps.
|
|
|
458
468
|
When one item failing should cost one item, catch inside the callback (examples #3) or use
|
|
459
469
|
`Promise.allSettled` and read each outcome; a rejection inside a plain `Promise.all` rejects
|
|
460
470
|
the join and the siblings with it.
|
|
471
|
+
|
|
472
|
+
## 11. Streaming pipeline with channels
|
|
473
|
+
|
|
474
|
+
**When:** items should flow to the next stage as they are produced, and the shape is one
|
|
475
|
+
chaining (#10) cannot write: a pool of K shared workers serving a stage, a producer still
|
|
476
|
+
finding items while consumers work, a later stage sending work back (#12), or stages you want
|
|
477
|
+
to read as separate blocks. Each stage is a
|
|
478
|
+
`future` whose body opens with its own phase marker; a `channel` carries items between two
|
|
479
|
+
stages; the producing stage owns the `close()` in a `finally`.
|
|
480
|
+
|
|
481
|
+
```ts
|
|
482
|
+
const leads = channel<Lead>("leads");
|
|
483
|
+
const facts = channel<Fact>("facts");
|
|
484
|
+
const checked: Checked[] = [];
|
|
485
|
+
|
|
486
|
+
const seed = future(async () => {
|
|
487
|
+
phase("Decide what to look into");
|
|
488
|
+
try {
|
|
489
|
+
const plan = await agent("planner").ask<{ questions: string[] }>(`List the questions to answer about ${topic}.`);
|
|
490
|
+
for (const question of plan.questions) leads.send({ question });
|
|
491
|
+
} finally {
|
|
492
|
+
leads.close();
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
|
|
496
|
+
const research = future(async () => {
|
|
497
|
+
phase("Research each question");
|
|
498
|
+
try {
|
|
499
|
+
await Promise.all(
|
|
500
|
+
Array.from({ length: RESEARCHERS }, async (_, k) => {
|
|
501
|
+
// One context per worker, hoisted out of the loop: a name is minted once per worker,
|
|
502
|
+
// and what one worker learnt on an earlier question is there for its next.
|
|
503
|
+
const researcher = agent(`researcher-${k + 1}`);
|
|
504
|
+
for await (const lead of leads) {
|
|
505
|
+
const found = await researcher.ask<Research>(`Research: ${lead.question}`);
|
|
506
|
+
found.facts.forEach((fact, index) => facts.send({ ...fact, id: `${lead.question}-${index + 1}` }));
|
|
507
|
+
}
|
|
508
|
+
}),
|
|
509
|
+
);
|
|
510
|
+
} finally {
|
|
511
|
+
facts.close(); // a failed researcher still ends the stream for the verifiers
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
|
|
515
|
+
const verify = future(async () => {
|
|
516
|
+
phase("Check each fact as it arrives");
|
|
517
|
+
await Promise.all(
|
|
518
|
+
Array.from({ length: VERIFIERS }, async (_, k) => {
|
|
519
|
+
const verifier = agent(`verifier-${k + 1}`);
|
|
520
|
+
for await (const fact of facts) {
|
|
521
|
+
const verdict = await verifier.ask<Verdict>(`Check: ${JSON.stringify(fact)}`);
|
|
522
|
+
checked.push({ ...fact, ...verdict });
|
|
523
|
+
report({ ...fact, ...verdict });
|
|
524
|
+
}
|
|
525
|
+
}),
|
|
526
|
+
);
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
// Start every stage first, then join all of them once. No await between the two: while the
|
|
530
|
+
// script awaits one stage, a failure in another has no listener and surfaces as an unhandled
|
|
531
|
+
// rejection instead of failing the run with its error.
|
|
532
|
+
await Promise.all([seed, research, verify]);
|
|
533
|
+
|
|
534
|
+
phase("Write the report from the checked facts");
|
|
535
|
+
const summary = await agent("writer").ask<string>(`Write up:\n${JSON.stringify(checked)}`);
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
Three stages, three markers, one join. The writer comes after the join, not on a channel: it
|
|
539
|
+
needs every checked fact, so a shared array and the join is the right hand-off there. A
|
|
540
|
+
channel where the next stage should start early; a join where it cannot.
|
|
541
|
+
|
|
542
|
+
The pools here (`researcher-1…3`, `verifier-1…4`) share a context across the items each
|
|
543
|
+
worker happens to receive, which is what you want when the items must be judged on one scale
|
|
544
|
+
or when what was learnt on one item helps with the next. The price is cache locality on a
|
|
545
|
+
revised run: which item lands on which worker depends on timing, so an amendment that changes
|
|
546
|
+
one upstream item shifts the assignment and misses the cache for the whole pool. When the items
|
|
547
|
+
are independent and you expect to amend, spawn a fresh, item-named subagent per item inside the
|
|
548
|
+
`for await` instead — a `future` pushed into an array and joined before the stage ends
|
|
549
|
+
(examples #6).
|
|
550
|
+
|
|
551
|
+
## 12. Feedback loop with a counted close
|
|
552
|
+
|
|
553
|
+
**When:** a later stage sends work back to an earlier one — a verifier that doubts a fact asks
|
|
554
|
+
for more research on it. The feedback channel has no single producer who knows when it is
|
|
555
|
+
done, so the script counts open work items and closes the channel when the count hits zero. A
|
|
556
|
+
depth field on each item bounds the loop.
|
|
557
|
+
|
|
558
|
+
```ts
|
|
559
|
+
const leads = channel<Lead>("leads");
|
|
560
|
+
const facts = channel<Fact>("facts");
|
|
561
|
+
// Open work items: every lead sent and not yet researched, every fact sent and not yet judged.
|
|
562
|
+
// The feedback channel closes when this reaches zero, and nobody else may close it.
|
|
563
|
+
let open = 0;
|
|
564
|
+
function finished(): void {
|
|
565
|
+
open -= 1;
|
|
566
|
+
if (open === 0) leads.close();
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
for (const question of seeds) {
|
|
570
|
+
open += 1;
|
|
571
|
+
leads.send({ question, depth: 0 });
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
const research = future(async () => {
|
|
575
|
+
phase("Research each lead");
|
|
576
|
+
try {
|
|
577
|
+
await Promise.all(
|
|
578
|
+
Array.from({ length: WORKERS }, async (_, k) => {
|
|
579
|
+
const researcher = agent(`researcher-${k + 1}`);
|
|
580
|
+
for await (const lead of leads) {
|
|
581
|
+
const found = await researcher.ask<Research>(`Research: ${lead.question}`);
|
|
582
|
+
// Invariant 1: count every child BEFORE finishing the parent, so `open` never
|
|
583
|
+
// touches zero while work is still being produced.
|
|
584
|
+
found.facts.forEach((fact, index) => {
|
|
585
|
+
open += 1;
|
|
586
|
+
facts.send({ ...fact, id: `${lead.question}-${index + 1}`, depth: lead.depth });
|
|
587
|
+
});
|
|
588
|
+
finished();
|
|
589
|
+
}
|
|
590
|
+
}),
|
|
591
|
+
);
|
|
592
|
+
} finally {
|
|
593
|
+
// Invariant 2: a researcher sends facts only from inside its loop, so this close runs after
|
|
594
|
+
// the last researcher has left the loop and nothing can send to `facts` any more.
|
|
595
|
+
facts.close();
|
|
596
|
+
}
|
|
597
|
+
});
|
|
598
|
+
|
|
599
|
+
const verify = future(async () => {
|
|
600
|
+
phase("Check each fact, and send doubts back for more research");
|
|
601
|
+
const checks: Promise<void>[] = [];
|
|
602
|
+
for await (const fact of facts) {
|
|
603
|
+
checks.push(
|
|
604
|
+
future(async () => {
|
|
605
|
+
const verdict = await agent(`verifier-${fact.id}`).ask<Verdict>(`Check: ${JSON.stringify(fact)}`);
|
|
606
|
+
if (verdict.holds) passed.push(fact);
|
|
607
|
+
else if (verdict.followUp !== undefined && fact.depth < MAX_DEPTH) {
|
|
608
|
+
// This fact is still open, so `open` is at least 1 and `leads` cannot have closed:
|
|
609
|
+
// the follow-up is counted before the fact that produced it is finished.
|
|
610
|
+
open += 1;
|
|
611
|
+
leads.send({ question: verdict.followUp, depth: fact.depth + 1 });
|
|
612
|
+
} else rejected.push(fact.claim);
|
|
613
|
+
finished();
|
|
614
|
+
}),
|
|
615
|
+
);
|
|
616
|
+
}
|
|
617
|
+
await Promise.all(checks); // the stage is done when its checks are, not when `facts` closes
|
|
618
|
+
});
|
|
619
|
+
|
|
620
|
+
await Promise.all([research, verify]);
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
Why the count closes `leads` and nothing else can: an item is finished only after every item
|
|
624
|
+
it produced has been counted, so `open` reaches zero exactly once, when the last item of the
|
|
625
|
+
last generation has been judged and produced nothing. The researchers then leave their loops,
|
|
626
|
+
the research stage closes `facts`, the verify stage's `for await` ends, and its join settles.
|
|
627
|
+
Forget the increment-before-finish order and `open` can hit zero with a follow-up about to be
|
|
628
|
+
sent — `leads.send` then throws `ChannelClosed`. Forget the join over `checks` and the stage
|
|
629
|
+
ends early with verdicts still running; the deadlock detector cannot see that one, because
|
|
630
|
+
nothing is parked. Forget the depth bound and two subagents can keep each other busy forever.
|
|
631
|
+
|
|
632
|
+
## 13. Model routing
|
|
633
|
+
|
|
634
|
+
**When:** the user asked for cheaper or faster models where they are enough, and one subagent
|
|
635
|
+
can tell which requests need the strong model. A router on the light model answers with a
|
|
636
|
+
typed key; code maps the key to a model the script declared. The router never writes a model
|
|
637
|
+
name, so it can only pick among models the user approved in the window.
|
|
638
|
+
|
|
639
|
+
<!-- compile -->
|
|
640
|
+
```ts
|
|
641
|
+
// Every model the run can use, declared once; names come from ListModels.
|
|
642
|
+
const MODELS = {
|
|
643
|
+
light: model("Raven Flash"),
|
|
644
|
+
strong: model("Raven Max$high"),
|
|
645
|
+
};
|
|
646
|
+
|
|
647
|
+
interface Route {
|
|
648
|
+
/** "strong" only when the request needs multi-step reasoning or careful writing. */
|
|
649
|
+
tier: "light" | "strong";
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
interface Reply {
|
|
653
|
+
answer: string;
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
const questions: string[] = ["Rename the config key in the README", "Explain the retry design"];
|
|
657
|
+
|
|
658
|
+
// Routing and answering map one to one, so each question goes to its answerer the moment
|
|
659
|
+
// its route is decided; the one join is for the return, which needs every answer.
|
|
660
|
+
phase("Route each question to the model it needs and answer it there");
|
|
661
|
+
const replies = await Promise.all(
|
|
662
|
+
questions.map(async (question, index) => {
|
|
663
|
+
const route = await agent(`分诊-${index + 1}`, { model: MODELS.light }).ask<Route>(
|
|
664
|
+
`Would answering this well need the strong model? ${question}`,
|
|
665
|
+
);
|
|
666
|
+
return agent(`答复者-${index + 1}`, { model: MODELS[route.tier] }).ask<Reply>(question);
|
|
667
|
+
}),
|
|
668
|
+
);
|
|
669
|
+
return replies.map((reply) => reply.answer);
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
A fixed choice needs no table: `agent("评审员", { model: "Raven Flash" })`. Keep the table at
|
|
673
|
+
the top of the script: an amend changes a model in one place, and the finished work of a
|
|
674
|
+
subagent whose model changed is still reused — its next live ask runs on the new model.
|
|
675
|
+
|
|
676
|
+
---
|
|
677
|
+
|
|
678
|
+
## 14. Growth by tail holes
|
|
679
|
+
|
|
680
|
+
**When:** the task is complicated enough that its workflow cannot be planned from the request
|
|
681
|
+
— the next step depends on what the last one found. Write what is known and end the script
|
|
682
|
+
with a tail hole. The script then grows by nesting: each fill is the statements of the
|
|
683
|
+
innermost body, does one step, and ends in the next tail hole; the last fill returns.
|
|
684
|
+
(`SKILL.md` §15; the complete chain with its fill files is `examples.md` #7.)
|
|
685
|
+
|
|
686
|
+
```ts
|
|
687
|
+
// 0. The seed, submitted with CreateWorkflow.
|
|
688
|
+
phase("盘点仓库顶层目录");
|
|
689
|
+
const survey = await agent("勘察员").ask<Survey>("列出顶层目录,各用一句话说明作用。");
|
|
690
|
+
return await hole<Guide>("第1步:决定导览结构", `盘点:${JSON.stringify(survey.dirs)}`);
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
```ts
|
|
694
|
+
// 1. The effective script after the first FillWorkflowHole: the hole gained a body
|
|
695
|
+
// that does one step and leaves the next hole. Only the body's statements were sent.
|
|
696
|
+
return await hole<Guide>("第1步:决定导览结构", `盘点:…`, async () => {
|
|
697
|
+
phase("分章并行撰写初稿");
|
|
698
|
+
const drafts = await Promise.all(
|
|
699
|
+
survey.dirs.map((d) => agent(`写手·${d.path}`).ask<Chapter>(`写「${d.path}」一章:${d.purpose}`)),
|
|
700
|
+
);
|
|
701
|
+
return await hole<Guide>("第2步:审读与交付", `${drafts.length} 章初稿已就绪`);
|
|
702
|
+
});
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
```ts
|
|
706
|
+
// 2. After the second fill: the chain closes with a value. Each hole's site id comes
|
|
707
|
+
// from its name, so ids stay short at any depth; the timeline shows one head per step.
|
|
708
|
+
return await hole<Guide>("第1步:决定导览结构", `盘点:…`, async () => {
|
|
709
|
+
/* step 1 as above; `survey` and `drafts` are in scope below */
|
|
710
|
+
return await hole<Guide>("第2步:审读与交付", `…`, async () => {
|
|
711
|
+
phase("独立审读并修订");
|
|
712
|
+
const critique = await agent("审读员").ask<string>(`只凭文本挑毛病:${JSON.stringify(drafts)}`);
|
|
713
|
+
const chapters = await agent("修订编辑").ask<Chapter[]>(`按意见修订:${critique}\n${JSON.stringify(drafts)}`);
|
|
714
|
+
return { title: "仓库导览", chapters, notCovered: [] };
|
|
715
|
+
});
|
|
716
|
+
});
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
The rules that make a chain work: every hole name is unique across the whole effective
|
|
720
|
+
script, so name each step for what it does (`第N步:…`), never the same name twice; the prompt
|
|
721
|
+
carries the progress the next author needs (counts, titles, what failed), because it is the
|
|
722
|
+
only channel for values; results live in bindings (`survey`, `drafts`), which every inner
|
|
723
|
+
body reads, so nothing needs re-asking; a step may open phases, create subagents, fan out and
|
|
724
|
+
gate with `world.run` like any script. The chain ends when a fill returns instead of leaving
|
|
725
|
+
a hole. A restart resumes the chain where it waited, with the finished steps replayed from
|
|
726
|
+
the journal.
|
|
727
|
+
|
|
728
|
+
---
|
|
729
|
+
|
|
730
|
+
## 15. A stage shaped by discovery
|
|
731
|
+
|
|
732
|
+
**When:** the survey decides the *topology* of the next stage, not just its inputs — how many
|
|
733
|
+
reviewers, fanned out or sequential, which check gates them. The survey's value goes to the
|
|
734
|
+
script as data; the fill writes the stage.
|
|
735
|
+
|
|
736
|
+
```ts
|
|
737
|
+
phase("剖析热点");
|
|
738
|
+
const hot = await agent("剖析员").ask<Hotspots>("找出最慢的三个模块,说明各自的耦合。");
|
|
739
|
+
const reviews = await hole<Review[]>("怎么审查这些热点", `热点:${JSON.stringify(hot.modules)}`);
|
|
740
|
+
phase("汇总");
|
|
741
|
+
return await agent("汇总员").ask<Report>(`汇总审查结果:${JSON.stringify(reviews)}`);
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
A fill written once `hot` says two modules are independent and one is shared by both: the
|
|
745
|
+
independent pair reviewed in parallel, the shared one by a calibrated reviewer that has seen
|
|
746
|
+
the other two reviews, then a bounded fix-and-recheck loop gated by the project's own test
|
|
747
|
+
command. None of that topology was knowable before the survey.
|
|
748
|
+
|
|
749
|
+
```ts
|
|
750
|
+
phase("并行审查独立模块");
|
|
751
|
+
const [a, b] = await Promise.all(
|
|
752
|
+
hot.modules.slice(0, 2).map((m) => agent(`审查员·${m.path}`).ask<Review>(`审查 ${m.path}:${m.coupling}`)),
|
|
753
|
+
);
|
|
754
|
+
phase("在前两份审查的基础上审查共享模块");
|
|
755
|
+
const shared = hot.modules[2];
|
|
756
|
+
const reviewer = agent("共享模块审查员", "你在别人的审查基础上工作,只找他们没看到的问题。");
|
|
757
|
+
let review = await reviewer.ask<Review>(`已有审查:${JSON.stringify([a, b])}\n现在审查 ${shared.path}`);
|
|
758
|
+
for (let round = 1; round <= 3 && review.findings.length > 0; round += 1) {
|
|
759
|
+
const fix = await world.run("pnpm", ["test", "--", shared.path]);
|
|
760
|
+
if (fix.exitCode === 0) break;
|
|
761
|
+
review = await reviewer.ask<Review>(`测试仍失败:${fix.stderr}\n复审 ${shared.path}`);
|
|
762
|
+
}
|
|
763
|
+
return [a, b, review];
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
Contrast with a plain subagent ask: had the survey only said *which* modules to review, the
|
|
767
|
+
script could have fanned out over `hot.modules` itself and no hole was needed.
|
|
768
|
+
|
|
769
|
+
---
|
|
770
|
+
|
|
771
|
+
## 16. A remedy the plan could not enumerate
|
|
772
|
+
|
|
773
|
+
**When:** a gate fails and the fix may need phases and subagents nobody planned. If the
|
|
774
|
+
remedies were known — retry, narrow, skip — the script would hold a `Remedy` value and an
|
|
775
|
+
`if`; the hole is for the case where the remedy is a piece of workflow decided with the
|
|
776
|
+
failure in hand.
|
|
777
|
+
|
|
778
|
+
```ts
|
|
779
|
+
phase("跑完整测试");
|
|
780
|
+
const gate = await world.run("pnpm", ["test"], { timeoutMs: 1_800_000 });
|
|
781
|
+
if (gate.exitCode !== 0) {
|
|
782
|
+
await hole<void>("测试没过怎么办", `退出码 ${gate.exitCode}:\n${gate.stderr.slice(0, 2000)}`);
|
|
783
|
+
}
|
|
784
|
+
phase("交付");
|
|
785
|
+
return await agent("报告员").ask<Report>("写交付报告。");
|
|
786
|
+
```
|
|
787
|
+
|
|
788
|
+
A fill after a flaky-looking failure: a bisect over the last commits by `world.run`, a
|
|
789
|
+
second opinion from a fresh subagent on whether the failure is real, and — only if it is —
|
|
790
|
+
a fixer loop bounded by three rounds. A fill after a clear failure is one fixer and one
|
|
791
|
+
recheck. The script did not have to guess which, and the user sees the remedy as phases of
|
|
792
|
+
its own under the hole's head.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-repl-host",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "Shared node_repl runtime host for DCode official capabilities. Not user-facing: it carries no skill and appears in no marketplace listing; Browser Use and Computer Use enable it and contribute their own skills, docs and runtime assets.",
|
|
5
5
|
"author": { "name": "DipoleML" },
|
|
6
6
|
"license": "MIT"
|
|
@@ -54199,7 +54199,9 @@ var browserCommandSchema = external_exports.discriminatedUnion("method", [
|
|
|
54199
54199
|
deliverable: external_exports.boolean().optional()
|
|
54200
54200
|
}).strict(),
|
|
54201
54201
|
external_exports.object({ method: external_exports.literal("turnEnded"), turnId: external_exports.string().min(1).optional() }).strict(),
|
|
54202
|
-
|
|
54202
|
+
// closeTabs:连同该 session 名下的 tab 一起关(含已释放回该 session 的)。只给永不回来认领的
|
|
54203
|
+
// session 用——dwf 子代理(docs/browser-use/2026-07-14-browser-tab-conversation-isolation-spec.md §2.3)。
|
|
54204
|
+
external_exports.object({ method: external_exports.literal("closeSession"), closeTabs: external_exports.boolean().optional() }).strict(),
|
|
54203
54205
|
external_exports.object({ method: external_exports.literal("cancelRequest"), requestId: external_exports.string().min(1) }).strict(),
|
|
54204
54206
|
// close:关闭指定受控 tab(tabId 缺省=当前 tab)。manager 层处理:detach + 通知 renderer 卸载 webview。
|
|
54205
54207
|
external_exports.object({ method: external_exports.literal("close"), tabId: external_exports.string().optional() }).strict(),
|
|
@@ -54422,7 +54424,6 @@ var nodeReplBrowserBrokerResponseSchema = external_exports.discriminatedUnion("o
|
|
|
54422
54424
|
|
|
54423
54425
|
// src/runtime-bridge.ts
|
|
54424
54426
|
var NODE_REPL_BROWSER_BRIDGE_SYMBOL = Symbol.for("dcode.node-repl.browser-control-bridge");
|
|
54425
|
-
var BROWSER_UNAVAILABLE_IN_SUBAGENT_MESSAGE = "Browser is not available in subagent";
|
|
54426
54427
|
|
|
54427
54428
|
// src/browser-bridge.ts
|
|
54428
54429
|
var MAX_RESPONSE_BYTES = 32 * 1024 * 1024;
|
|
@@ -54434,16 +54435,9 @@ function createBrowserBridgeGlobals(input2) {
|
|
|
54434
54435
|
}
|
|
54435
54436
|
return active;
|
|
54436
54437
|
};
|
|
54437
|
-
const assertAvailable = () => {
|
|
54438
|
-
const active = assertActive();
|
|
54439
|
-
if (active.requestMeta.runtime_scope === "subagent") {
|
|
54440
|
-
throw new Error(BROWSER_UNAVAILABLE_IN_SUBAGENT_MESSAGE);
|
|
54441
|
-
}
|
|
54442
|
-
return active;
|
|
54443
|
-
};
|
|
54444
54438
|
const transport = {
|
|
54445
54439
|
list: async () => {
|
|
54446
|
-
const active =
|
|
54440
|
+
const active = assertActive();
|
|
54447
54441
|
const response = await sendBrokerRequest(
|
|
54448
54442
|
{ op: "list", ...requestContext(active.requestMeta) },
|
|
54449
54443
|
active.signal
|
|
@@ -54452,7 +54446,7 @@ function createBrowserBridgeGlobals(input2) {
|
|
|
54452
54446
|
return response.browsers ?? [];
|
|
54453
54447
|
},
|
|
54454
54448
|
execute: async (browserId, browserGeneration, command) => {
|
|
54455
|
-
const active =
|
|
54449
|
+
const active = assertActive();
|
|
54456
54450
|
const response = await sendBrokerRequest(
|
|
54457
54451
|
{
|
|
54458
54452
|
op: "execute",
|
|
@@ -54473,7 +54467,7 @@ function createBrowserBridgeGlobals(input2) {
|
|
|
54473
54467
|
[NODE_REPL_BROWSER_BRIDGE_SYMBOL]: {
|
|
54474
54468
|
...transport,
|
|
54475
54469
|
documentationRoot: input2.documentationRoot,
|
|
54476
|
-
assertAvailable
|
|
54470
|
+
assertAvailable: assertActive
|
|
54477
54471
|
}
|
|
54478
54472
|
};
|
|
54479
54473
|
}
|
|
@@ -54983,6 +54977,7 @@ async function isDirectMcpEntrypoint(importMetaUrl, argvPath) {
|
|
|
54983
54977
|
// ../contracts/dist/interfaces/mcp.port.js
|
|
54984
54978
|
var DCODE_MCP_BROWSER_SCREENSHOT_CONTENT_INDICES_META_KEY = "dcode/browserScreenshotContentIndices";
|
|
54985
54979
|
var DCODE_MCP_NODE_REPL_CUA_APP_META_KEY = "dcode/nodeReplCuaApp";
|
|
54980
|
+
var MCP_TOOL_META_TIMEOUT_MAX_MS = 30 * 60 * 1e3;
|
|
54986
54981
|
|
|
54987
54982
|
// ../../../../packages/dcode-cua/frame-contract.js
|
|
54988
54983
|
var OFFICIAL_CUA_IMAGE_INLINE_BASE64_BYTES = 200 * 1024;
|
|
@@ -55093,7 +55088,7 @@ function toMcpRunResult(run) {
|
|
|
55093
55088
|
|
|
55094
55089
|
// src/tool-contract.ts
|
|
55095
55090
|
var NODE_REPL_DEFAULT_TIMEOUT_MS = 6e4;
|
|
55096
|
-
var NODE_REPL_SERVER_VERSION = "0.6.
|
|
55091
|
+
var NODE_REPL_SERVER_VERSION = "0.6.1";
|
|
55097
55092
|
var NODE_REPL_SERVER_INSTRUCTIONS = `Browser Use and Computer Use only. Use \`js\` to run JavaScript in a fresh Node-backed kernel only when the corresponding official skill instructs you to control a browser or computer. Do not use this server for unrelated tasks, including general-purpose JavaScript, filesystem, shell, package inspection, or data processing. Calls default to a ${NODE_REPL_DEFAULT_TIMEOUT_MS} ms timeout. Always provide \`title\` as a short user-facing description in the user's language. Every \`js\` call starts fresh; reconstruct browser wrappers and recover persistent tabs from current BrowserControl facts.`;
|
|
55098
55093
|
var JS_TOOL_DESCRIPTION = `Browser Use and Computer Use only. Run JavaScript in a fresh Node-backed kernel with top-level await only as instructed by the corresponding official skill to control a browser or computer. Do not use it as a general-purpose JavaScript runtime or for filesystem, shell, package inspection, data processing, or other non-browser work. Always provide the required \`title\` as a short user-facing description in the user's language without implementation terms. If \`timeout_ms\` is omitted, execution times out after ${NODE_REPL_DEFAULT_TIMEOUT_MS} ms. If the code may take more than 30000 ms including all awaited operations, you MUST set \`timeout_ms\` to at least the estimated total runtime plus 15000 ms; split the work into multiple calls if that exceeds the 120000 ms maximum. Use \`nodeRepl.cwd\`, \`nodeRepl.homeDir\`, \`nodeRepl.tmpDir\`, \`nodeRepl.requestMeta\`, \`nodeRepl.setResponseMeta(meta)\`, \`nodeRepl.write(value)\`, and \`await nodeRepl.emitImage(imageLike)\`. Global bindings and module cache do not persist across calls. For Computer Use SDK results, do not console.log/JSON.stringify the complete result or call nodeRepl.emitImage yourself; the SDK submits the structured image/state result and you should use nodeRepl.write for short text-only status. \`get_app_state\` is an explicit observation: assign it to \`const state\`, always call \`nodeRepl.write(state.text)\`, and use \`state.state_id\` plus \`state.elements[*].index\` for element targets; do not leave get_app_state as the final expression or regex state_id from its text. Metadata methods such as list_apps and list_windows may not return action_sent; a missing field is not a failure, so inspect text or structuredContent. Never use screenshot_display.bounds or app/window bounds as raster pixel coordinates; x/y must be integer pixels inside the width/height of the returned raster. Every Computer Use JavaScript call must start with the complete SDK bootstrap in the same cell before agent.computerUse; never split bootstrap and action across calls. Never rely on agent, runtime, browser, or imported bindings from an earlier call. Import only \`node:*\` builtins and absolute \`file://\` URLs built from the official skill root, for example \`await import(pathToFileURL(join(root, "scripts", "client.mjs")).href)\`; bare package specifiers do not resolve. Bootstrap the requested official capability in every call.`;
|
|
55099
55094
|
|
|
@@ -55102,7 +55097,7 @@ var MAX_SYNC_TIMEOUT_MS = 12e4;
|
|
|
55102
55097
|
var UNTRUSTED_SESSION_KEY = "__unscoped__";
|
|
55103
55098
|
var WORKER_KIND = "dcode-node-repl-call";
|
|
55104
55099
|
var NODE_REPL_MCP_PROCESS_TITLE = "dcode-node-repl-mcp";
|
|
55105
|
-
var pluginRoot = process.env.DCODE_PLUGIN_ROOT ?? process.cwd();
|
|
55100
|
+
var pluginRoot = process.env.DCODE_PLUGIN_ROOT ?? process.env.CLAUDE_PLUGIN_ROOT ?? process.cwd();
|
|
55106
55101
|
var browserDocumentationRoot = resolve(pluginRoot, "docs");
|
|
55107
55102
|
var cuaDocumentationRoot = resolve(
|
|
55108
55103
|
process.env.DCODE_CUA_PLUGIN_ROOT ?? pluginRoot,
|