tugline 0.0.0-stage → 1.2.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +20 -0
- package/README.md +274 -2
- package/agents/reviewer.md +8 -0
- package/dist/acp/agent.d.ts +48 -0
- package/dist/acp/agent.js +354 -0
- package/dist/acp/agent.js.map +1 -0
- package/dist/acp/cli.d.ts +1 -0
- package/dist/acp/cli.js +24 -0
- package/dist/acp/cli.js.map +1 -0
- package/dist/acp/host.d.ts +22 -0
- package/dist/acp/host.js +66 -0
- package/dist/acp/host.js.map +1 -0
- package/dist/channels/cli.d.ts +23 -0
- package/dist/channels/cli.js +200 -0
- package/dist/channels/cli.js.map +1 -0
- package/dist/channels/gateway.d.ts +54 -0
- package/dist/channels/gateway.js +316 -0
- package/dist/channels/gateway.js.map +1 -0
- package/dist/channels/pairing.d.ts +25 -0
- package/dist/channels/pairing.js +78 -0
- package/dist/channels/pairing.js.map +1 -0
- package/dist/channels/slack.d.ts +34 -0
- package/dist/channels/slack.js +97 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +33 -0
- package/dist/channels/telegram.js +93 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/types.d.ts +93 -0
- package/dist/channels/types.js +24 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/channels/webhook.d.ts +19 -0
- package/dist/channels/webhook.js +58 -0
- package/dist/channels/webhook.js.map +1 -0
- package/dist/cli/attach.d.ts +19 -0
- package/dist/cli/attach.js +97 -0
- package/dist/cli/attach.js.map +1 -0
- package/dist/cli/batch.d.ts +43 -0
- package/dist/cli/batch.js +227 -0
- package/dist/cli/batch.js.map +1 -0
- package/dist/cli/certs.d.ts +21 -0
- package/dist/cli/certs.js +29 -0
- package/dist/cli/certs.js.map +1 -0
- package/dist/cli/completion.d.ts +4 -0
- package/dist/cli/completion.js +117 -0
- package/dist/cli/completion.js.map +1 -0
- package/dist/cli/flags.d.ts +30 -0
- package/dist/cli/flags.js +79 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/main.d.ts +5 -0
- package/dist/cli/main.js +1270 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/memoryCli.d.ts +9 -0
- package/dist/cli/memoryCli.js +122 -0
- package/dist/cli/memoryCli.js.map +1 -0
- package/dist/cli/output.d.ts +116 -0
- package/dist/cli/output.js +133 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/runtimeLog.d.ts +20 -0
- package/dist/cli/runtimeLog.js +113 -0
- package/dist/cli/runtimeLog.js.map +1 -0
- package/dist/cli/sessions.d.ts +36 -0
- package/dist/cli/sessions.js +208 -0
- package/dist/cli/sessions.js.map +1 -0
- package/dist/cli/slash.d.ts +15 -0
- package/dist/cli/slash.js +215 -0
- package/dist/cli/slash.js.map +1 -0
- package/dist/cli/theme.d.ts +34 -0
- package/dist/cli/theme.js +36 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/cli/vim.d.ts +31 -0
- package/dist/cli/vim.js +161 -0
- package/dist/cli/vim.js.map +1 -0
- package/dist/core/agent/agent.d.ts +591 -0
- package/dist/core/agent/agent.js +2682 -0
- package/dist/core/agent/agent.js.map +1 -0
- package/dist/core/agent/compaction.d.ts +50 -0
- package/dist/core/agent/compaction.js +176 -0
- package/dist/core/agent/compaction.js.map +1 -0
- package/dist/core/agent/extensions.d.ts +117 -0
- package/dist/core/agent/extensions.js +17 -0
- package/dist/core/agent/extensions.js.map +1 -0
- package/dist/core/agent/hooks.d.ts +38 -0
- package/dist/core/agent/hooks.js +270 -0
- package/dist/core/agent/hooks.js.map +1 -0
- package/dist/core/agent/journal.d.ts +53 -0
- package/dist/core/agent/journal.js +274 -0
- package/dist/core/agent/journal.js.map +1 -0
- package/dist/core/agent/prereq.d.ts +5 -0
- package/dist/core/agent/prereq.js +128 -0
- package/dist/core/agent/prereq.js.map +1 -0
- package/dist/core/agent/prompt.d.ts +38 -0
- package/dist/core/agent/prompt.js +172 -0
- package/dist/core/agent/prompt.js.map +1 -0
- package/dist/core/agent/team/a2a.d.ts +64 -0
- package/dist/core/agent/team/a2a.js +388 -0
- package/dist/core/agent/team/a2a.js.map +1 -0
- package/dist/core/agent/team/board.d.ts +127 -0
- package/dist/core/agent/team/board.js +371 -0
- package/dist/core/agent/team/board.js.map +1 -0
- package/dist/core/agent/team/display.d.ts +12 -0
- package/dist/core/agent/team/display.js +64 -0
- package/dist/core/agent/team/display.js.map +1 -0
- package/dist/core/agent/team/external.d.ts +96 -0
- package/dist/core/agent/team/external.js +277 -0
- package/dist/core/agent/team/external.js.map +1 -0
- package/dist/core/agent/team/host.d.ts +53 -0
- package/dist/core/agent/team/host.js +81 -0
- package/dist/core/agent/team/host.js.map +1 -0
- package/dist/core/agent/team/names.d.ts +9 -0
- package/dist/core/agent/team/names.js +10 -0
- package/dist/core/agent/team/names.js.map +1 -0
- package/dist/core/agent/team/register.d.ts +19 -0
- package/dist/core/agent/team/register.js +455 -0
- package/dist/core/agent/team/register.js.map +1 -0
- package/dist/core/agent/team/registry.d.ts +3 -0
- package/dist/core/agent/team/registry.js +22 -0
- package/dist/core/agent/team/registry.js.map +1 -0
- package/dist/core/agent/team/runtime.d.ts +147 -0
- package/dist/core/agent/team/runtime.js +650 -0
- package/dist/core/agent/team/runtime.js.map +1 -0
- package/dist/core/agent/workflow/childSandbox.d.ts +20 -0
- package/dist/core/agent/workflow/childSandbox.js +56 -0
- package/dist/core/agent/workflow/childSandbox.js.map +1 -0
- package/dist/core/agent/workflow/clamp.d.ts +59 -0
- package/dist/core/agent/workflow/clamp.js +118 -0
- package/dist/core/agent/workflow/clamp.js.map +1 -0
- package/dist/core/agent/workflow/register.d.ts +16 -0
- package/dist/core/agent/workflow/register.js +184 -0
- package/dist/core/agent/workflow/register.js.map +1 -0
- package/dist/core/agent/workflow/runner.d.ts +69 -0
- package/dist/core/agent/workflow/runner.js +321 -0
- package/dist/core/agent/workflow/runner.js.map +1 -0
- package/dist/core/agent/workflow/settings.d.ts +72 -0
- package/dist/core/agent/workflow/settings.js +14 -0
- package/dist/core/agent/workflow/settings.js.map +1 -0
- package/dist/core/agent/workflow/spec.d.ts +75 -0
- package/dist/core/agent/workflow/spec.js +129 -0
- package/dist/core/agent/workflow/spec.js.map +1 -0
- package/dist/core/approver/automode.d.ts +115 -0
- package/dist/core/approver/automode.js +850 -0
- package/dist/core/approver/automode.js.map +1 -0
- package/dist/core/approver/classifier.d.ts +88 -0
- package/dist/core/approver/classifier.js +172 -0
- package/dist/core/approver/classifier.js.map +1 -0
- package/dist/core/approver/dangerousRules.d.ts +28 -0
- package/dist/core/approver/dangerousRules.js +90 -0
- package/dist/core/approver/dangerousRules.js.map +1 -0
- package/dist/core/approver/denial.d.ts +63 -0
- package/dist/core/approver/denial.js +72 -0
- package/dist/core/approver/denial.js.map +1 -0
- package/dist/core/approver/extractors.d.ts +2 -0
- package/dist/core/approver/extractors.js +121 -0
- package/dist/core/approver/extractors.js.map +1 -0
- package/dist/core/approver/gitConfigSafety.d.ts +21 -0
- package/dist/core/approver/gitConfigSafety.js +121 -0
- package/dist/core/approver/gitConfigSafety.js.map +1 -0
- package/dist/core/approver/index.d.ts +63 -0
- package/dist/core/approver/index.js +234 -0
- package/dist/core/approver/index.js.map +1 -0
- package/dist/core/approver/modes.d.ts +14 -0
- package/dist/core/approver/modes.js +17 -0
- package/dist/core/approver/modes.js.map +1 -0
- package/dist/core/approver/normalize.d.ts +46 -0
- package/dist/core/approver/normalize.js +520 -0
- package/dist/core/approver/normalize.js.map +1 -0
- package/dist/core/approver/permissionsCommand.d.ts +11 -0
- package/dist/core/approver/permissionsCommand.js +221 -0
- package/dist/core/approver/permissionsCommand.js.map +1 -0
- package/dist/core/approver/prefilter.d.ts +32 -0
- package/dist/core/approver/prefilter.js +433 -0
- package/dist/core/approver/prefilter.js.map +1 -0
- package/dist/core/approver/rawWrites.d.ts +11 -0
- package/dist/core/approver/rawWrites.js +147 -0
- package/dist/core/approver/rawWrites.js.map +1 -0
- package/dist/core/approver/readers.d.ts +16 -0
- package/dist/core/approver/readers.js +17 -0
- package/dist/core/approver/readers.js.map +1 -0
- package/dist/core/approver/readonly.d.ts +21 -0
- package/dist/core/approver/readonly.js +398 -0
- package/dist/core/approver/readonly.js.map +1 -0
- package/dist/core/approver/readonlyOptions.d.ts +53 -0
- package/dist/core/approver/readonlyOptions.js +315 -0
- package/dist/core/approver/readonlyOptions.js.map +1 -0
- package/dist/core/approver/ruleScope.d.ts +2 -0
- package/dist/core/approver/ruleScope.js +76 -0
- package/dist/core/approver/ruleScope.js.map +1 -0
- package/dist/core/approver/sanitize.d.ts +8 -0
- package/dist/core/approver/sanitize.js +37 -0
- package/dist/core/approver/sanitize.js.map +1 -0
- package/dist/core/approver/selfmod.d.ts +13 -0
- package/dist/core/approver/selfmod.js +83 -0
- package/dist/core/approver/selfmod.js.map +1 -0
- package/dist/core/approver/shellOps.d.ts +6 -0
- package/dist/core/approver/shellOps.js +99 -0
- package/dist/core/approver/shellOps.js.map +1 -0
- package/dist/core/approver/shellSafetyRules.d.ts +17 -0
- package/dist/core/approver/shellSafetyRules.js +327 -0
- package/dist/core/approver/shellSafetyRules.js.map +1 -0
- package/dist/core/approver/transcript.d.ts +61 -0
- package/dist/core/approver/transcript.js +203 -0
- package/dist/core/approver/transcript.js.map +1 -0
- package/dist/core/automation/browser/config.d.ts +86 -0
- package/dist/core/automation/browser/config.js +31 -0
- package/dist/core/automation/browser/config.js.map +1 -0
- package/dist/core/automation/browser/driver.d.ts +335 -0
- package/dist/core/automation/browser/driver.js +1101 -0
- package/dist/core/automation/browser/driver.js.map +1 -0
- package/dist/core/automation/browser/egress.d.ts +22 -0
- package/dist/core/automation/browser/egress.js +207 -0
- package/dist/core/automation/browser/egress.js.map +1 -0
- package/dist/core/automation/browser/extension/cli.d.ts +1 -0
- package/dist/core/automation/browser/extension/cli.js +56 -0
- package/dist/core/automation/browser/extension/cli.js.map +1 -0
- package/dist/core/automation/browser/extension/hub.d.ts +100 -0
- package/dist/core/automation/browser/extension/hub.js +439 -0
- package/dist/core/automation/browser/extension/hub.js.map +1 -0
- package/dist/core/automation/browser/index.d.ts +16 -0
- package/dist/core/automation/browser/index.js +17 -0
- package/dist/core/automation/browser/index.js.map +1 -0
- package/dist/core/automation/browser/launch.d.ts +58 -0
- package/dist/core/automation/browser/launch.js +219 -0
- package/dist/core/automation/browser/launch.js.map +1 -0
- package/dist/core/automation/browser/pageScripts.d.ts +20 -0
- package/dist/core/automation/browser/pageScripts.js +190 -0
- package/dist/core/automation/browser/pageScripts.js.map +1 -0
- package/dist/core/automation/browser/session.d.ts +69 -0
- package/dist/core/automation/browser/session.js +257 -0
- package/dist/core/automation/browser/session.js.map +1 -0
- package/dist/core/automation/browser/tools.d.ts +2 -0
- package/dist/core/automation/browser/tools.js +614 -0
- package/dist/core/automation/browser/tools.js.map +1 -0
- package/dist/core/automation/cascade/controller.d.ts +23 -0
- package/dist/core/automation/cascade/controller.js +293 -0
- package/dist/core/automation/cascade/controller.js.map +1 -0
- package/dist/core/automation/cascade/extract.d.ts +15 -0
- package/dist/core/automation/cascade/extract.js +46 -0
- package/dist/core/automation/cascade/extract.js.map +1 -0
- package/dist/core/automation/cascade/preconditions.d.ts +33 -0
- package/dist/core/automation/cascade/preconditions.js +30 -0
- package/dist/core/automation/cascade/preconditions.js.map +1 -0
- package/dist/core/automation/desktop/backend.d.ts +146 -0
- package/dist/core/automation/desktop/backend.js +37 -0
- package/dist/core/automation/desktop/backend.js.map +1 -0
- package/dist/core/automation/desktop/commands.d.ts +19 -0
- package/dist/core/automation/desktop/commands.js +178 -0
- package/dist/core/automation/desktop/commands.js.map +1 -0
- package/dist/core/automation/desktop/config.d.ts +91 -0
- package/dist/core/automation/desktop/config.js +42 -0
- package/dist/core/automation/desktop/config.js.map +1 -0
- package/dist/core/automation/desktop/cua.d.ts +91 -0
- package/dist/core/automation/desktop/cua.js +407 -0
- package/dist/core/automation/desktop/cua.js.map +1 -0
- package/dist/core/automation/desktop/driver.d.ts +173 -0
- package/dist/core/automation/desktop/driver.js +533 -0
- package/dist/core/automation/desktop/driver.js.map +1 -0
- package/dist/core/automation/desktop/electron.d.ts +59 -0
- package/dist/core/automation/desktop/electron.js +182 -0
- package/dist/core/automation/desktop/electron.js.map +1 -0
- package/dist/core/automation/desktop/index.d.ts +13 -0
- package/dist/core/automation/desktop/index.js +14 -0
- package/dist/core/automation/desktop/index.js.map +1 -0
- package/dist/core/automation/desktop/killswitch.d.ts +8 -0
- package/dist/core/automation/desktop/killswitch.js +108 -0
- package/dist/core/automation/desktop/killswitch.js.map +1 -0
- package/dist/core/automation/desktop/replay.d.ts +17 -0
- package/dist/core/automation/desktop/replay.js +84 -0
- package/dist/core/automation/desktop/replay.js.map +1 -0
- package/dist/core/automation/desktop/roles.d.ts +20 -0
- package/dist/core/automation/desktop/roles.js +69 -0
- package/dist/core/automation/desktop/roles.js.map +1 -0
- package/dist/core/automation/desktop/selfprotect.d.ts +10 -0
- package/dist/core/automation/desktop/selfprotect.js +99 -0
- package/dist/core/automation/desktop/selfprotect.js.map +1 -0
- package/dist/core/automation/desktop/session.d.ts +100 -0
- package/dist/core/automation/desktop/session.js +329 -0
- package/dist/core/automation/desktop/session.js.map +1 -0
- package/dist/core/automation/desktop/sidecar.d.ts +91 -0
- package/dist/core/automation/desktop/sidecar.js +297 -0
- package/dist/core/automation/desktop/sidecar.js.map +1 -0
- package/dist/core/automation/desktop/sidecars/linux_atspi.py +596 -0
- package/dist/core/automation/desktop/sidecars/windows_uia.ps1 +352 -0
- package/dist/core/automation/desktop/tools.d.ts +2 -0
- package/dist/core/automation/desktop/tools.js +721 -0
- package/dist/core/automation/desktop/tools.js.map +1 -0
- package/dist/core/automation/desktop/traps.d.ts +58 -0
- package/dist/core/automation/desktop/traps.js +72 -0
- package/dist/core/automation/desktop/traps.js.map +1 -0
- package/dist/core/automation/expect/evaluate.d.ts +34 -0
- package/dist/core/automation/expect/evaluate.js +107 -0
- package/dist/core/automation/expect/evaluate.js.map +1 -0
- package/dist/core/automation/expect/index.d.ts +2 -0
- package/dist/core/automation/expect/index.js +3 -0
- package/dist/core/automation/expect/index.js.map +1 -0
- package/dist/core/automation/perception/grounder.d.ts +23 -0
- package/dist/core/automation/perception/grounder.js +84 -0
- package/dist/core/automation/perception/grounder.js.map +1 -0
- package/dist/core/automation/perception/index.d.ts +5 -0
- package/dist/core/automation/perception/index.js +6 -0
- package/dist/core/automation/perception/index.js.map +1 -0
- package/dist/core/automation/perception/marks.d.ts +32 -0
- package/dist/core/automation/perception/marks.js +98 -0
- package/dist/core/automation/perception/marks.js.map +1 -0
- package/dist/core/automation/perception/ocr.d.ts +50 -0
- package/dist/core/automation/perception/ocr.js +263 -0
- package/dist/core/automation/perception/ocr.js.map +1 -0
- package/dist/core/automation/perception/png.d.ts +10 -0
- package/dist/core/automation/perception/png.js +153 -0
- package/dist/core/automation/perception/png.js.map +1 -0
- package/dist/core/automation/policy/index.d.ts +90 -0
- package/dist/core/automation/policy/index.js +154 -0
- package/dist/core/automation/policy/index.js.map +1 -0
- package/dist/core/automation/policy/untrusted.d.ts +9 -0
- package/dist/core/automation/policy/untrusted.js +12 -0
- package/dist/core/automation/policy/untrusted.js.map +1 -0
- package/dist/core/automation/recorder/cli.d.ts +3 -0
- package/dist/core/automation/recorder/cli.js +85 -0
- package/dist/core/automation/recorder/cli.js.map +1 -0
- package/dist/core/automation/recorder/demo.d.ts +119 -0
- package/dist/core/automation/recorder/demo.js +514 -0
- package/dist/core/automation/recorder/demo.js.map +1 -0
- package/dist/core/automation/recorder/export.d.ts +16 -0
- package/dist/core/automation/recorder/export.js +123 -0
- package/dist/core/automation/recorder/export.js.map +1 -0
- package/dist/core/automation/recorder/html.d.ts +7 -0
- package/dist/core/automation/recorder/html.js +38 -0
- package/dist/core/automation/recorder/html.js.map +1 -0
- package/dist/core/automation/recorder/replay.d.ts +73 -0
- package/dist/core/automation/recorder/replay.js +237 -0
- package/dist/core/automation/recorder/replay.js.map +1 -0
- package/dist/core/automation/recorder/skillcli.d.ts +1 -0
- package/dist/core/automation/recorder/skillcli.js +98 -0
- package/dist/core/automation/recorder/skillcli.js.map +1 -0
- package/dist/core/automation/recorder/trajectory.d.ts +53 -0
- package/dist/core/automation/recorder/trajectory.js +89 -0
- package/dist/core/automation/recorder/trajectory.js.map +1 -0
- package/dist/core/automation/snapshot/diff.d.ts +14 -0
- package/dist/core/automation/snapshot/diff.js +88 -0
- package/dist/core/automation/snapshot/diff.js.map +1 -0
- package/dist/core/automation/snapshot/index.d.ts +6 -0
- package/dist/core/automation/snapshot/index.js +7 -0
- package/dist/core/automation/snapshot/index.js.map +1 -0
- package/dist/core/automation/snapshot/keys.d.ts +40 -0
- package/dist/core/automation/snapshot/keys.js +50 -0
- package/dist/core/automation/snapshot/keys.js.map +1 -0
- package/dist/core/automation/snapshot/mask.d.ts +11 -0
- package/dist/core/automation/snapshot/mask.js +25 -0
- package/dist/core/automation/snapshot/mask.js.map +1 -0
- package/dist/core/automation/snapshot/render.d.ts +42 -0
- package/dist/core/automation/snapshot/render.js +186 -0
- package/dist/core/automation/snapshot/render.js.map +1 -0
- package/dist/core/automation/snapshot/tree.d.ts +32 -0
- package/dist/core/automation/snapshot/tree.js +134 -0
- package/dist/core/automation/snapshot/tree.js.map +1 -0
- package/dist/core/automation/types.d.ts +209 -0
- package/dist/core/automation/types.js +9 -0
- package/dist/core/automation/types.js.map +1 -0
- package/dist/core/cache/extension.d.ts +52 -0
- package/dist/core/cache/extension.js +135 -0
- package/dist/core/cache/extension.js.map +1 -0
- package/dist/core/cache/meter.d.ts +81 -0
- package/dist/core/cache/meter.js +84 -0
- package/dist/core/cache/meter.js.map +1 -0
- package/dist/core/cache/prefix.d.ts +40 -0
- package/dist/core/cache/prefix.js +194 -0
- package/dist/core/cache/prefix.js.map +1 -0
- package/dist/core/cache/register.d.ts +1 -0
- package/dist/core/cache/register.js +31 -0
- package/dist/core/cache/register.js.map +1 -0
- package/dist/core/cache/settings.d.ts +36 -0
- package/dist/core/cache/settings.js +22 -0
- package/dist/core/cache/settings.js.map +1 -0
- package/dist/core/checkpoint/copy.d.ts +23 -0
- package/dist/core/checkpoint/copy.js +214 -0
- package/dist/core/checkpoint/copy.js.map +1 -0
- package/dist/core/checkpoint/index.d.ts +65 -0
- package/dist/core/checkpoint/index.js +345 -0
- package/dist/core/checkpoint/index.js.map +1 -0
- package/dist/core/checkpoint/shadow.d.ts +32 -0
- package/dist/core/checkpoint/shadow.js +281 -0
- package/dist/core/checkpoint/shadow.js.map +1 -0
- package/dist/core/checkpoint/types.d.ts +58 -0
- package/dist/core/checkpoint/types.js +9 -0
- package/dist/core/checkpoint/types.js.map +1 -0
- package/dist/core/commands.d.ts +49 -0
- package/dist/core/commands.js +21 -0
- package/dist/core/commands.js.map +1 -0
- package/dist/core/config.d.ts +168 -0
- package/dist/core/config.js +511 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context/breakdown.d.ts +37 -0
- package/dist/core/context/breakdown.js +50 -0
- package/dist/core/context/breakdown.js.map +1 -0
- package/dist/core/context/brief.d.ts +48 -0
- package/dist/core/context/brief.js +128 -0
- package/dist/core/context/brief.js.map +1 -0
- package/dist/core/context/commands.d.ts +1 -0
- package/dist/core/context/commands.js +157 -0
- package/dist/core/context/commands.js.map +1 -0
- package/dist/core/context/goal.d.ts +70 -0
- package/dist/core/context/goal.js +171 -0
- package/dist/core/context/goal.js.map +1 -0
- package/dist/core/context/goalVerifier.d.ts +100 -0
- package/dist/core/context/goalVerifier.js +383 -0
- package/dist/core/context/goalVerifier.js.map +1 -0
- package/dist/core/context/harnessCheck.d.ts +83 -0
- package/dist/core/context/harnessCheck.js +753 -0
- package/dist/core/context/harnessCheck.js.map +1 -0
- package/dist/core/context/index/bm25.d.ts +16 -0
- package/dist/core/context/index/bm25.js +71 -0
- package/dist/core/context/index/bm25.js.map +1 -0
- package/dist/core/context/index/chunker.d.ts +18 -0
- package/dist/core/context/index/chunker.js +108 -0
- package/dist/core/context/index/chunker.js.map +1 -0
- package/dist/core/context/index/codeIndex.d.ts +78 -0
- package/dist/core/context/index/codeIndex.js +302 -0
- package/dist/core/context/index/codeIndex.js.map +1 -0
- package/dist/core/context/index/config.d.ts +59 -0
- package/dist/core/context/index/config.js +42 -0
- package/dist/core/context/index/config.js.map +1 -0
- package/dist/core/context/index/embed.d.ts +13 -0
- package/dist/core/context/index/embed.js +66 -0
- package/dist/core/context/index/embed.js.map +1 -0
- package/dist/core/context/index/evalLocalisation.d.ts +40 -0
- package/dist/core/context/index/evalLocalisation.js +92 -0
- package/dist/core/context/index/evalLocalisation.js.map +1 -0
- package/dist/core/context/index/evalRepos.d.ts +61 -0
- package/dist/core/context/index/evalRepos.js +224 -0
- package/dist/core/context/index/evalRepos.js.map +1 -0
- package/dist/core/context/index/files.d.ts +28 -0
- package/dist/core/context/index/files.js +78 -0
- package/dist/core/context/index/files.js.map +1 -0
- package/dist/core/context/index/key.d.ts +2 -0
- package/dist/core/context/index/key.js +19 -0
- package/dist/core/context/index/key.js.map +1 -0
- package/dist/core/context/index/tool.d.ts +21 -0
- package/dist/core/context/index/tool.js +171 -0
- package/dist/core/context/index/tool.js.map +1 -0
- package/dist/core/context/mentions.d.ts +20 -0
- package/dist/core/context/mentions.js +115 -0
- package/dist/core/context/mentions.js.map +1 -0
- package/dist/core/context/register.d.ts +11 -0
- package/dist/core/context/register.js +12 -0
- package/dist/core/context/register.js.map +1 -0
- package/dist/core/context/repomap.d.ts +120 -0
- package/dist/core/context/repomap.js +916 -0
- package/dist/core/context/repomap.js.map +1 -0
- package/dist/core/context/sessionState.d.ts +34 -0
- package/dist/core/context/sessionState.js +90 -0
- package/dist/core/context/sessionState.js.map +1 -0
- package/dist/core/context/settings.d.ts +95 -0
- package/dist/core/context/settings.js +36 -0
- package/dist/core/context/settings.js.map +1 -0
- package/dist/core/context/taint.d.ts +67 -0
- package/dist/core/context/taint.js +162 -0
- package/dist/core/context/taint.js.map +1 -0
- package/dist/core/context/verification.d.ts +69 -0
- package/dist/core/context/verification.js +463 -0
- package/dist/core/context/verification.js.map +1 -0
- package/dist/core/context/worktree.d.ts +43 -0
- package/dist/core/context/worktree.js +181 -0
- package/dist/core/context/worktree.js.map +1 -0
- package/dist/core/context/worktreeBoard.d.ts +261 -0
- package/dist/core/context/worktreeBoard.js +827 -0
- package/dist/core/context/worktreeBoard.js.map +1 -0
- package/dist/core/context/worktreeCheck.d.ts +35 -0
- package/dist/core/context/worktreeCheck.js +66 -0
- package/dist/core/context/worktreeCheck.js.map +1 -0
- package/dist/core/context/worktreeCommands.d.ts +12 -0
- package/dist/core/context/worktreeCommands.js +320 -0
- package/dist/core/context/worktreeCommands.js.map +1 -0
- package/dist/core/context/worktreeGit.d.ts +105 -0
- package/dist/core/context/worktreeGit.js +263 -0
- package/dist/core/context/worktreeGit.js.map +1 -0
- package/dist/core/docs/ask.d.ts +43 -0
- package/dist/core/docs/ask.js +200 -0
- package/dist/core/docs/ask.js.map +1 -0
- package/dist/core/docs/changelog.d.ts +61 -0
- package/dist/core/docs/changelog.js +210 -0
- package/dist/core/docs/changelog.js.map +1 -0
- package/dist/core/docs/check.d.ts +42 -0
- package/dist/core/docs/check.js +432 -0
- package/dist/core/docs/check.js.map +1 -0
- package/dist/core/docs/checks.d.ts +32 -0
- package/dist/core/docs/checks.js +110 -0
- package/dist/core/docs/checks.js.map +1 -0
- package/dist/core/docs/cite.d.ts +49 -0
- package/dist/core/docs/cite.js +146 -0
- package/dist/core/docs/cite.js.map +1 -0
- package/dist/core/docs/config.d.ts +48 -0
- package/dist/core/docs/config.js +17 -0
- package/dist/core/docs/config.js.map +1 -0
- package/dist/core/docs/docstring.d.ts +51 -0
- package/dist/core/docs/docstring.js +221 -0
- package/dist/core/docs/docstring.js.map +1 -0
- package/dist/core/docs/inventory.d.ts +41 -0
- package/dist/core/docs/inventory.js +196 -0
- package/dist/core/docs/inventory.js.map +1 -0
- package/dist/core/docs/judge.d.ts +28 -0
- package/dist/core/docs/judge.js +83 -0
- package/dist/core/docs/judge.js.map +1 -0
- package/dist/core/docs/llm.d.ts +32 -0
- package/dist/core/docs/llm.js +48 -0
- package/dist/core/docs/llm.js.map +1 -0
- package/dist/core/docs/mermaid.d.ts +30 -0
- package/dist/core/docs/mermaid.js +108 -0
- package/dist/core/docs/mermaid.js.map +1 -0
- package/dist/core/docs/register.d.ts +1 -0
- package/dist/core/docs/register.js +257 -0
- package/dist/core/docs/register.js.map +1 -0
- package/dist/core/docs/render.d.ts +30 -0
- package/dist/core/docs/render.js +183 -0
- package/dist/core/docs/render.js.map +1 -0
- package/dist/core/docs/sync.d.ts +69 -0
- package/dist/core/docs/sync.js +218 -0
- package/dist/core/docs/sync.js.map +1 -0
- package/dist/core/docs/wiki.d.ts +69 -0
- package/dist/core/docs/wiki.js +492 -0
- package/dist/core/docs/wiki.js.map +1 -0
- package/dist/core/edit/applyModel.d.ts +21 -0
- package/dist/core/edit/applyModel.js +85 -0
- package/dist/core/edit/applyModel.js.map +1 -0
- package/dist/core/edit/applyPatch.d.ts +66 -0
- package/dist/core/edit/applyPatch.js +459 -0
- package/dist/core/edit/applyPatch.js.map +1 -0
- package/dist/core/edit/benchCases.d.ts +22 -0
- package/dist/core/edit/benchCases.js +65 -0
- package/dist/core/edit/benchCases.js.map +1 -0
- package/dist/core/edit/config.d.ts +35 -0
- package/dist/core/edit/config.js +17 -0
- package/dist/core/edit/config.js.map +1 -0
- package/dist/core/edit/diff.d.ts +21 -0
- package/dist/core/edit/diff.js +118 -0
- package/dist/core/edit/diff.js.map +1 -0
- package/dist/core/edit/match.d.ts +97 -0
- package/dist/core/edit/match.js +620 -0
- package/dist/core/edit/match.js.map +1 -0
- package/dist/core/edit/metrics.d.ts +27 -0
- package/dist/core/edit/metrics.js +120 -0
- package/dist/core/edit/metrics.js.map +1 -0
- package/dist/core/edit/routing.d.ts +19 -0
- package/dist/core/edit/routing.js +97 -0
- package/dist/core/edit/routing.js.map +1 -0
- package/dist/core/edit/state.d.ts +18 -0
- package/dist/core/edit/state.js +39 -0
- package/dist/core/edit/state.js.map +1 -0
- package/dist/core/edit/text.d.ts +47 -0
- package/dist/core/edit/text.js +175 -0
- package/dist/core/edit/text.js.map +1 -0
- package/dist/core/edit/treesitter.d.ts +65 -0
- package/dist/core/edit/treesitter.js +216 -0
- package/dist/core/edit/treesitter.js.map +1 -0
- package/dist/core/edit/verify.d.ts +51 -0
- package/dist/core/edit/verify.js +357 -0
- package/dist/core/edit/verify.js.map +1 -0
- package/dist/core/eval/arena.d.ts +204 -0
- package/dist/core/eval/arena.js +462 -0
- package/dist/core/eval/arena.js.map +1 -0
- package/dist/core/eval/arenaCommands.d.ts +28 -0
- package/dist/core/eval/arenaCommands.js +275 -0
- package/dist/core/eval/arenaCommands.js.map +1 -0
- package/dist/core/eval/bench.d.ts +107 -0
- package/dist/core/eval/bench.js +482 -0
- package/dist/core/eval/bench.js.map +1 -0
- package/dist/core/eval/commands.d.ts +1 -0
- package/dist/core/eval/commands.js +201 -0
- package/dist/core/eval/commands.js.map +1 -0
- package/dist/core/eval/compare.d.ts +115 -0
- package/dist/core/eval/compare.js +366 -0
- package/dist/core/eval/compare.js.map +1 -0
- package/dist/core/eval/contention.d.ts +28 -0
- package/dist/core/eval/contention.js +45 -0
- package/dist/core/eval/contention.js.map +1 -0
- package/dist/core/eval/external.d.ts +134 -0
- package/dist/core/eval/external.js +421 -0
- package/dist/core/eval/external.js.map +1 -0
- package/dist/core/eval/harbor.d.ts +51 -0
- package/dist/core/eval/harbor.js +269 -0
- package/dist/core/eval/harbor.js.map +1 -0
- package/dist/core/eval/isolation.d.ts +58 -0
- package/dist/core/eval/isolation.js +209 -0
- package/dist/core/eval/isolation.js.map +1 -0
- package/dist/core/eval/review.d.ts +58 -0
- package/dist/core/eval/review.js +171 -0
- package/dist/core/eval/review.js.map +1 -0
- package/dist/core/eval/runner.d.ts +87 -0
- package/dist/core/eval/runner.js +385 -0
- package/dist/core/eval/runner.js.map +1 -0
- package/dist/core/eval/scorer.d.ts +138 -0
- package/dist/core/eval/scorer.js +91 -0
- package/dist/core/eval/scorer.js.map +1 -0
- package/dist/core/eval/swepro.d.ts +50 -0
- package/dist/core/eval/swepro.js +133 -0
- package/dist/core/eval/swepro.js.map +1 -0
- package/dist/core/host/vscode-contract.d.ts +85 -0
- package/dist/core/host/vscode-contract.js +18 -0
- package/dist/core/host/vscode-contract.js.map +1 -0
- package/dist/core/host/workspace.d.ts +171 -0
- package/dist/core/host/workspace.js +53 -0
- package/dist/core/host/workspace.js.map +1 -0
- package/dist/core/index.d.ts +33 -0
- package/dist/core/index.js +34 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/jobs/manager.d.ts +74 -0
- package/dist/core/jobs/manager.js +205 -0
- package/dist/core/jobs/manager.js.map +1 -0
- package/dist/core/jobs/tools.d.ts +16 -0
- package/dist/core/jobs/tools.js +92 -0
- package/dist/core/jobs/tools.js.map +1 -0
- package/dist/core/llm/admission.d.ts +133 -0
- package/dist/core/llm/admission.js +206 -0
- package/dist/core/llm/admission.js.map +1 -0
- package/dist/core/llm/client.d.ts +113 -0
- package/dist/core/llm/client.js +585 -0
- package/dist/core/llm/client.js.map +1 -0
- package/dist/core/llm/ollama.d.ts +123 -0
- package/dist/core/llm/ollama.js +185 -0
- package/dist/core/llm/ollama.js.map +1 -0
- package/dist/core/llm/ollamaAgent.d.ts +26 -0
- package/dist/core/llm/ollamaAgent.js +112 -0
- package/dist/core/llm/ollamaAgent.js.map +1 -0
- package/dist/core/llm/overlays.d.ts +65 -0
- package/dist/core/llm/overlays.js +204 -0
- package/dist/core/llm/overlays.js.map +1 -0
- package/dist/core/llm/pricing.d.ts +17 -0
- package/dist/core/llm/pricing.js +82 -0
- package/dist/core/llm/pricing.js.map +1 -0
- package/dist/core/llm/probe.d.ts +27 -0
- package/dist/core/llm/probe.js +65 -0
- package/dist/core/llm/probe.js.map +1 -0
- package/dist/core/llm/promptCache.d.ts +76 -0
- package/dist/core/llm/promptCache.js +83 -0
- package/dist/core/llm/promptCache.js.map +1 -0
- package/dist/core/llm/textProtocol.d.ts +44 -0
- package/dist/core/llm/textProtocol.js +334 -0
- package/dist/core/llm/textProtocol.js.map +1 -0
- package/dist/core/mcp/cli.d.ts +1 -0
- package/dist/core/mcp/cli.js +61 -0
- package/dist/core/mcp/cli.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +99 -0
- package/dist/core/mcp/manager.js +449 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/oauth.d.ts +68 -0
- package/dist/core/mcp/oauth.js +225 -0
- package/dist/core/mcp/oauth.js.map +1 -0
- package/dist/core/mcp/registry.d.ts +25 -0
- package/dist/core/mcp/registry.js +64 -0
- package/dist/core/mcp/registry.js.map +1 -0
- package/dist/core/memory/memory.d.ts +33 -0
- package/dist/core/memory/memory.js +142 -0
- package/dist/core/memory/memory.js.map +1 -0
- package/dist/core/memory/tools.d.ts +10 -0
- package/dist/core/memory/tools.js +54 -0
- package/dist/core/memory/tools.js.map +1 -0
- package/dist/core/nav/commands.d.ts +8 -0
- package/dist/core/nav/commands.js +45 -0
- package/dist/core/nav/commands.js.map +1 -0
- package/dist/core/nav/config.d.ts +100 -0
- package/dist/core/nav/config.js +138 -0
- package/dist/core/nav/config.js.map +1 -0
- package/dist/core/nav/diagnostics.d.ts +12 -0
- package/dist/core/nav/diagnostics.js +68 -0
- package/dist/core/nav/diagnostics.js.map +1 -0
- package/dist/core/nav/fallback.d.ts +41 -0
- package/dist/core/nav/fallback.js +234 -0
- package/dist/core/nav/fallback.js.map +1 -0
- package/dist/core/nav/lsp.d.ts +105 -0
- package/dist/core/nav/lsp.js +439 -0
- package/dist/core/nav/lsp.js.map +1 -0
- package/dist/core/nav/servers.d.ts +68 -0
- package/dist/core/nav/servers.js +334 -0
- package/dist/core/nav/servers.js.map +1 -0
- package/dist/core/nav/tools.d.ts +66 -0
- package/dist/core/nav/tools.js +759 -0
- package/dist/core/nav/tools.js.map +1 -0
- package/dist/core/permissions/agentProcs.d.ts +12 -0
- package/dist/core/permissions/agentProcs.js +105 -0
- package/dist/core/permissions/agentProcs.js.map +1 -0
- package/dist/core/permissions/audit.d.ts +72 -0
- package/dist/core/permissions/audit.js +384 -0
- package/dist/core/permissions/audit.js.map +1 -0
- package/dist/core/permissions/auditSink.d.ts +22 -0
- package/dist/core/permissions/auditSink.js +80 -0
- package/dist/core/permissions/auditSink.js.map +1 -0
- package/dist/core/permissions/authority.d.ts +25 -0
- package/dist/core/permissions/authority.js +106 -0
- package/dist/core/permissions/authority.js.map +1 -0
- package/dist/core/permissions/credentials.d.ts +11 -0
- package/dist/core/permissions/credentials.js +349 -0
- package/dist/core/permissions/credentials.js.map +1 -0
- package/dist/core/permissions/fromConfig.d.ts +6 -0
- package/dist/core/permissions/fromConfig.js +22 -0
- package/dist/core/permissions/fromConfig.js.map +1 -0
- package/dist/core/permissions/gitConfigAdopt.d.ts +16 -0
- package/dist/core/permissions/gitConfigAdopt.js +122 -0
- package/dist/core/permissions/gitConfigAdopt.js.map +1 -0
- package/dist/core/permissions/harnessWrites.d.ts +2 -0
- package/dist/core/permissions/harnessWrites.js +19 -0
- package/dist/core/permissions/harnessWrites.js.map +1 -0
- package/dist/core/permissions/ignore.d.ts +55 -0
- package/dist/core/permissions/ignore.js +322 -0
- package/dist/core/permissions/ignore.js.map +1 -0
- package/dist/core/permissions/limits.d.ts +80 -0
- package/dist/core/permissions/limits.js +295 -0
- package/dist/core/permissions/limits.js.map +1 -0
- package/dist/core/permissions/policy.d.ts +148 -0
- package/dist/core/permissions/policy.js +687 -0
- package/dist/core/permissions/policy.js.map +1 -0
- package/dist/core/permissions/protect.d.ts +71 -0
- package/dist/core/permissions/protect.js +842 -0
- package/dist/core/permissions/protect.js.map +1 -0
- package/dist/core/permissions/protectFs.d.ts +82 -0
- package/dist/core/permissions/protectFs.js +483 -0
- package/dist/core/permissions/protectFs.js.map +1 -0
- package/dist/core/permissions/safety.d.ts +12 -0
- package/dist/core/permissions/safety.js +34 -0
- package/dist/core/permissions/safety.js.map +1 -0
- package/dist/core/permissions/shellWrites.d.ts +10 -0
- package/dist/core/permissions/shellWrites.js +215 -0
- package/dist/core/permissions/shellWrites.js.map +1 -0
- package/dist/core/plugins/cli.d.ts +1 -0
- package/dist/core/plugins/cli.js +157 -0
- package/dist/core/plugins/cli.js.map +1 -0
- package/dist/core/plugins/index.d.ts +22 -0
- package/dist/core/plugins/index.js +121 -0
- package/dist/core/plugins/index.js.map +1 -0
- package/dist/core/plugins/manifest.d.ts +26 -0
- package/dist/core/plugins/manifest.js +156 -0
- package/dist/core/plugins/manifest.js.map +1 -0
- package/dist/core/plugins/register.d.ts +12 -0
- package/dist/core/plugins/register.js +23 -0
- package/dist/core/plugins/register.js.map +1 -0
- package/dist/core/plugins/statusLine.d.ts +64 -0
- package/dist/core/plugins/statusLine.js +118 -0
- package/dist/core/plugins/statusLine.js.map +1 -0
- package/dist/core/plugins/store.d.ts +83 -0
- package/dist/core/plugins/store.js +372 -0
- package/dist/core/plugins/store.js.map +1 -0
- package/dist/core/policy/managed.d.ts +91 -0
- package/dist/core/policy/managed.js +463 -0
- package/dist/core/policy/managed.js.map +1 -0
- package/dist/core/policy/orgUsage.d.ts +40 -0
- package/dist/core/policy/orgUsage.js +160 -0
- package/dist/core/policy/orgUsage.js.map +1 -0
- package/dist/core/policy/remote.d.ts +90 -0
- package/dist/core/policy/remote.js +214 -0
- package/dist/core/policy/remote.js.map +1 -0
- package/dist/core/sandbox/cli.d.ts +24 -0
- package/dist/core/sandbox/cli.js +203 -0
- package/dist/core/sandbox/cli.js.map +1 -0
- package/dist/core/sandbox/container.d.ts +125 -0
- package/dist/core/sandbox/container.js +532 -0
- package/dist/core/sandbox/container.js.map +1 -0
- package/dist/core/sandbox/containerProxy.d.ts +1 -0
- package/dist/core/sandbox/containerProxy.js +56 -0
- package/dist/core/sandbox/containerProxy.js.map +1 -0
- package/dist/core/sandbox/index.d.ts +214 -0
- package/dist/core/sandbox/index.js +664 -0
- package/dist/core/sandbox/index.js.map +1 -0
- package/dist/core/sandbox/landlock.d.ts +51 -0
- package/dist/core/sandbox/landlock.js +174 -0
- package/dist/core/sandbox/landlock.js.map +1 -0
- package/dist/core/sandbox/landlockHelper.d.ts +25 -0
- package/dist/core/sandbox/landlockHelper.js +277 -0
- package/dist/core/sandbox/landlockHelper.js.map +1 -0
- package/dist/core/sandbox/proxy.d.ts +71 -0
- package/dist/core/sandbox/proxy.js +276 -0
- package/dist/core/sandbox/proxy.js.map +1 -0
- package/dist/core/sandbox/settings.d.ts +71 -0
- package/dist/core/sandbox/settings.js +120 -0
- package/dist/core/sandbox/settings.js.map +1 -0
- package/dist/core/schedule/cli.d.ts +5 -0
- package/dist/core/schedule/cli.js +371 -0
- package/dist/core/schedule/cli.js.map +1 -0
- package/dist/core/schedule/cron.d.ts +43 -0
- package/dist/core/schedule/cron.js +176 -0
- package/dist/core/schedule/cron.js.map +1 -0
- package/dist/core/schedule/daemon.d.ts +48 -0
- package/dist/core/schedule/daemon.js +231 -0
- package/dist/core/schedule/daemon.js.map +1 -0
- package/dist/core/schedule/heartbeat.d.ts +15 -0
- package/dist/core/schedule/heartbeat.js +22 -0
- package/dist/core/schedule/heartbeat.js.map +1 -0
- package/dist/core/schedule/intake.d.ts +120 -0
- package/dist/core/schedule/intake.js +501 -0
- package/dist/core/schedule/intake.js.map +1 -0
- package/dist/core/schedule/parked.d.ts +108 -0
- package/dist/core/schedule/parked.js +268 -0
- package/dist/core/schedule/parked.js.map +1 -0
- package/dist/core/schedule/register.d.ts +11 -0
- package/dist/core/schedule/register.js +11 -0
- package/dist/core/schedule/register.js.map +1 -0
- package/dist/core/schedule/report.d.ts +5 -0
- package/dist/core/schedule/report.js +56 -0
- package/dist/core/schedule/report.js.map +1 -0
- package/dist/core/schedule/run.d.ts +42 -0
- package/dist/core/schedule/run.js +220 -0
- package/dist/core/schedule/run.js.map +1 -0
- package/dist/core/schedule/service.d.ts +20 -0
- package/dist/core/schedule/service.js +74 -0
- package/dist/core/schedule/service.js.map +1 -0
- package/dist/core/schedule/store.d.ts +82 -0
- package/dist/core/schedule/store.js +197 -0
- package/dist/core/schedule/store.js.map +1 -0
- package/dist/core/schedule/types.d.ts +135 -0
- package/dist/core/schedule/types.js +17 -0
- package/dist/core/schedule/types.js.map +1 -0
- package/dist/core/schedule/webhook.d.ts +35 -0
- package/dist/core/schedule/webhook.js +227 -0
- package/dist/core/schedule/webhook.js.map +1 -0
- package/dist/core/secrets/vault.d.ts +25 -0
- package/dist/core/secrets/vault.js +121 -0
- package/dist/core/secrets/vault.js.map +1 -0
- package/dist/core/serverHooks.d.ts +39 -0
- package/dist/core/serverHooks.js +18 -0
- package/dist/core/serverHooks.js.map +1 -0
- package/dist/core/skills/compat.d.ts +37 -0
- package/dist/core/skills/compat.js +266 -0
- package/dist/core/skills/compat.js.map +1 -0
- package/dist/core/skills/manager.d.ts +49 -0
- package/dist/core/skills/manager.js +196 -0
- package/dist/core/skills/manager.js.map +1 -0
- package/dist/core/skills/outputStyles.d.ts +15 -0
- package/dist/core/skills/outputStyles.js +92 -0
- package/dist/core/skills/outputStyles.js.map +1 -0
- package/dist/core/skills/sections.d.ts +10 -0
- package/dist/core/skills/sections.js +21 -0
- package/dist/core/skills/sections.js.map +1 -0
- package/dist/core/telemetry/otel.d.ts +63 -0
- package/dist/core/telemetry/otel.js +275 -0
- package/dist/core/telemetry/otel.js.map +1 -0
- package/dist/core/tools/fs.d.ts +72 -0
- package/dist/core/tools/fs.js +1059 -0
- package/dist/core/tools/fs.js.map +1 -0
- package/dist/core/tools/index.d.ts +7 -0
- package/dist/core/tools/index.js +28 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/meta.d.ts +43 -0
- package/dist/core/tools/meta.js +161 -0
- package/dist/core/tools/meta.js.map +1 -0
- package/dist/core/tools/notebook.d.ts +39 -0
- package/dist/core/tools/notebook.js +192 -0
- package/dist/core/tools/notebook.js.map +1 -0
- package/dist/core/tools/providers.d.ts +21 -0
- package/dist/core/tools/providers.js +21 -0
- package/dist/core/tools/providers.js.map +1 -0
- package/dist/core/tools/registry.d.ts +23 -0
- package/dist/core/tools/registry.js +24 -0
- package/dist/core/tools/registry.js.map +1 -0
- package/dist/core/tools/screenshot.d.ts +11 -0
- package/dist/core/tools/screenshot.js +181 -0
- package/dist/core/tools/screenshot.js.map +1 -0
- package/dist/core/tools/search.d.ts +37 -0
- package/dist/core/tools/search.js +91 -0
- package/dist/core/tools/search.js.map +1 -0
- package/dist/core/tools/shell.d.ts +185 -0
- package/dist/core/tools/shell.js +583 -0
- package/dist/core/tools/shell.js.map +1 -0
- package/dist/core/tools/types.d.ts +91 -0
- package/dist/core/tools/types.js +22 -0
- package/dist/core/tools/types.js.map +1 -0
- package/dist/core/tools/web.d.ts +33 -0
- package/dist/core/tools/web.js +341 -0
- package/dist/core/tools/web.js.map +1 -0
- package/dist/core/types.d.ts +376 -0
- package/dist/core/types.js +11 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/util/attachments.d.ts +8 -0
- package/dist/core/util/attachments.js +29 -0
- package/dist/core/util/attachments.js.map +1 -0
- package/dist/core/util/json.d.ts +19 -0
- package/dist/core/util/json.js +149 -0
- package/dist/core/util/json.js.map +1 -0
- package/dist/core/util/procs.d.ts +68 -0
- package/dist/core/util/procs.js +252 -0
- package/dist/core/util/procs.js.map +1 -0
- package/dist/core/util/text.d.ts +19 -0
- package/dist/core/util/text.js +84 -0
- package/dist/core/util/text.js.map +1 -0
- package/dist/core/util/untrusted.d.ts +23 -0
- package/dist/core/util/untrusted.js +44 -0
- package/dist/core/util/untrusted.js.map +1 -0
- package/dist/core/util/upstream.d.ts +40 -0
- package/dist/core/util/upstream.js +90 -0
- package/dist/core/util/upstream.js.map +1 -0
- package/dist/core/workspace/cli.d.ts +1 -0
- package/dist/core/workspace/cli.js +52 -0
- package/dist/core/workspace/cli.js.map +1 -0
- package/dist/core/workspace/extension.d.ts +1 -0
- package/dist/core/workspace/extension.js +91 -0
- package/dist/core/workspace/extension.js.map +1 -0
- package/dist/core/workspace/lease.d.ts +82 -0
- package/dist/core/workspace/lease.js +192 -0
- package/dist/core/workspace/lease.js.map +1 -0
- package/dist/sdk/index.d.ts +86 -0
- package/dist/sdk/index.js +143 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/server/cli.d.ts +1 -0
- package/dist/server/cli.js +171 -0
- package/dist/server/cli.js.map +1 -0
- package/dist/server/client.d.ts +40 -0
- package/dist/server/client.js +96 -0
- package/dist/server/client.js.map +1 -0
- package/dist/server/protocol.d.ts +93 -0
- package/dist/server/protocol.js +3 -0
- package/dist/server/protocol.js.map +1 -0
- package/dist/server/register.d.ts +3 -0
- package/dist/server/register.js +4 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/remote.d.ts +34 -0
- package/dist/server/remote.js +155 -0
- package/dist/server/remote.js.map +1 -0
- package/dist/server/rpc.d.ts +55 -0
- package/dist/server/rpc.js +166 -0
- package/dist/server/rpc.js.map +1 -0
- package/dist/server/server.d.ts +45 -0
- package/dist/server/server.js +273 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/sessions.d.ts +132 -0
- package/dist/server/sessions.js +315 -0
- package/dist/server/sessions.js.map +1 -0
- package/dist/server/tokens.d.ts +26 -0
- package/dist/server/tokens.js +80 -0
- package/dist/server/tokens.js.map +1 -0
- package/docker/desktop-sandbox/Dockerfile +53 -0
- package/docker/desktop-sandbox/apps/oh_calc.py +61 -0
- package/docker/desktop-sandbox/entrypoint.sh +21 -0
- package/docker/desktop-sandbox/oh-desktop-sidecar +6 -0
- package/docker/desktop-sandbox/session.sh +20 -0
- package/package.json +96 -4
- package/skills/code-review/SKILL.md +14 -0
- package/skills/git-workflow/SKILL.md +10 -0
- package/skills/python-bugfix/SKILL.md +18 -0
- package/skills/skill-creator/SKILL.md +34 -0
- package/skills/team-coordinate/SKILL.md +14 -0
- package/skills/test-driven-fix/SKILL.md +10 -0
- package/skills/web-pages/SKILL.md +19 -0
- package/skills/web-research/SKILL.md +10 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Prateek Mohan Garg
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Tugline
|
|
2
|
+
Copyright (c) Tugline contributors. Licensed under the MIT License (see LICENSE).
|
|
3
|
+
|
|
4
|
+
This product includes software derived from the following projects, used under the
|
|
5
|
+
Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0). Each derived
|
|
6
|
+
file keeps its original copyright and licence header and carries a modification note.
|
|
7
|
+
The full list of derived files and source commits is in docs/THIRD_PARTY.md.
|
|
8
|
+
|
|
9
|
+
Qwen Code
|
|
10
|
+
Copyright 2025 Qwen Team
|
|
11
|
+
Copyright 2026 Qwen Team
|
|
12
|
+
Copyright 2025 Google LLC
|
|
13
|
+
https://github.com/QwenLM/qwen-code (Apache-2.0; commit c726d2c)
|
|
14
|
+
|
|
15
|
+
The VS Code extension bundles the Codicons icon font (vscode/media/codicons):
|
|
16
|
+
VS Code Codicons
|
|
17
|
+
Copyright (c) Microsoft Corporation
|
|
18
|
+
https://github.com/microsoft/vscode-codicons
|
|
19
|
+
Font and icons: Creative Commons Attribution 4.0 International (CC BY 4.0)
|
|
20
|
+
Code (codicon.css): MIT License
|
package/README.md
CHANGED
|
@@ -1,3 +1,275 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Tugline
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**An open agentic coding and automation harness for *your* LLM.** Point it at any OpenAI-compatible endpoint (a model on your laptop, your company's GPU server, or a cheap hosted open model) and you get an agent that reads and edits code, runs tests, drives a browser or desktop apps, uses MCP servers, follows skills and runs on a schedule. It ships as a **CLI** (`tug`), a **VS Code extension**, an **ACP agent** for Zed, JetBrains and Neovim, a local **server** and an **SDK**.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
base URL + API key + model name ──▶ Tugline ──▶ an agent
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
How it differs:
|
|
10
|
+
- **Any model.** Ollama, LM Studio, llama.cpp, vLLM, SGLang, TGI, LiteLLM, company gateways, OpenRouter, DeepSeek, Nebius and others. Models without native tool calling work through a text tool protocol, and server quirks are healed in the client.
|
|
11
|
+
- **Deterministic safety.** Code decides every permission, not the model or a prompt: permission modes, allow/deny rules, protected paths, a workspace jail, workspace trust, an OS sandbox, checkpoints, spend limits and a managed policy for admins.
|
|
12
|
+
- **Model-adaptive.** Per-model edit formats (`apply_patch` for GPT-family models, anchored edits for the rest), prompt overlays, a tiered edit matcher, compaction and tool search sized for 16–32K windows.
|
|
13
|
+
|
|
14
|
+
Docs: **[User guide](docs/USER_GUIDE.md)** (every command and setting) · [Design](docs/DESIGN.md) · [Testing](docs/TESTING.md) · [Models and servers](docs/MODELS.md) · [Dependencies](docs/DEPENDENCIES.md)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Quick start: CLI
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install -g tugline # Node >= 20; provides `tug` and `tugline`
|
|
22
|
+
tug setup # wizard: base URL, API key, model, capability probe
|
|
23
|
+
tug doctor # checks the endpoint, tool calling, ripgrep, Playwright, MCP
|
|
24
|
+
cd your-project
|
|
25
|
+
tug # interactive
|
|
26
|
+
tug -p "fix the failing test in tests/test_api.py" # headless: prints the answer
|
|
27
|
+
tug --auto -p "add a --verbose flag and update the README" # auto mode: a safety classifier approves routine commands
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Or configure with environment variables instead of `tug setup`:
|
|
31
|
+
`TUG_BASE_URL`, `TUG_API_KEY`, `TUG_MODEL`, `TUG_CONTEXT_WINDOW`, `TUG_TOOL_MODE`, `TUG_PROFILE`, `TUG_PERMISSION_MODE`.
|
|
32
|
+
|
|
33
|
+
From source instead: `npm install && npm run build && npm link`.
|
|
34
|
+
|
|
35
|
+
## Quick start: VS Code
|
|
36
|
+
|
|
37
|
+
Install **Tugline** from the VS Code Marketplace (Extensions view, search "Tugline"). For Cursor, Windsurf or VSCodium, install it from Open VSX. From source: `cd vscode && npm install && npm run package`, then `code --install-extension tugline-*.vsix`.
|
|
38
|
+
|
|
39
|
+
Open the **Tugline** icon in the activity bar. With a local server running (Ollama, LM Studio or llama.cpp), setup is mouse-only: if the endpoint does not answer or the model is not installed, the chat panel shows a card with a button per detected local server and per installed chat model (tool-capable coder models first). One click sets the model and tests the connection; with Ollama the context window is read from Ollama itself. For a company or custom URL, run **Tugline: Configure LLM Endpoint**: pick a preset (Ollama, LM Studio, llama.cpp, vLLM, OpenRouter, DeepSeek or custom), enter the API key (stored in VS Code SecretStorage) and choose a model. The connection is probed and the best tool-calling mode is offered. The extension needs VS Code 1.93 or later.
|
|
40
|
+
|
|
41
|
+
## Connect to your model
|
|
42
|
+
|
|
43
|
+
**Company endpoint** (`~/.tugline/config.json`):
|
|
44
|
+
```jsonc
|
|
45
|
+
{
|
|
46
|
+
"profile": "company",
|
|
47
|
+
"profiles": {
|
|
48
|
+
"company": { "baseUrl": "https://llm.corp.example/v1", "apiKey": "env:CORP_LLM_KEY",
|
|
49
|
+
"model": "qwen3-coder-30b", "contextWindow": 65536, "headers": { "X-Team": "platform" } }
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Ollama.** Tugline reads the context Ollama really runs the model with (`/api/show`, `/api/ps`) and budgets to min(configured, Ollama's), with a notice. The default context is often 4K, which is too small for an agent, so give it at least **16K** (32K or more is better) in **Ollama → Settings → Context length**, or:
|
|
55
|
+
```bash
|
|
56
|
+
launchctl setenv OLLAMA_CONTEXT_LENGTH 32768 # macOS; then restart the Ollama app
|
|
57
|
+
ollama pull qwen3-coder:30b # 32 GB Mac; on 16 GB try qwen3.5:9b
|
|
58
|
+
export TUG_BASE_URL=http://localhost:11434/v1 TUG_MODEL=qwen3-coder:30b TUG_CONTEXT_WINDOW=32768
|
|
59
|
+
tug doctor
|
|
60
|
+
./scripts/test-ollama.sh --quick # compare every local model on the eval suites
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**llama.cpp:**
|
|
64
|
+
```bash
|
|
65
|
+
llama-server -hf unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:Q4_K_M --jinja -c 65536 --port 8080
|
|
66
|
+
export TUG_BASE_URL=http://127.0.0.1:8080/v1 TUG_MODEL=qwen3-coder TUG_CONTEXT_WINDOW=65536
|
|
67
|
+
tug doctor
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
For hosted options and RAM-based model picks, see [docs/MODELS.md](docs/MODELS.md).
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Features
|
|
75
|
+
|
|
76
|
+
Everything risky is **off by default**: browser, desktop, the auto-approver, background jobs, remote runs, autocomplete, telemetry and channels. The [user guide](docs/USER_GUIDE.md#what-is-off-by-default-and-why) says why.
|
|
77
|
+
|
|
78
|
+
### Editing
|
|
79
|
+
- **Tiered matcher.** Edits forgive CRLF, copied line numbers, smart quotes, trailing spaces, shifted indentation, over-escaping and stray blank lines, but never guess. A failed match shows candidate regions with line numbers.
|
|
80
|
+
- **`multi_edit`.** Several edits to one file, applied atomically.
|
|
81
|
+
- **Byte preservation.** Line endings, BOM, final newline and encoding are kept; non-UTF-8 files are refused, not corrupted.
|
|
82
|
+
- **Raw-code edits in text mode.** Models write `<edit path>` SEARCH/REPLACE blocks with no JSON escaping.
|
|
83
|
+
- **Verification after every edit.** The tool result shows new syntax errors or IDE diagnostics and the edited region.
|
|
84
|
+
- **Per-model edit format.** GPT-family models get Codex-style `apply_patch`, others get `edit_file`/`multi_edit` (`edit.editFormat`, or `editFormat` per profile). Success rates go to `~/.tugline/model-stats.json`.
|
|
85
|
+
- **Optional apply model** (`edit.applyModel`) merges "… existing code …" snippets under strict output checks.
|
|
86
|
+
- **Notebooks.** `notebook_edit` inserts, replaces and deletes Jupyter cells and keeps the rest byte-exact.
|
|
87
|
+
|
|
88
|
+
### VS Code
|
|
89
|
+
- **Edits go into editor buffers.** They merge with your unsaved text, Ctrl+Z undoes them, and the agent sees IDE diagnostics after each edit.
|
|
90
|
+
- **Write-then-review.** In acceptEdits/auto/yolo mode, changes appear in a Changes list with per-hunk Keep/Undo CodeLens. Undo leaves your own later typing outside the agent's changes alone; typing inside a changed hunk becomes part of that hunk and is undone with it.
|
|
91
|
+
- **Inline edit.** Select code, press Ctrl/Cmd+Alt+K, describe the change, then Accept (Ctrl/Cmd+Shift+Enter) or Reject (Ctrl/Cmd+Shift+Backspace).
|
|
92
|
+
- **Mentions.** `@file`, `@folder/`, `@problems`, `@terminal`, `@git`, `@url:`, `@skill:` with autocomplete.
|
|
93
|
+
- **Images.** Paste or drop images. Vision models see them; text-only models get OCR (`tugline.ocr`) or a description from `tugline.visionProfile`.
|
|
94
|
+
- **Several chats** as tabs, and a History view to resume, rename, delete and search them.
|
|
95
|
+
- **Steering.** While the agent works, Enter queues a message, Steer injects it at the next tool boundary, and ✎ edits an earlier message and resubmits (optionally restoring files).
|
|
96
|
+
- **Model picker** per chat, reasoning effort, and a plan-mode model (`tugline.planProfile`).
|
|
97
|
+
- **Context meter** (amber near compaction) and cost per request, task (subagents included) and chat.
|
|
98
|
+
- **Visible terminal** (`tugline.visibleTerminal`): commands run in an "Tugline" terminal, still sandboxed.
|
|
99
|
+
- **MCP & Skills manager** (status, enable, trust, registry search) and a **Settings** view (rules, protected paths, permissions, hooks).
|
|
100
|
+
- **Checkpoint timeline** with restore, **Emergency Stop** (Ctrl+Alt+Shift+Esc), and a **replay viewer** for recorded browser runs.
|
|
101
|
+
- **Task board (Kanban)** (*Tugline: Open Task Board*): each card is an agent session in its own git worktree; merges are conflict-checked, keep your uncommitted work, and land only after the project check passes on the merged result.
|
|
102
|
+
- **Arena view**: several models (or Cline) on one task side by side, live; pick the winner and it is applied through the same checked merge.
|
|
103
|
+
- **Auto-approve…**: tick categories (read-only commands, edits, web, the MCP servers you name, yolo); they become permission configuration, so deny rules, protected paths, secret files and the sandbox still apply ("read-only commands" is a checker, not wildcard rules: `find -exec`, `git --output` or `cat .env` still ask).
|
|
104
|
+
- **Everyday commands**: Explain / Improve code, *Fix with Tugline* quick fix, Add Terminal Output to Chat, Generate Commit Message (SCM), notebook cell commands, compare a checkpoint, copy the conversation, starred sessions and models, export sessions, and opt-in editor context (`tugline.ideContext`).
|
|
105
|
+
- **Tab autocomplete** with FIM models (`tugline.autocomplete.enabled`; llama.cpp `/infill` or `/completions`).
|
|
106
|
+
|
|
107
|
+
### Parallel work and git
|
|
108
|
+
- **Task board** (`tug board`, `/board`, VS Code Kanban): one worktree per card, from a prompt, a GitHub issue (`--issue`) or a pull request (`--pr`); linked cards; base commit and "behind HEAD" shown; conflicts detected before merging; your uncommitted work is never overwritten; the project check (planned in your tree; a card that edits the check itself is flagged) runs on the merged result before it lands; every incoming file goes through the permission engine and the merge is journaled; cards on issues or PRs start tainted; a card can run an external agent (`--agent cline`), and has a transcript (`tug board log`) and sandboxed commands (`tug board exec`); harness git never runs repository hooks or repo-named programs.
|
|
109
|
+
- **Code intelligence** (`lsp`): definitions, references, hover, implementations, type definitions, call hierarchy, diagnostics with quick fixes, and multi-file rename applied through the permission engine with a checkpoint (`code_apply`, undo with `/rewind`). TS, Python, Go, Rust, Java, C/C++ presets, `lsp.autoDetect`, crash restart; servers run in the sandbox.
|
|
110
|
+
|
|
111
|
+
### CLI
|
|
112
|
+
- **Headless output** `--output-format text|json|stream-json` (schema: `docs/schemas/headless-output.schema.json`), `--input-format stream-json`, `--input-file`, `--session-id`, `--fork-session`, `--max-wall-time`, `--max-tool-calls`, `--allowed-tools`/`--exclude-tools`, `--append-system-prompt`, `--effort`, `--home`.
|
|
113
|
+
- **Sessions**: `tug sessions list|show|export|rename|delete`; `--continue`, `--resume`.
|
|
114
|
+
- **REPL**: themes (`--theme`, `/theme`, NO_COLOR), vim keys (`--vim`, `/vim`), multi-line input (trailing `\`), `/fork`, `/export`, `/copy`, `/diff`, `/btw`, `/commit`, `/recap`, `/permissions`, `/effort`, … and `tug completion bash|zsh|fish`.
|
|
115
|
+
- **Loosening flags are loud**: `--yolo` and `--no-sandbox` print a warning, are journaled, and an organisation's managed policy can forbid them.
|
|
116
|
+
|
|
117
|
+
### Safety & recovery
|
|
118
|
+
- **Permission engine.** Modes `ask` / `acceptEdits` / `plan` / `auto` / `yolo`, Claude-Code-style rules (`bash(npm test*)`, `edit_file(src/**)`), protected paths, a workspace jail, and dangerous commands (`git push`, `rm -rf ~`, `curl | sh`) that always ask.
|
|
119
|
+
- **Auto mode (v1.2).** `--auto` / `/mode auto` / the VS Code picker / `tug serve` / the SDKs: in-workspace edits and read-only commands run at once, everything else goes to a two-stage, transcript-aware safety classifier on your small local model, and a deterministic floor (secrets, exfiltration, publishing, persistence, self-modification, destructive) always asks you, whatever the classifier says. Untrusted content forces a human for outbound calls, the sandbox still applies, and denial tracking hands repeated blocks to you. **Migration:** the old classifier-less `auto` is now called `yolo` (`--yolo`, `-y`); a config that says `"auto"` gets the safer mode. See the [user guide](docs/USER_GUIDE.md#auto-mode).
|
|
120
|
+
- **Workspace trust.** A cloned repo's config cannot redirect your API key, start MCP servers or run hooks until you trust it (`--trust`).
|
|
121
|
+
- **Checkpoints.** Every turn and shell command is snapshotted in a private shadow git repo. `/checkpoints`, `/rewind [n|id] [files|chat|both]`, `/undo [n|all]`.
|
|
122
|
+
- **OS sandbox.** `sandbox.runner: "auto"` runs commands under bubblewrap or, without user namespaces, Landlock (Linux) and Seatbelt (macOS), on every surface (CLI, SDKs, ACP, `tug serve`, channels, schedules, subagents, remote jobs). Credential stores (`~/.ssh`, `~/.aws`, `~/.config/gh` …) are unreadable inside it. Network is limited to `sandbox.allowDomains` through a filtering proxy. Per-command `docker` and `podman` runners, and `tug --container` to run the whole session in a container with no host home, no network of its own, no API key inside (a relay adds it) and egress only through the proxy. `tug sandbox status` explains what is in force; `tug sandbox verify` probes it; `sandbox.require: true` fails closed. A repository's config can only tighten these settings.
|
|
123
|
+
- **Auto-mode approver** (`approver.enabled`). A small model approves routine actions; a deterministic filter always escalates destructive, credential, exfiltration, publishing, persistence and security-weakening actions to you.
|
|
124
|
+
- **Managed policy.** Admins lock the endpoint, deny rules, MCP servers, skills, auto and yolo modes, daily spend and sandboxing in `/etc/tugline/managed.json` (macOS: `/Library/Application Support/Tugline/managed.json`; Windows: `%ProgramData%\Tugline\managed.json`).
|
|
125
|
+
- **`.tuglineignore`** (gitignore syntax). Matching paths are hidden from search and ask before being read.
|
|
126
|
+
- **Hooks.** PreToolUse, PostToolUse, UserPromptSubmit, Stop, SessionStart, SessionEnd, PreCompact, SubagentStart, SubagentStop, PermissionRequest, Notification. Project hooks run only after `/hooks approve`, and again after any change.
|
|
127
|
+
- **Spend limits.** `limits.maxCostUsdPerDay`, `maxTokensPerDay`, `maxCostUsdPerSession` stop a run before a call that could exceed them. `tug usage` and `/usage` show spend.
|
|
128
|
+
- **Secrets** are scrubbed from child processes and redacted from journals; secret files ask before being read.
|
|
129
|
+
|
|
130
|
+
### Agent core
|
|
131
|
+
- **Parallel and background subagents** (`task` with `run_in_background`), and **worktree-isolated** subagents (`isolation: "worktree"` + `worktree_merge`).
|
|
132
|
+
- **Tool search.** With many tools, only core tools are sent and the rest load on demand through `tool_search`.
|
|
133
|
+
- **Per-model overlays** (Qwen, gpt-oss, GLM, Kimi, DeepSeek, Llama, Mistral, Gemma) and cached endpoint capabilities.
|
|
134
|
+
- **Background jobs** (`agent.backgroundJobs`): `bash` with `run_in_background`, `monitor`, `job_output`, `job_kill`, `/jobs`.
|
|
135
|
+
- **Memory.** The `remember` tool, `/memory`, supersession of old facts, and optional auto-memory (`agent.autoMemory`).
|
|
136
|
+
- **Repo map** in the first prompt, and the `repo_map` tool.
|
|
137
|
+
- **Compaction** in the background, plus `/compact [focus]`.
|
|
138
|
+
- **Prompt-cache aware** (v1.1): cache hit rate in `/cost`, `/cache`, the VS Code meter and eval reports; llama.cpp `cache_prompt` + one slot per agent; `cache_break` events naming what changed the prefix; a byte-stable system prompt across prompts; idle-time compaction.
|
|
139
|
+
- **`/goal <condition> --check "<cmd>" --max-turns N`** keeps working until a check passes ("verified"). Without `--check` an **independent verifier** (read-only, sandboxed, network off, its input wrapped as untrusted, citations checked by code) decides, labelled "judged met (independent verifier)"; `--verify` adds it on top of a check; `tug goal "<condition>"` runs it headless. `/goal status | pause | resume | clear`.
|
|
140
|
+
- **Nested subagents and workflows** (v1.2 N18): subagents nest to `agent.maxDepth` (default 2), always narrower than their parent (tools, mode, roots, domains, model, budget; every clamp journaled), with taint flowing both ways. `workflow_run` / `tug workflow run <file>` fans one task out over many items (concurrency, total and per-item budgets admitted before every call, worktree isolation, retry-once, stall watchdog, structured output, reduce, resume); commands in a workflow run only after you approve the whole workflow once.
|
|
141
|
+
- **Agent teams** (v1.2 N34): `/team <goal>` or `tug team run <file>`: a lead plus members (default up to 4, max 8), each in its own worktree, with a shared task board (atomic claims across processes), messages delivered as untrusted data that carry taint, a team budget, leased claims, personas, advisory outcome documents, external agent CLIs as sandboxed members, board hosts (`tug team host`), A2A inbound under per-caller grants (`tug team a2a`), and live views in the CLI (`/team status`), VS Code (Agents view) and `tug serve` events.
|
|
142
|
+
- **Model routing** (`routing.planner`, `routing.summarizer`, `routing.explore`), with "$ / resolved" in eval reports.
|
|
143
|
+
- **`/context`** breakdown, and `@file` / `@folder/` mentions in the CLI.
|
|
144
|
+
- **Project rules** from `AGENTS.md`, `CLAUDE.md`, `.cursor/rules`, `.clinerules` and `GEMINI.md`; skills from `.tugline/skills`, `.claude/skills` and `.codex/skills`.
|
|
145
|
+
|
|
146
|
+
### Browser
|
|
147
|
+
- **Browser tools** (`browser.enabled: true`). `browser_*` tools work with text-only models: the page is an accessibility tree with refs, and every action returns a diff and is checked against an optional post-condition.
|
|
148
|
+
- **Cascade.** `browser_task` tries a plain fetch first, then a recorded recipe, the tree, and finally pixels.
|
|
149
|
+
- **Profiles.** Isolated, persistent, or attached to your own Chrome (with consent and a site allowlist).
|
|
150
|
+
- **Secrets.** `secret://name` refs in `browser_type`; values come from `~/.tugline/secrets.json` (0600), `TUG_SECRET_*` or the OS keychain, and never reach the model. Payments, 2FA and CAPTCHAs are handed to you.
|
|
151
|
+
- **Text-only pixels.** `perception.backend: "ocr"` (tesseract) or `"grounder"` (a UI-grounding VLM) lets text-only models click things drawn on a canvas.
|
|
152
|
+
- **Replay.** Runs are recorded under `.tugline/runs/<session>/`. `tug replay <run> --check | --heal | --export flow.spec.ts | --recipe name | --html`.
|
|
153
|
+
- **Kill switch.** `/browser stop`, `/browser resume`.
|
|
154
|
+
|
|
155
|
+
### Desktop
|
|
156
|
+
- **Desktop tools** (`desktop.enabled: true`). `desktop_*` tools drive real apps through the accessibility tree: cua-driver on macOS, Windows and Linux, with our own AT-SPI and UIA sidecars as fallbacks. Every action is re-scanned and verified, and asks first unless the app is in `desktop.autoApproveApps`.
|
|
157
|
+
- **Traps are diagnosed, not guessed.** An empty tree reports `permissions`, `not_activated` (fixed automatically), `qt_a11y_off`, `electron_opaque` (`desktop_electron` relaunches the app with a local CDP port, with consent) or `canvas` (OCR regions + `desktop_point`).
|
|
158
|
+
- **Kill switch.** `tug emergency-stop` from any terminal (or `touch ~/.tugline/STOP`), Ctrl+C twice, or `/desktop stop`. The agent never acts on its own terminal or editor.
|
|
159
|
+
- **Sandboxed desktop.** `tug desktop-sandbox up` starts a throwaway Linux desktop in Docker (noVNC on 127.0.0.1:6080); then set `desktop.backend: "sandbox"`.
|
|
160
|
+
- **Replay.** `tug desktop-replay .tugline/runs/<session>-desktop --check`.
|
|
161
|
+
|
|
162
|
+
### Platform
|
|
163
|
+
- **Editors via ACP.** `tug --acp` (or `tug acp`) speaks the Agent Client Protocol for Zed, JetBrains IDEs and Neovim. Approvals appear as the editor's permission prompts, and file reads and writes go through the editor's buffers. Configuration is [below](#editor-configuration-acp).
|
|
164
|
+
- **Server.** `tug serve` starts a JSON-RPC server (WebSocket on 127.0.0.1 with a token, or `--stdio`): sessions, streamed events, steer, abort, approvals, checkpoints, jobs.
|
|
165
|
+
- **SDK.** `createAgent`, `run`, `defineTool`, `defineSkill` from `tugline/sdk` (see `examples/sdk/basic.mts`), plus a stdlib-only Python client in `sdk/python/`.
|
|
166
|
+
- **MCP.** Tools, resources (`mcp_resource`), prompts as `/mcp:<server>:<prompt>`, elicitation forms, OAuth (`tug mcp login <server>`) and registry search (`tug mcp search <query>`).
|
|
167
|
+
- **Plugins.** `tug plugin install <path|git-url|name@marketplace>` adds skills, agents, commands, hooks and MCP servers; Claude Code plugins work too. Hooks and MCP servers run only after `tug plugin trust <name>`.
|
|
168
|
+
- **Remote agents.** `tug serve --remote` on a build box, then `tug remote run --server ws://… "<prompt>"`. The run happens in a server-side clone, and you apply the returned patch after review.
|
|
169
|
+
- **Output styles and status line.** `outputStyle: concise|explanatory|custom:<name>` and `/output-style`; `statusLine.command` gets the session as JSON and its output is shown above the prompt.
|
|
170
|
+
|
|
171
|
+
### Automation
|
|
172
|
+
- **Schedules and triggers.** `tug schedule add --cron "0 9 * * 1-5" --prompt "…"` (also `--watch <glob>`, `--webhook`, `--github pull_request.opened`), run by `tug daemon` or `tug schedule install-service`. Runs are headless: approvals are denied and recorded; with `--mode auto` the classifier may approve routine commands (anything else is denied and recorded), with `--mode yolo` commands run without approval. `tug schedule report` is the morning report.
|
|
173
|
+
- **Webhooks** are HMAC-verified and deduplicated; the daemon enforces rate limits and daily run and budget windows, and refuses its own events. `tug serve --with-daemon` serves them on the server port.
|
|
174
|
+
- **Channels.** Telegram, Slack and signed webhooks (`tug channels pair telegram`, then `/pair <code>` from your account). Unpaired senders get nothing, or one tool-less answer, and never reach tools.
|
|
175
|
+
- **PR review.** `tug review --base main [--format github]`, and the composite action `.github/actions/tugline-review`.
|
|
176
|
+
- **OpenTelemetry.** Set `OTEL_EXPORTER_OTLP_ENDPOINT` (or `telemetry.enabled`) for run, turn, llm.call and tool.call spans with GenAI attributes and cost. Content is excluded unless `telemetry.includeContent`.
|
|
177
|
+
|
|
178
|
+
### Documentation
|
|
179
|
+
- **Codebase wiki on your own model.** `tug wiki build|update|serve`: overview, architecture graph, a page per module and a glossary, written map-reduce style so 16–32K models cope. Every claim cites `path:lines@sha` and is checked against the code; invalid citations and Mermaid are dropped. `update` rewrites only pages whose sources changed. VS Code: **Open Wiki**.
|
|
180
|
+
- **Docs-as-code checks.** `tug docs check` (no model, no network) finds broken links and anchors, stale paths and symbols, CLI flags `--help` no longer lists, and snippets that don't parse; `.github/actions/tugline-docs-check` runs it in CI. `tug review --checks` runs `.tugline/checks/*.md` rules.
|
|
181
|
+
- **Doc sync.** `tug docs sync --pr` updates the docs a change made stale, in a worktree, with writes limited to doc paths by the permission engine.
|
|
182
|
+
- **Ask the codebase.** `tug ask`, `/ask` and the opt-in `ask_codebase` tool answer with validated `file:line` citations, or say "not found".
|
|
183
|
+
- **Release notes and docstrings.** `tug changelog --since <tag>` (Keep-a-Changelog or GitHub, breaking changes from the diff, every bullet linked to its commits); `/doc` adds native-style docstrings as a reviewed edit.
|
|
184
|
+
|
|
185
|
+
### Evaluation
|
|
186
|
+
- **`tug eval <suite>`** with raw run records and a rescorable scorer (`tug rescore`): outcome, integrity, verification and cost reported separately. Suites: `evals/coding-basics`, `evals/editing` (31 tasks in 5 languages), `evals/browser`, `evals/desktop`.
|
|
187
|
+
- **Model arena.** `tug arena --models a,b,c [--agents cline] "<task>" --check "<cmd>" --judge <profile>` runs the contestants in parallel worktrees with live side-by-side output (each with its own budget, sandbox and protected paths), ranks them (harness check first, planned in your tree so a contestant cannot rewrite it; judge second), and lets you pick the winner (`--pick A|auto`, or `tug arena pick <run> <label>` later): it lands through the board's checked merge. Results feed `tug bench --compare`. `--suite evals/x` uses a suite.
|
|
188
|
+
- **Benchmarks.** `tug bench terminal-bench|swe-bench --subset N --repeats 3 --arm all` (includes the bash-only baseline).
|
|
189
|
+
- **Replay CI.** `tug replay <run> --check` in CI; sample workflow `.github/workflows/tugline-replay.yml`.
|
|
190
|
+
- **Local model comparison.** `scripts/test-ollama.sh` runs every suite, the benchmark samples and a vision check against each Ollama model, and reports $ and tokens per resolved task.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Editor configuration (ACP)
|
|
195
|
+
|
|
196
|
+
The model endpoint comes from `~/.tugline/config.json` like any other `tug` run, so the `env` entries below are optional. Approval prompts appear as the editor's permission dialogs. Pick a mode (ask, accept edits, plan, auto, yolo) in the editor's mode picker.
|
|
197
|
+
|
|
198
|
+
**Zed** (`~/.config/zed/settings.json`):
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"agent_servers": {
|
|
202
|
+
"Tugline": {
|
|
203
|
+
"command": "tug",
|
|
204
|
+
"args": ["--acp"],
|
|
205
|
+
"env": { "TUG_BASE_URL": "http://localhost:11434/v1", "TUG_MODEL": "qwen3-coder:30b" }
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
Open the Agent panel, click "+", and pick **Tugline**. If `tug` is not on Zed's PATH, use the absolute path, e.g. `"command": "/usr/local/bin/oh"`.
|
|
211
|
+
|
|
212
|
+
**JetBrains IDEs** (AI Assistant → Agents → "Add custom agent", or `~/.jetbrains/acp.json`):
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"agent_servers": {
|
|
216
|
+
"Tugline": { "command": "tug", "args": ["--acp"], "env": { "TUG_BASE_URL": "http://localhost:11434/v1", "TUG_MODEL": "qwen3-coder:30b" } }
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
Then select **Tugline** in the AI Chat agent picker.
|
|
221
|
+
|
|
222
|
+
**Neovim** with CodeCompanion.nvim:
|
|
223
|
+
```lua
|
|
224
|
+
require("codecompanion").setup({
|
|
225
|
+
adapters = { acp = { tugline = function()
|
|
226
|
+
return require("codecompanion.adapters").extend("claude_code", {
|
|
227
|
+
name = "tugline",
|
|
228
|
+
commands = { default = { "tug", "--acp" } },
|
|
229
|
+
env = { TUG_BASE_URL = "http://localhost:11434/v1", TUG_MODEL = "qwen3-coder:30b" },
|
|
230
|
+
})
|
|
231
|
+
end } },
|
|
232
|
+
strategies = { chat = { adapter = "tugline" } },
|
|
233
|
+
})
|
|
234
|
+
```
|
|
235
|
+
With avante.nvim: `acp_providers = { tugline = { command = "tug", args = { "--acp" }, env = { TUG_BASE_URL = "…", TUG_MODEL = "…" } } }` and `provider = "tugline"`.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Configuration
|
|
240
|
+
|
|
241
|
+
Files, later wins: `~/.tugline/config.json` (user) → `.tugline/config.json` (project, commit it) → `.tugline/config.local.json` (project secrets, git-ignored) → `.mcp.json` (MCP servers) → environment → CLI flags or VS Code settings. A managed policy file overrides all of them. Every key and its default is in the [user guide](docs/USER_GUIDE.md#configuration-reference).
|
|
242
|
+
|
|
243
|
+
```jsonc
|
|
244
|
+
{
|
|
245
|
+
"profiles": { "default": { "baseUrl": "https://llm.mycompany.com/v1", "apiKey": "env:COMPANY_LLM_KEY", "model": "qwen3-coder-30b", "contextWindow": 65536 } },
|
|
246
|
+
"permissions": { "protectedPaths": ["tests/**", ".github/**"], "allow": ["bash(npm test*)"] },
|
|
247
|
+
"shell": { "sandbox": "auto" },
|
|
248
|
+
"mcpServers": { "playwright": { "command": "npx", "args": ["@playwright/mcp@latest", "--headless"] } }
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Skills
|
|
253
|
+
|
|
254
|
+
Put a folder with a `SKILL.md` in `.tugline/skills/` (project) or `~/.tugline/skills/` (personal):
|
|
255
|
+
```markdown
|
|
256
|
+
---
|
|
257
|
+
name: api-conventions
|
|
258
|
+
description: Use when adding or changing REST endpoints in this service.
|
|
259
|
+
---
|
|
260
|
+
1. Every endpoint has an OpenAPI annotation …
|
|
261
|
+
```
|
|
262
|
+
The agent sees the name and description and loads the body when relevant. Ask it to *"create a skill for …"* and it uses the bundled `skill-creator` skill. A skill can change *how* the agent works but can never grant permissions.
|
|
263
|
+
|
|
264
|
+
## Development
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
npm test # all unit, loop, security and integration tests (mock LLM, no network)
|
|
268
|
+
npx tsc --noEmit -p . && (cd vscode && ../node_modules/.bin/tsc -p tsconfig.json)
|
|
269
|
+
cd vscode && npm run build && VSCODE_VERSION=1.143.1 xvfb-run -a node test/runTest.mjs # VS Code E2E
|
|
270
|
+
```
|
|
271
|
+
See [docs/TESTING.md](docs/TESTING.md) for live-model runs and the device checks for your Mac.
|
|
272
|
+
|
|
273
|
+
Layout: `src/core` (library: LLM client, agent loop, tools, permissions, edit engine, checkpoints, sandbox, automation, MCP, plugins, schedule, eval), `src/cli`, `src/acp`, `src/server`, `src/sdk`, `src/channels`, `vscode/` (extension), `skills/` and `agents/` (bundled), `evals/` (suites), `scripts/`, `test/`.
|
|
274
|
+
|
|
275
|
+
MIT License.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reviewer
|
|
3
|
+
description: Read-only code reviewer. Give it the files or diff to review; it returns prioritized, concrete findings.
|
|
4
|
+
tools: read_file, grep, glob, list_dir, bash, load_skill
|
|
5
|
+
---
|
|
6
|
+
You are a meticulous senior code reviewer working read-only. Load the code-review skill and follow it.
|
|
7
|
+
You may run read-only commands (git diff, git log, tests) with bash, but you must not modify any file.
|
|
8
|
+
Return findings ordered by severity with file:line references, or say clearly that you found nothing significant.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as acp from '@agentclientprotocol/sdk';
|
|
2
|
+
import { type AgentOptions } from '../core/agent/agent.js';
|
|
3
|
+
import { type HarnessConfig, type McpServerConfig } from '../core/config.js';
|
|
4
|
+
import type { ToolKind } from '../core/types.js';
|
|
5
|
+
export declare const ACP_AGENT_VERSION = "1.0.0";
|
|
6
|
+
export interface AcpOptions {
|
|
7
|
+
configFor?: (cwd: string, overrides: Record<string, unknown>) => HarnessConfig | Promise<HarnessConfig>;
|
|
8
|
+
agentOptions?: Partial<AgentOptions>;
|
|
9
|
+
/** Where the ACP session-id aliases live (default: the session config's homeDir). */
|
|
10
|
+
log?: (s: string) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function acpToolKind(tool: string, kind: ToolKind): acp.ToolKind;
|
|
13
|
+
/** ACP mcpServers (editor config) → our config shape. ACP-transport servers are not supported. */
|
|
14
|
+
export declare function mcpFromAcp(list: acp.McpServer[] | undefined): Record<string, McpServerConfig>;
|
|
15
|
+
/** Prompt content blocks → one prompt string (embedded resources inline as files). */
|
|
16
|
+
export declare function promptText(blocks: acp.ContentBlock[]): string;
|
|
17
|
+
export declare class OhAcpAgent implements acp.Agent {
|
|
18
|
+
private readonly conn;
|
|
19
|
+
private readonly opts;
|
|
20
|
+
private sessions;
|
|
21
|
+
private clientCaps;
|
|
22
|
+
constructor(conn: acp.AgentSideConnection, opts?: AcpOptions);
|
|
23
|
+
initialize(params: acp.InitializeRequest): Promise<acp.InitializeResponse>;
|
|
24
|
+
authenticate(): Promise<acp.AuthenticateResponse>;
|
|
25
|
+
private modes;
|
|
26
|
+
private makeSession;
|
|
27
|
+
newSession(params: acp.NewSessionRequest): Promise<acp.NewSessionResponse>;
|
|
28
|
+
loadSession(params: acp.LoadSessionRequest): Promise<acp.LoadSessionResponse>;
|
|
29
|
+
/** Stream a restored conversation back to the client (session/load contract). */
|
|
30
|
+
private replay;
|
|
31
|
+
setSessionMode(params: acp.SetSessionModeRequest): Promise<acp.SetSessionModeResponse>;
|
|
32
|
+
prompt(params: acp.PromptRequest): Promise<acp.PromptResponse>;
|
|
33
|
+
cancel(params: acp.CancelNotification): Promise<void>;
|
|
34
|
+
private get;
|
|
35
|
+
private update;
|
|
36
|
+
private locations;
|
|
37
|
+
private kindOf;
|
|
38
|
+
private onEvent;
|
|
39
|
+
/** Permission-engine "ask" → session/request_permission. Anything but an explicit allow is a denial. */
|
|
40
|
+
private requestPermission;
|
|
41
|
+
private approvePlan;
|
|
42
|
+
dispose(): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
/** Run an ACP agent over the given byte streams (stdio by default) until the client disconnects. */
|
|
45
|
+
export declare function runAcp(opts?: AcpOptions & {
|
|
46
|
+
input?: NodeJS.ReadableStream;
|
|
47
|
+
output?: NodeJS.WritableStream;
|
|
48
|
+
}): Promise<void>;
|