synorch 0.2.0 → 0.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -1
- package/README.md +338 -28
- package/dist/application/doctor-service.d.ts +16 -0
- package/dist/application/doctor-service.d.ts.map +1 -1
- package/dist/application/doctor-service.js +230 -32
- package/dist/application/doctor-service.js.map +1 -1
- package/dist/application/generated-skill-doctor.d.ts +9 -0
- package/dist/application/generated-skill-doctor.d.ts.map +1 -0
- package/dist/application/generated-skill-doctor.js +433 -0
- package/dist/application/generated-skill-doctor.js.map +1 -0
- package/dist/application/project-discovery.d.ts +26 -1
- package/dist/application/project-discovery.d.ts.map +1 -1
- package/dist/application/project-discovery.js +99 -6
- package/dist/application/project-discovery.js.map +1 -1
- package/dist/application/safe-path.d.ts +19 -0
- package/dist/application/safe-path.d.ts.map +1 -0
- package/dist/application/safe-path.js +35 -0
- package/dist/application/safe-path.js.map +1 -0
- package/dist/application/size-ceiling.d.ts +15 -0
- package/dist/application/size-ceiling.d.ts.map +1 -0
- package/dist/application/size-ceiling.js +32 -0
- package/dist/application/size-ceiling.js.map +1 -0
- package/dist/application/structure-service.d.ts.map +1 -1
- package/dist/application/structure-service.js +10 -1
- package/dist/application/structure-service.js.map +1 -1
- package/dist/build-info.json +4 -0
- package/dist/cli.js +135 -18
- package/dist/cli.js.map +1 -1
- package/dist/domain/canonical-contracts.d.ts +69 -0
- package/dist/domain/canonical-contracts.d.ts.map +1 -0
- package/dist/domain/canonical-contracts.js +92 -0
- package/dist/domain/canonical-contracts.js.map +1 -0
- package/dist/domain/generated-skill.d.ts +55 -0
- package/dist/domain/generated-skill.d.ts.map +1 -0
- package/dist/domain/generated-skill.js +90 -0
- package/dist/domain/generated-skill.js.map +1 -0
- package/dist/domain/generation.d.ts +15 -2
- package/dist/domain/generation.d.ts.map +1 -1
- package/dist/domain/observation-ledger.d.ts +118 -0
- package/dist/domain/observation-ledger.d.ts.map +1 -0
- package/dist/domain/observation-ledger.js +183 -0
- package/dist/domain/observation-ledger.js.map +1 -0
- package/dist/domain/product.d.ts +1 -1
- package/dist/domain/product.d.ts.map +1 -1
- package/dist/domain/product.js +1 -1
- package/dist/domain/product.js.map +1 -1
- package/dist/domain/relative-path.d.ts +21 -0
- package/dist/domain/relative-path.d.ts.map +1 -0
- package/dist/domain/relative-path.js +43 -0
- package/dist/domain/relative-path.js.map +1 -0
- package/dist/domain/skill-packs.d.ts.map +1 -1
- package/dist/domain/skill-packs.js +1 -0
- package/dist/domain/skill-packs.js.map +1 -1
- package/dist/domain/suggest.d.ts +5 -0
- package/dist/domain/suggest.d.ts.map +1 -0
- package/dist/domain/suggest.js +32 -0
- package/dist/domain/suggest.js.map +1 -0
- package/dist/domain/zod-issues.d.ts +21 -0
- package/dist/domain/zod-issues.d.ts.map +1 -0
- package/dist/domain/zod-issues.js +27 -0
- package/dist/domain/zod-issues.js.map +1 -0
- package/dist/harness/auth/api-key.d.ts +13 -0
- package/dist/harness/auth/api-key.d.ts.map +1 -0
- package/dist/harness/auth/api-key.js +87 -0
- package/dist/harness/auth/api-key.js.map +1 -0
- package/dist/harness/auth/claude-bridge.d.ts +22 -0
- package/dist/harness/auth/claude-bridge.d.ts.map +1 -0
- package/dist/harness/auth/claude-bridge.js +92 -0
- package/dist/harness/auth/claude-bridge.js.map +1 -0
- package/dist/harness/auth/command.d.ts +17 -0
- package/dist/harness/auth/command.d.ts.map +1 -0
- package/dist/harness/auth/command.js +223 -0
- package/dist/harness/auth/command.js.map +1 -0
- package/dist/harness/auth/credential-store.d.ts +30 -0
- package/dist/harness/auth/credential-store.d.ts.map +1 -0
- package/dist/harness/auth/credential-store.js +270 -0
- package/dist/harness/auth/credential-store.js.map +1 -0
- package/dist/harness/auth/index.d.ts +13 -0
- package/dist/harness/auth/index.d.ts.map +1 -0
- package/dist/harness/auth/index.js +10 -0
- package/dist/harness/auth/index.js.map +1 -0
- package/dist/harness/auth/json-file.d.ts +8 -0
- package/dist/harness/auth/json-file.d.ts.map +1 -0
- package/dist/harness/auth/json-file.js +57 -0
- package/dist/harness/auth/json-file.js.map +1 -0
- package/dist/harness/auth/jwt.d.ts +11 -0
- package/dist/harness/auth/jwt.d.ts.map +1 -0
- package/dist/harness/auth/jwt.js +37 -0
- package/dist/harness/auth/jwt.js.map +1 -0
- package/dist/harness/auth/keychain.d.ts +39 -0
- package/dist/harness/auth/keychain.d.ts.map +1 -0
- package/dist/harness/auth/keychain.js +191 -0
- package/dist/harness/auth/keychain.js.map +1 -0
- package/dist/harness/auth/locks.d.ts +19 -0
- package/dist/harness/auth/locks.d.ts.map +1 -0
- package/dist/harness/auth/locks.js +102 -0
- package/dist/harness/auth/locks.js.map +1 -0
- package/dist/harness/auth/notices.d.ts +6 -0
- package/dist/harness/auth/notices.d.ts.map +1 -0
- package/dist/harness/auth/notices.js +29 -0
- package/dist/harness/auth/notices.js.map +1 -0
- package/dist/harness/auth/openai-chatgpt.d.ts +32 -0
- package/dist/harness/auth/openai-chatgpt.d.ts.map +1 -0
- package/dist/harness/auth/openai-chatgpt.js +446 -0
- package/dist/harness/auth/openai-chatgpt.js.map +1 -0
- package/dist/harness/auth/profile-state.d.ts +25 -0
- package/dist/harness/auth/profile-state.d.ts.map +1 -0
- package/dist/harness/auth/profile-state.js +77 -0
- package/dist/harness/auth/profile-state.js.map +1 -0
- package/dist/harness/auth/providers.d.ts +27 -0
- package/dist/harness/auth/providers.d.ts.map +1 -0
- package/dist/harness/auth/providers.js +66 -0
- package/dist/harness/auth/providers.js.map +1 -0
- package/dist/harness/auth/resolved-credential.d.ts +11 -0
- package/dist/harness/auth/resolved-credential.d.ts.map +1 -0
- package/dist/harness/auth/resolved-credential.js +35 -0
- package/dist/harness/auth/resolved-credential.js.map +1 -0
- package/dist/harness/cli/appearance.d.ts +28 -0
- package/dist/harness/cli/appearance.d.ts.map +1 -0
- package/dist/harness/cli/appearance.js +123 -0
- package/dist/harness/cli/appearance.js.map +1 -0
- package/dist/harness/cli/args.d.ts +429 -0
- package/dist/harness/cli/args.d.ts.map +1 -0
- package/dist/harness/cli/args.js +372 -0
- package/dist/harness/cli/args.js.map +1 -0
- package/dist/harness/cli/attachments.d.ts +44 -0
- package/dist/harness/cli/attachments.d.ts.map +1 -0
- package/dist/harness/cli/attachments.js +176 -0
- package/dist/harness/cli/attachments.js.map +1 -0
- package/dist/harness/cli/canonical.d.ts +64 -0
- package/dist/harness/cli/canonical.d.ts.map +1 -0
- package/dist/harness/cli/canonical.js +455 -0
- package/dist/harness/cli/canonical.js.map +1 -0
- package/dist/harness/cli/claude-native-approvals.d.ts +45 -0
- package/dist/harness/cli/claude-native-approvals.d.ts.map +1 -0
- package/dist/harness/cli/claude-native-approvals.js +183 -0
- package/dist/harness/cli/claude-native-approvals.js.map +1 -0
- package/dist/harness/cli/command-grants.d.ts +23 -0
- package/dist/harness/cli/command-grants.d.ts.map +1 -0
- package/dist/harness/cli/command-grants.js +76 -0
- package/dist/harness/cli/command-grants.js.map +1 -0
- package/dist/harness/cli/config-command.d.ts +98 -0
- package/dist/harness/cli/config-command.d.ts.map +1 -0
- package/dist/harness/cli/config-command.js +561 -0
- package/dist/harness/cli/config-command.js.map +1 -0
- package/dist/harness/cli/config.d.ts +429 -0
- package/dist/harness/cli/config.d.ts.map +1 -0
- package/dist/harness/cli/config.js +504 -0
- package/dist/harness/cli/config.js.map +1 -0
- package/dist/harness/cli/conversation.d.ts +35 -0
- package/dist/harness/cli/conversation.d.ts.map +1 -0
- package/dist/harness/cli/conversation.js +3755 -0
- package/dist/harness/cli/conversation.js.map +1 -0
- package/dist/harness/cli/doctor.d.ts +32 -0
- package/dist/harness/cli/doctor.d.ts.map +1 -0
- package/dist/harness/cli/doctor.js +329 -0
- package/dist/harness/cli/doctor.js.map +1 -0
- package/dist/harness/cli/effort-command.d.ts +41 -0
- package/dist/harness/cli/effort-command.d.ts.map +1 -0
- package/dist/harness/cli/effort-command.js +133 -0
- package/dist/harness/cli/effort-command.js.map +1 -0
- package/dist/harness/cli/extensions/agents.d.ts +40 -0
- package/dist/harness/cli/extensions/agents.d.ts.map +1 -0
- package/dist/harness/cli/extensions/agents.js +66 -0
- package/dist/harness/cli/extensions/agents.js.map +1 -0
- package/dist/harness/cli/extensions/catalog.d.ts +134 -0
- package/dist/harness/cli/extensions/catalog.d.ts.map +1 -0
- package/dist/harness/cli/extensions/catalog.js +213 -0
- package/dist/harness/cli/extensions/catalog.js.map +1 -0
- package/dist/harness/cli/extensions/claude-home.d.ts +33 -0
- package/dist/harness/cli/extensions/claude-home.d.ts.map +1 -0
- package/dist/harness/cli/extensions/claude-home.js +78 -0
- package/dist/harness/cli/extensions/claude-home.js.map +1 -0
- package/dist/harness/cli/extensions/controller.d.ts +51 -0
- package/dist/harness/cli/extensions/controller.d.ts.map +1 -0
- package/dist/harness/cli/extensions/controller.js +67 -0
- package/dist/harness/cli/extensions/controller.js.map +1 -0
- package/dist/harness/cli/extensions/hooks.d.ts +164 -0
- package/dist/harness/cli/extensions/hooks.d.ts.map +1 -0
- package/dist/harness/cli/extensions/hooks.js +442 -0
- package/dist/harness/cli/extensions/hooks.js.map +1 -0
- package/dist/harness/cli/extensions/index.d.ts +10 -0
- package/dist/harness/cli/extensions/index.d.ts.map +1 -0
- package/dist/harness/cli/extensions/index.js +10 -0
- package/dist/harness/cli/extensions/index.js.map +1 -0
- package/dist/harness/cli/extensions/markdown.d.ts +46 -0
- package/dist/harness/cli/extensions/markdown.d.ts.map +1 -0
- package/dist/harness/cli/extensions/markdown.js +139 -0
- package/dist/harness/cli/extensions/markdown.js.map +1 -0
- package/dist/harness/cli/extensions/plugins.d.ts +160 -0
- package/dist/harness/cli/extensions/plugins.d.ts.map +1 -0
- package/dist/harness/cli/extensions/plugins.js +645 -0
- package/dist/harness/cli/extensions/plugins.js.map +1 -0
- package/dist/harness/cli/extensions/tool-hooks.d.ts +28 -0
- package/dist/harness/cli/extensions/tool-hooks.d.ts.map +1 -0
- package/dist/harness/cli/extensions/tool-hooks.js +63 -0
- package/dist/harness/cli/extensions/tool-hooks.js.map +1 -0
- package/dist/harness/cli/extensions-command.d.ts +64 -0
- package/dist/harness/cli/extensions-command.d.ts.map +1 -0
- package/dist/harness/cli/extensions-command.js +639 -0
- package/dist/harness/cli/extensions-command.js.map +1 -0
- package/dist/harness/cli/help.d.ts +9 -0
- package/dist/harness/cli/help.d.ts.map +1 -0
- package/dist/harness/cli/help.js +191 -0
- package/dist/harness/cli/help.js.map +1 -0
- package/dist/harness/cli/index.d.ts +52 -0
- package/dist/harness/cli/index.d.ts.map +1 -0
- package/dist/harness/cli/index.js +297 -0
- package/dist/harness/cli/index.js.map +1 -0
- package/dist/harness/cli/inspect.d.ts +40 -0
- package/dist/harness/cli/inspect.d.ts.map +1 -0
- package/dist/harness/cli/inspect.js +185 -0
- package/dist/harness/cli/inspect.js.map +1 -0
- package/dist/harness/cli/mcp-command.d.ts +61 -0
- package/dist/harness/cli/mcp-command.d.ts.map +1 -0
- package/dist/harness/cli/mcp-command.js +519 -0
- package/dist/harness/cli/mcp-command.js.map +1 -0
- package/dist/harness/cli/memory-desk.d.ts +28 -0
- package/dist/harness/cli/memory-desk.d.ts.map +1 -0
- package/dist/harness/cli/memory-desk.js +275 -0
- package/dist/harness/cli/memory-desk.js.map +1 -0
- package/dist/harness/cli/model-picker.d.ts +44 -0
- package/dist/harness/cli/model-picker.d.ts.map +1 -0
- package/dist/harness/cli/model-picker.js +267 -0
- package/dist/harness/cli/model-picker.js.map +1 -0
- package/dist/harness/cli/onboarding.d.ts +29 -0
- package/dist/harness/cli/onboarding.d.ts.map +1 -0
- package/dist/harness/cli/onboarding.js +101 -0
- package/dist/harness/cli/onboarding.js.map +1 -0
- package/dist/harness/cli/orchestrate-tool.d.ts +60 -0
- package/dist/harness/cli/orchestrate-tool.d.ts.map +1 -0
- package/dist/harness/cli/orchestrate-tool.js +167 -0
- package/dist/harness/cli/orchestrate-tool.js.map +1 -0
- package/dist/harness/cli/orchestration-view.d.ts +57 -0
- package/dist/harness/cli/orchestration-view.d.ts.map +1 -0
- package/dist/harness/cli/orchestration-view.js +371 -0
- package/dist/harness/cli/orchestration-view.js.map +1 -0
- package/dist/harness/cli/outcome.d.ts +11 -0
- package/dist/harness/cli/outcome.d.ts.map +1 -0
- package/dist/harness/cli/outcome.js +70 -0
- package/dist/harness/cli/outcome.js.map +1 -0
- package/dist/harness/cli/panels/common.d.ts +30 -0
- package/dist/harness/cli/panels/common.d.ts.map +1 -0
- package/dist/harness/cli/panels/common.js +143 -0
- package/dist/harness/cli/panels/common.js.map +1 -0
- package/dist/harness/cli/panels/mcp.d.ts +18 -0
- package/dist/harness/cli/panels/mcp.d.ts.map +1 -0
- package/dist/harness/cli/panels/mcp.js +132 -0
- package/dist/harness/cli/panels/mcp.js.map +1 -0
- package/dist/harness/cli/panels/plugins.d.ts +8 -0
- package/dist/harness/cli/panels/plugins.d.ts.map +1 -0
- package/dist/harness/cli/panels/plugins.js +114 -0
- package/dist/harness/cli/panels/plugins.js.map +1 -0
- package/dist/harness/cli/panels/session.d.ts +54 -0
- package/dist/harness/cli/panels/session.d.ts.map +1 -0
- package/dist/harness/cli/panels/session.js +221 -0
- package/dist/harness/cli/panels/session.js.map +1 -0
- package/dist/harness/cli/panels/skills.d.ts +16 -0
- package/dist/harness/cli/panels/skills.d.ts.map +1 -0
- package/dist/harness/cli/panels/skills.js +146 -0
- package/dist/harness/cli/panels/skills.js.map +1 -0
- package/dist/harness/cli/project-profile.d.ts +87 -0
- package/dist/harness/cli/project-profile.d.ts.map +1 -0
- package/dist/harness/cli/project-profile.js +709 -0
- package/dist/harness/cli/project-profile.js.map +1 -0
- package/dist/harness/cli/project-scope.d.ts +2 -0
- package/dist/harness/cli/project-scope.d.ts.map +1 -0
- package/dist/harness/cli/project-scope.js +55 -0
- package/dist/harness/cli/project-scope.js.map +1 -0
- package/dist/harness/cli/renderers.d.ts +75 -0
- package/dist/harness/cli/renderers.d.ts.map +1 -0
- package/dist/harness/cli/renderers.js +162 -0
- package/dist/harness/cli/renderers.js.map +1 -0
- package/dist/harness/cli/rewind.d.ts +54 -0
- package/dist/harness/cli/rewind.d.ts.map +1 -0
- package/dist/harness/cli/rewind.js +80 -0
- package/dist/harness/cli/rewind.js.map +1 -0
- package/dist/harness/cli/role-policy.d.ts +8 -0
- package/dist/harness/cli/role-policy.d.ts.map +1 -0
- package/dist/harness/cli/role-policy.js +53 -0
- package/dist/harness/cli/role-policy.js.map +1 -0
- package/dist/harness/cli/run-summary.d.ts +16 -0
- package/dist/harness/cli/run-summary.d.ts.map +1 -0
- package/dist/harness/cli/run-summary.js +105 -0
- package/dist/harness/cli/run-summary.js.map +1 -0
- package/dist/harness/cli/runtime.d.ts +182 -0
- package/dist/harness/cli/runtime.d.ts.map +1 -0
- package/dist/harness/cli/runtime.js +999 -0
- package/dist/harness/cli/runtime.js.map +1 -0
- package/dist/harness/cli/scripted-script.d.ts +50 -0
- package/dist/harness/cli/scripted-script.d.ts.map +1 -0
- package/dist/harness/cli/scripted-script.js +110 -0
- package/dist/harness/cli/scripted-script.js.map +1 -0
- package/dist/harness/cli/session-git.d.ts +76 -0
- package/dist/harness/cli/session-git.d.ts.map +1 -0
- package/dist/harness/cli/session-git.js +146 -0
- package/dist/harness/cli/session-git.js.map +1 -0
- package/dist/harness/cli/session.d.ts +22 -0
- package/dist/harness/cli/session.d.ts.map +1 -0
- package/dist/harness/cli/session.js +203 -0
- package/dist/harness/cli/session.js.map +1 -0
- package/dist/harness/cli/slash-commands.d.ts +85 -0
- package/dist/harness/cli/slash-commands.d.ts.map +1 -0
- package/dist/harness/cli/slash-commands.js +114 -0
- package/dist/harness/cli/slash-commands.js.map +1 -0
- package/dist/harness/cli/startup-notices.d.ts +32 -0
- package/dist/harness/cli/startup-notices.d.ts.map +1 -0
- package/dist/harness/cli/startup-notices.js +93 -0
- package/dist/harness/cli/startup-notices.js.map +1 -0
- package/dist/harness/cli/terminal.d.ts +32 -0
- package/dist/harness/cli/terminal.d.ts.map +1 -0
- package/dist/harness/cli/terminal.js +21 -0
- package/dist/harness/cli/terminal.js.map +1 -0
- package/dist/harness/cli/transparency.d.ts +39 -0
- package/dist/harness/cli/transparency.d.ts.map +1 -0
- package/dist/harness/cli/transparency.js +491 -0
- package/dist/harness/cli/transparency.js.map +1 -0
- package/dist/harness/cli/trust.d.ts +40 -0
- package/dist/harness/cli/trust.d.ts.map +1 -0
- package/dist/harness/cli/trust.js +133 -0
- package/dist/harness/cli/trust.js.map +1 -0
- package/dist/harness/cli/usage-stats.d.ts +57 -0
- package/dist/harness/cli/usage-stats.d.ts.map +1 -0
- package/dist/harness/cli/usage-stats.js +341 -0
- package/dist/harness/cli/usage-stats.js.map +1 -0
- package/dist/harness/context/compaction.d.ts +69 -0
- package/dist/harness/context/compaction.d.ts.map +1 -0
- package/dist/harness/context/compaction.js +149 -0
- package/dist/harness/context/compaction.js.map +1 -0
- package/dist/harness/context/context-builder.d.ts +76 -0
- package/dist/harness/context/context-builder.d.ts.map +1 -0
- package/dist/harness/context/context-builder.js +367 -0
- package/dist/harness/context/context-builder.js.map +1 -0
- package/dist/harness/context/history.d.ts +31 -0
- package/dist/harness/context/history.d.ts.map +1 -0
- package/dist/harness/context/history.js +105 -0
- package/dist/harness/context/history.js.map +1 -0
- package/dist/harness/context/index.d.ts +11 -0
- package/dist/harness/context/index.d.ts.map +1 -0
- package/dist/harness/context/index.js +9 -0
- package/dist/harness/context/index.js.map +1 -0
- package/dist/harness/context/instructions.d.ts +30 -0
- package/dist/harness/context/instructions.d.ts.map +1 -0
- package/dist/harness/context/instructions.js +82 -0
- package/dist/harness/context/instructions.js.map +1 -0
- package/dist/harness/context/model-view.d.ts +46 -0
- package/dist/harness/context/model-view.d.ts.map +1 -0
- package/dist/harness/context/model-view.js +136 -0
- package/dist/harness/context/model-view.js.map +1 -0
- package/dist/harness/context/scope.d.ts +9 -0
- package/dist/harness/context/scope.d.ts.map +1 -0
- package/dist/harness/context/scope.js +50 -0
- package/dist/harness/context/scope.js.map +1 -0
- package/dist/harness/context/skills.d.ts +75 -0
- package/dist/harness/context/skills.d.ts.map +1 -0
- package/dist/harness/context/skills.js +109 -0
- package/dist/harness/context/skills.js.map +1 -0
- package/dist/harness/context/tokens.d.ts +10 -0
- package/dist/harness/context/tokens.d.ts.map +1 -0
- package/dist/harness/context/tokens.js +39 -0
- package/dist/harness/context/tokens.js.map +1 -0
- package/dist/harness/contracts/auth.d.ts +214 -0
- package/dist/harness/contracts/auth.d.ts.map +1 -0
- package/dist/harness/contracts/auth.js +120 -0
- package/dist/harness/contracts/auth.js.map +1 -0
- package/dist/harness/contracts/choice.d.ts +115 -0
- package/dist/harness/contracts/choice.d.ts.map +1 -0
- package/dist/harness/contracts/choice.js +115 -0
- package/dist/harness/contracts/choice.js.map +1 -0
- package/dist/harness/contracts/common.d.ts +119 -0
- package/dist/harness/contracts/common.d.ts.map +1 -0
- package/dist/harness/contracts/common.js +66 -0
- package/dist/harness/contracts/common.js.map +1 -0
- package/dist/harness/contracts/digest.d.ts +59 -0
- package/dist/harness/contracts/digest.d.ts.map +1 -0
- package/dist/harness/contracts/digest.js +88 -0
- package/dist/harness/contracts/digest.js.map +1 -0
- package/dist/harness/contracts/errors.d.ts +70 -0
- package/dist/harness/contracts/errors.d.ts.map +1 -0
- package/dist/harness/contracts/errors.js +87 -0
- package/dist/harness/contracts/errors.js.map +1 -0
- package/dist/harness/contracts/events.d.ts +3094 -0
- package/dist/harness/contracts/events.d.ts.map +1 -0
- package/dist/harness/contracts/events.js +426 -0
- package/dist/harness/contracts/events.js.map +1 -0
- package/dist/harness/contracts/evidence.d.ts +286 -0
- package/dist/harness/contracts/evidence.d.ts.map +1 -0
- package/dist/harness/contracts/evidence.js +234 -0
- package/dist/harness/contracts/evidence.js.map +1 -0
- package/dist/harness/contracts/ids.d.ts +77 -0
- package/dist/harness/contracts/ids.d.ts.map +1 -0
- package/dist/harness/contracts/ids.js +126 -0
- package/dist/harness/contracts/ids.js.map +1 -0
- package/dist/harness/contracts/index.d.ts +23 -0
- package/dist/harness/contracts/index.d.ts.map +1 -0
- package/dist/harness/contracts/index.js +23 -0
- package/dist/harness/contracts/index.js.map +1 -0
- package/dist/harness/contracts/jsonl.d.ts +3386 -0
- package/dist/harness/contracts/jsonl.d.ts.map +1 -0
- package/dist/harness/contracts/jsonl.js +87 -0
- package/dist/harness/contracts/jsonl.js.map +1 -0
- package/dist/harness/contracts/memory.d.ts +271 -0
- package/dist/harness/contracts/memory.d.ts.map +1 -0
- package/dist/harness/contracts/memory.js +152 -0
- package/dist/harness/contracts/memory.js.map +1 -0
- package/dist/harness/contracts/model.d.ts +1201 -0
- package/dist/harness/contracts/model.d.ts.map +1 -0
- package/dist/harness/contracts/model.js +386 -0
- package/dist/harness/contracts/model.js.map +1 -0
- package/dist/harness/contracts/packets.d.ts +945 -0
- package/dist/harness/contracts/packets.d.ts.map +1 -0
- package/dist/harness/contracts/packets.js +535 -0
- package/dist/harness/contracts/packets.js.map +1 -0
- package/dist/harness/contracts/panel.d.ts +140 -0
- package/dist/harness/contracts/panel.d.ts.map +1 -0
- package/dist/harness/contracts/panel.js +19 -0
- package/dist/harness/contracts/panel.js.map +1 -0
- package/dist/harness/contracts/paths.d.ts +58 -0
- package/dist/harness/contracts/paths.d.ts.map +1 -0
- package/dist/harness/contracts/paths.js +204 -0
- package/dist/harness/contracts/paths.js.map +1 -0
- package/dist/harness/contracts/policy.d.ts +459 -0
- package/dist/harness/contracts/policy.d.ts.map +1 -0
- package/dist/harness/contracts/policy.js +338 -0
- package/dist/harness/contracts/policy.js.map +1 -0
- package/dist/harness/contracts/projection.d.ts +111 -0
- package/dist/harness/contracts/projection.d.ts.map +1 -0
- package/dist/harness/contracts/projection.js +2 -0
- package/dist/harness/contracts/projection.js.map +1 -0
- package/dist/harness/contracts/renderer.d.ts +291 -0
- package/dist/harness/contracts/renderer.d.ts.map +1 -0
- package/dist/harness/contracts/renderer.js +36 -0
- package/dist/harness/contracts/renderer.js.map +1 -0
- package/dist/harness/contracts/roles.d.ts +28 -0
- package/dist/harness/contracts/roles.d.ts.map +1 -0
- package/dist/harness/contracts/roles.js +36 -0
- package/dist/harness/contracts/roles.js.map +1 -0
- package/dist/harness/contracts/runtime.d.ts +283 -0
- package/dist/harness/contracts/runtime.d.ts.map +1 -0
- package/dist/harness/contracts/runtime.js +13 -0
- package/dist/harness/contracts/runtime.js.map +1 -0
- package/dist/harness/contracts/state.d.ts +124 -0
- package/dist/harness/contracts/state.d.ts.map +1 -0
- package/dist/harness/contracts/state.js +172 -0
- package/dist/harness/contracts/state.js.map +1 -0
- package/dist/harness/contracts/store.d.ts +117 -0
- package/dist/harness/contracts/store.d.ts.map +1 -0
- package/dist/harness/contracts/store.js +54 -0
- package/dist/harness/contracts/store.js.map +1 -0
- package/dist/harness/contracts/tools.d.ts +296 -0
- package/dist/harness/contracts/tools.d.ts.map +1 -0
- package/dist/harness/contracts/tools.js +117 -0
- package/dist/harness/contracts/tools.js.map +1 -0
- package/dist/harness/contracts/views.d.ts +468 -0
- package/dist/harness/contracts/views.d.ts.map +1 -0
- package/dist/harness/contracts/views.js +2 -0
- package/dist/harness/contracts/views.js.map +1 -0
- package/dist/harness/core/driver.d.ts +53 -0
- package/dist/harness/core/driver.d.ts.map +1 -0
- package/dist/harness/core/driver.js +566 -0
- package/dist/harness/core/driver.js.map +1 -0
- package/dist/harness/core/envelope.d.ts +11 -0
- package/dist/harness/core/envelope.d.ts.map +1 -0
- package/dist/harness/core/envelope.js +35 -0
- package/dist/harness/core/envelope.js.map +1 -0
- package/dist/harness/core/index.d.ts +7 -0
- package/dist/harness/core/index.d.ts.map +1 -0
- package/dist/harness/core/index.js +5 -0
- package/dist/harness/core/index.js.map +1 -0
- package/dist/harness/core/projection.d.ts +10 -0
- package/dist/harness/core/projection.d.ts.map +1 -0
- package/dist/harness/core/projection.js +268 -0
- package/dist/harness/core/projection.js.map +1 -0
- package/dist/harness/core/recovery.d.ts +14 -0
- package/dist/harness/core/recovery.d.ts.map +1 -0
- package/dist/harness/core/recovery.js +115 -0
- package/dist/harness/core/recovery.js.map +1 -0
- package/dist/harness/core/stream.d.ts +23 -0
- package/dist/harness/core/stream.d.ts.map +1 -0
- package/dist/harness/core/stream.js +102 -0
- package/dist/harness/core/stream.js.map +1 -0
- package/dist/harness/core/testing.d.ts +80 -0
- package/dist/harness/core/testing.d.ts.map +1 -0
- package/dist/harness/core/testing.js +258 -0
- package/dist/harness/core/testing.js.map +1 -0
- package/dist/harness/mcp/approvals.d.ts +14 -0
- package/dist/harness/mcp/approvals.d.ts.map +1 -0
- package/dist/harness/mcp/approvals.js +60 -0
- package/dist/harness/mcp/approvals.js.map +1 -0
- package/dist/harness/mcp/client.d.ts +74 -0
- package/dist/harness/mcp/client.d.ts.map +1 -0
- package/dist/harness/mcp/client.js +214 -0
- package/dist/harness/mcp/client.js.map +1 -0
- package/dist/harness/mcp/config.d.ts +156 -0
- package/dist/harness/mcp/config.d.ts.map +1 -0
- package/dist/harness/mcp/config.js +180 -0
- package/dist/harness/mcp/config.js.map +1 -0
- package/dist/harness/mcp/errors.d.ts +24 -0
- package/dist/harness/mcp/errors.d.ts.map +1 -0
- package/dist/harness/mcp/errors.js +67 -0
- package/dist/harness/mcp/errors.js.map +1 -0
- package/dist/harness/mcp/index.d.ts +9 -0
- package/dist/harness/mcp/index.d.ts.map +1 -0
- package/dist/harness/mcp/index.js +9 -0
- package/dist/harness/mcp/index.js.map +1 -0
- package/dist/harness/mcp/manager.d.ts +115 -0
- package/dist/harness/mcp/manager.d.ts.map +1 -0
- package/dist/harness/mcp/manager.js +361 -0
- package/dist/harness/mcp/manager.js.map +1 -0
- package/dist/harness/mcp/oauth.d.ts +54 -0
- package/dist/harness/mcp/oauth.d.ts.map +1 -0
- package/dist/harness/mcp/oauth.js +253 -0
- package/dist/harness/mcp/oauth.js.map +1 -0
- package/dist/harness/mcp/tools.d.ts +24 -0
- package/dist/harness/mcp/tools.d.ts.map +1 -0
- package/dist/harness/mcp/tools.js +142 -0
- package/dist/harness/mcp/tools.js.map +1 -0
- package/dist/harness/memory/bootstrap.d.ts +55 -0
- package/dist/harness/memory/bootstrap.d.ts.map +1 -0
- package/dist/harness/memory/bootstrap.js +124 -0
- package/dist/harness/memory/bootstrap.js.map +1 -0
- package/dist/harness/memory/desk.d.ts +74 -0
- package/dist/harness/memory/desk.d.ts.map +1 -0
- package/dist/harness/memory/desk.js +211 -0
- package/dist/harness/memory/desk.js.map +1 -0
- package/dist/harness/memory/graph.d.ts +24 -0
- package/dist/harness/memory/graph.d.ts.map +1 -0
- package/dist/harness/memory/graph.js +92 -0
- package/dist/harness/memory/graph.js.map +1 -0
- package/dist/harness/memory/index.d.ts +12 -0
- package/dist/harness/memory/index.d.ts.map +1 -0
- package/dist/harness/memory/index.js +10 -0
- package/dist/harness/memory/index.js.map +1 -0
- package/dist/harness/memory/markdown-memory-store.d.ts +122 -0
- package/dist/harness/memory/markdown-memory-store.d.ts.map +1 -0
- package/dist/harness/memory/markdown-memory-store.js +419 -0
- package/dist/harness/memory/markdown-memory-store.js.map +1 -0
- package/dist/harness/memory/memory-command.d.ts +22 -0
- package/dist/harness/memory/memory-command.d.ts.map +1 -0
- package/dist/harness/memory/memory-command.js +335 -0
- package/dist/harness/memory/memory-command.js.map +1 -0
- package/dist/harness/memory/memory-index.d.ts +71 -0
- package/dist/harness/memory/memory-index.d.ts.map +1 -0
- package/dist/harness/memory/memory-index.js +206 -0
- package/dist/harness/memory/memory-index.js.map +1 -0
- package/dist/harness/memory/note-format.d.ts +20 -0
- package/dist/harness/memory/note-format.d.ts.map +1 -0
- package/dist/harness/memory/note-format.js +69 -0
- package/dist/harness/memory/note-format.js.map +1 -0
- package/dist/harness/memory/obsidian.d.ts +14 -0
- package/dist/harness/memory/obsidian.d.ts.map +1 -0
- package/dist/harness/memory/obsidian.js +64 -0
- package/dist/harness/memory/obsidian.js.map +1 -0
- package/dist/harness/memory/redaction.d.ts +15 -0
- package/dist/harness/memory/redaction.d.ts.map +1 -0
- package/dist/harness/memory/redaction.js +64 -0
- package/dist/harness/memory/redaction.js.map +1 -0
- package/dist/harness/memory/relations.d.ts +29 -0
- package/dist/harness/memory/relations.d.ts.map +1 -0
- package/dist/harness/memory/relations.js +117 -0
- package/dist/harness/memory/relations.js.map +1 -0
- package/dist/harness/memory/vault.d.ts +35 -0
- package/dist/harness/memory/vault.d.ts.map +1 -0
- package/dist/harness/memory/vault.js +194 -0
- package/dist/harness/memory/vault.js.map +1 -0
- package/dist/harness/orchestration/approval.d.ts +29 -0
- package/dist/harness/orchestration/approval.d.ts.map +1 -0
- package/dist/harness/orchestration/approval.js +86 -0
- package/dist/harness/orchestration/approval.js.map +1 -0
- package/dist/harness/orchestration/artifact-review.d.ts +219 -0
- package/dist/harness/orchestration/artifact-review.d.ts.map +1 -0
- package/dist/harness/orchestration/artifact-review.js +319 -0
- package/dist/harness/orchestration/artifact-review.js.map +1 -0
- package/dist/harness/orchestration/attempt-log.d.ts +53 -0
- package/dist/harness/orchestration/attempt-log.d.ts.map +1 -0
- package/dist/harness/orchestration/attempt-log.js +138 -0
- package/dist/harness/orchestration/attempt-log.js.map +1 -0
- package/dist/harness/orchestration/budget.d.ts +110 -0
- package/dist/harness/orchestration/budget.d.ts.map +1 -0
- package/dist/harness/orchestration/budget.js +197 -0
- package/dist/harness/orchestration/budget.js.map +1 -0
- package/dist/harness/orchestration/capabilities.d.ts +6 -0
- package/dist/harness/orchestration/capabilities.d.ts.map +1 -0
- package/dist/harness/orchestration/capabilities.js +80 -0
- package/dist/harness/orchestration/capabilities.js.map +1 -0
- package/dist/harness/orchestration/claims.d.ts +148 -0
- package/dist/harness/orchestration/claims.d.ts.map +1 -0
- package/dist/harness/orchestration/claims.js +64 -0
- package/dist/harness/orchestration/claims.js.map +1 -0
- package/dist/harness/orchestration/control-plane.d.ts +18 -0
- package/dist/harness/orchestration/control-plane.d.ts.map +1 -0
- package/dist/harness/orchestration/control-plane.js +74 -0
- package/dist/harness/orchestration/control-plane.js.map +1 -0
- package/dist/harness/orchestration/coordinator.d.ts +132 -0
- package/dist/harness/orchestration/coordinator.d.ts.map +1 -0
- package/dist/harness/orchestration/coordinator.js +1628 -0
- package/dist/harness/orchestration/coordinator.js.map +1 -0
- package/dist/harness/orchestration/delegation.d.ts +80 -0
- package/dist/harness/orchestration/delegation.d.ts.map +1 -0
- package/dist/harness/orchestration/delegation.js +81 -0
- package/dist/harness/orchestration/delegation.js.map +1 -0
- package/dist/harness/orchestration/evidence.d.ts +124 -0
- package/dist/harness/orchestration/evidence.d.ts.map +1 -0
- package/dist/harness/orchestration/evidence.js +576 -0
- package/dist/harness/orchestration/evidence.js.map +1 -0
- package/dist/harness/orchestration/factories.d.ts +13 -0
- package/dist/harness/orchestration/factories.d.ts.map +1 -0
- package/dist/harness/orchestration/factories.js +20 -0
- package/dist/harness/orchestration/factories.js.map +1 -0
- package/dist/harness/orchestration/git.d.ts +77 -0
- package/dist/harness/orchestration/git.d.ts.map +1 -0
- package/dist/harness/orchestration/git.js +214 -0
- package/dist/harness/orchestration/git.js.map +1 -0
- package/dist/harness/orchestration/index.d.ts +25 -0
- package/dist/harness/orchestration/index.d.ts.map +1 -0
- package/dist/harness/orchestration/index.js +23 -0
- package/dist/harness/orchestration/index.js.map +1 -0
- package/dist/harness/orchestration/isolation.d.ts +181 -0
- package/dist/harness/orchestration/isolation.d.ts.map +1 -0
- package/dist/harness/orchestration/isolation.js +1357 -0
- package/dist/harness/orchestration/isolation.js.map +1 -0
- package/dist/harness/orchestration/paths.d.ts +18 -0
- package/dist/harness/orchestration/paths.d.ts.map +1 -0
- package/dist/harness/orchestration/paths.js +56 -0
- package/dist/harness/orchestration/paths.js.map +1 -0
- package/dist/harness/orchestration/plan.d.ts +219 -0
- package/dist/harness/orchestration/plan.d.ts.map +1 -0
- package/dist/harness/orchestration/plan.js +537 -0
- package/dist/harness/orchestration/plan.js.map +1 -0
- package/dist/harness/orchestration/planner.d.ts +137 -0
- package/dist/harness/orchestration/planner.d.ts.map +1 -0
- package/dist/harness/orchestration/planner.js +162 -0
- package/dist/harness/orchestration/planner.js.map +1 -0
- package/dist/harness/orchestration/recorder.d.ts +23 -0
- package/dist/harness/orchestration/recorder.d.ts.map +1 -0
- package/dist/harness/orchestration/recorder.js +50 -0
- package/dist/harness/orchestration/recorder.js.map +1 -0
- package/dist/harness/orchestration/scheduler.d.ts +40 -0
- package/dist/harness/orchestration/scheduler.d.ts.map +1 -0
- package/dist/harness/orchestration/scheduler.js +157 -0
- package/dist/harness/orchestration/scheduler.js.map +1 -0
- package/dist/harness/orchestration/testing.d.ts +233 -0
- package/dist/harness/orchestration/testing.d.ts.map +1 -0
- package/dist/harness/orchestration/testing.js +734 -0
- package/dist/harness/orchestration/testing.js.map +1 -0
- package/dist/harness/orchestration/verification-preflight.d.ts +46 -0
- package/dist/harness/orchestration/verification-preflight.d.ts.map +1 -0
- package/dist/harness/orchestration/verification-preflight.js +104 -0
- package/dist/harness/orchestration/verification-preflight.js.map +1 -0
- package/dist/harness/orchestration/worker-control.d.ts +64 -0
- package/dist/harness/orchestration/worker-control.d.ts.map +1 -0
- package/dist/harness/orchestration/worker-control.js +199 -0
- package/dist/harness/orchestration/worker-control.js.map +1 -0
- package/dist/harness/orchestration/worker-manager.d.ts +225 -0
- package/dist/harness/orchestration/worker-manager.d.ts.map +1 -0
- package/dist/harness/orchestration/worker-manager.js +1347 -0
- package/dist/harness/orchestration/worker-manager.js.map +1 -0
- package/dist/harness/orchestration/workspace-digest.d.ts +39 -0
- package/dist/harness/orchestration/workspace-digest.d.ts.map +1 -0
- package/dist/harness/orchestration/workspace-digest.js +147 -0
- package/dist/harness/orchestration/workspace-digest.js.map +1 -0
- package/dist/harness/policy/approval-broker.d.ts +13 -0
- package/dist/harness/policy/approval-broker.d.ts.map +1 -0
- package/dist/harness/policy/approval-broker.js +26 -0
- package/dist/harness/policy/approval-broker.js.map +1 -0
- package/dist/harness/policy/command-classifier.d.ts +29 -0
- package/dist/harness/policy/command-classifier.d.ts.map +1 -0
- package/dist/harness/policy/command-classifier.js +459 -0
- package/dist/harness/policy/command-classifier.js.map +1 -0
- package/dist/harness/policy/command-rules.d.ts +56 -0
- package/dist/harness/policy/command-rules.d.ts.map +1 -0
- package/dist/harness/policy/command-rules.js +588 -0
- package/dist/harness/policy/command-rules.js.map +1 -0
- package/dist/harness/policy/config.d.ts +27 -0
- package/dist/harness/policy/config.d.ts.map +1 -0
- package/dist/harness/policy/config.js +37 -0
- package/dist/harness/policy/config.js.map +1 -0
- package/dist/harness/policy/engine.d.ts +67 -0
- package/dist/harness/policy/engine.d.ts.map +1 -0
- package/dist/harness/policy/engine.js +483 -0
- package/dist/harness/policy/engine.js.map +1 -0
- package/dist/harness/policy/exec-allowlist.d.ts +66 -0
- package/dist/harness/policy/exec-allowlist.d.ts.map +1 -0
- package/dist/harness/policy/exec-allowlist.js +449 -0
- package/dist/harness/policy/exec-allowlist.js.map +1 -0
- package/dist/harness/policy/index.d.ts +10 -0
- package/dist/harness/policy/index.d.ts.map +1 -0
- package/dist/harness/policy/index.js +8 -0
- package/dist/harness/policy/index.js.map +1 -0
- package/dist/harness/policy/secret-patterns.d.ts +12 -0
- package/dist/harness/policy/secret-patterns.d.ts.map +1 -0
- package/dist/harness/policy/secret-patterns.js +48 -0
- package/dist/harness/policy/secret-patterns.js.map +1 -0
- package/dist/harness/policy/shell-parser.d.ts +40 -0
- package/dist/harness/policy/shell-parser.d.ts.map +1 -0
- package/dist/harness/policy/shell-parser.js +278 -0
- package/dist/harness/policy/shell-parser.js.map +1 -0
- package/dist/harness/policy/workspace-trust.d.ts +37 -0
- package/dist/harness/policy/workspace-trust.d.ts.map +1 -0
- package/dist/harness/policy/workspace-trust.js +164 -0
- package/dist/harness/policy/workspace-trust.js.map +1 -0
- package/dist/harness/providers/anthropic-messages.d.ts +48 -0
- package/dist/harness/providers/anthropic-messages.d.ts.map +1 -0
- package/dist/harness/providers/anthropic-messages.js +360 -0
- package/dist/harness/providers/anthropic-messages.js.map +1 -0
- package/dist/harness/providers/assembler.d.ts +29 -0
- package/dist/harness/providers/assembler.d.ts.map +1 -0
- package/dist/harness/providers/assembler.js +130 -0
- package/dist/harness/providers/assembler.js.map +1 -0
- package/dist/harness/providers/authenticated-stream.d.ts +9 -0
- package/dist/harness/providers/authenticated-stream.d.ts.map +1 -0
- package/dist/harness/providers/authenticated-stream.js +81 -0
- package/dist/harness/providers/authenticated-stream.js.map +1 -0
- package/dist/harness/providers/catalog.d.ts +75 -0
- package/dist/harness/providers/catalog.d.ts.map +1 -0
- package/dist/harness/providers/catalog.js +124 -0
- package/dist/harness/providers/catalog.js.map +1 -0
- package/dist/harness/providers/claude-code/adapter.d.ts +96 -0
- package/dist/harness/providers/claude-code/adapter.d.ts.map +1 -0
- package/dist/harness/providers/claude-code/adapter.js +863 -0
- package/dist/harness/providers/claude-code/adapter.js.map +1 -0
- package/dist/harness/providers/claude-code/mcp-relay.d.ts +2 -0
- package/dist/harness/providers/claude-code/mcp-relay.d.ts.map +1 -0
- package/dist/harness/providers/claude-code/mcp-relay.js +27 -0
- package/dist/harness/providers/claude-code/mcp-relay.js.map +1 -0
- package/dist/harness/providers/claude-code/mcp-server.d.ts +40 -0
- package/dist/harness/providers/claude-code/mcp-server.d.ts.map +1 -0
- package/dist/harness/providers/claude-code/mcp-server.js +171 -0
- package/dist/harness/providers/claude-code/mcp-server.js.map +1 -0
- package/dist/harness/providers/claude-code/native.d.ts +36 -0
- package/dist/harness/providers/claude-code/native.d.ts.map +1 -0
- package/dist/harness/providers/claude-code/native.js +153 -0
- package/dist/harness/providers/claude-code/native.js.map +1 -0
- package/dist/harness/providers/claude-code/process.d.ts +48 -0
- package/dist/harness/providers/claude-code/process.d.ts.map +1 -0
- package/dist/harness/providers/claude-code/process.js +128 -0
- package/dist/harness/providers/claude-code/process.js.map +1 -0
- package/dist/harness/providers/codex-app-server.d.ts +8 -0
- package/dist/harness/providers/codex-app-server.d.ts.map +1 -0
- package/dist/harness/providers/codex-app-server.js +45 -0
- package/dist/harness/providers/codex-app-server.js.map +1 -0
- package/dist/harness/providers/effort.d.ts +51 -0
- package/dist/harness/providers/effort.d.ts.map +1 -0
- package/dist/harness/providers/effort.js +108 -0
- package/dist/harness/providers/effort.js.map +1 -0
- package/dist/harness/providers/errors.d.ts +34 -0
- package/dist/harness/providers/errors.d.ts.map +1 -0
- package/dist/harness/providers/errors.js +143 -0
- package/dist/harness/providers/errors.js.map +1 -0
- package/dist/harness/providers/grammar.d.ts +17 -0
- package/dist/harness/providers/grammar.d.ts.map +1 -0
- package/dist/harness/providers/grammar.js +89 -0
- package/dist/harness/providers/grammar.js.map +1 -0
- package/dist/harness/providers/http-stream.d.ts +40 -0
- package/dist/harness/providers/http-stream.d.ts.map +1 -0
- package/dist/harness/providers/http-stream.js +134 -0
- package/dist/harness/providers/http-stream.js.map +1 -0
- package/dist/harness/providers/index.d.ts +20 -0
- package/dist/harness/providers/index.d.ts.map +1 -0
- package/dist/harness/providers/index.js +17 -0
- package/dist/harness/providers/index.js.map +1 -0
- package/dist/harness/providers/responses.d.ts +36 -0
- package/dist/harness/providers/responses.d.ts.map +1 -0
- package/dist/harness/providers/responses.js +435 -0
- package/dist/harness/providers/responses.js.map +1 -0
- package/dist/harness/providers/reviewer-route.d.ts +14 -0
- package/dist/harness/providers/reviewer-route.d.ts.map +1 -0
- package/dist/harness/providers/reviewer-route.js +31 -0
- package/dist/harness/providers/reviewer-route.js.map +1 -0
- package/dist/harness/providers/router.d.ts +50 -0
- package/dist/harness/providers/router.d.ts.map +1 -0
- package/dist/harness/providers/router.js +295 -0
- package/dist/harness/providers/router.js.map +1 -0
- package/dist/harness/providers/scripted.d.ts +22 -0
- package/dist/harness/providers/scripted.d.ts.map +1 -0
- package/dist/harness/providers/scripted.js +111 -0
- package/dist/harness/providers/scripted.js.map +1 -0
- package/dist/harness/providers/sse.d.ts +13 -0
- package/dist/harness/providers/sse.d.ts.map +1 -0
- package/dist/harness/providers/sse.js +82 -0
- package/dist/harness/providers/sse.js.map +1 -0
- package/dist/harness/providers/testing.d.ts +35 -0
- package/dist/harness/providers/testing.d.ts.map +1 -0
- package/dist/harness/providers/testing.js +93 -0
- package/dist/harness/providers/testing.js.map +1 -0
- package/dist/harness/providers/web-search.d.ts +110 -0
- package/dist/harness/providers/web-search.d.ts.map +1 -0
- package/dist/harness/providers/web-search.js +476 -0
- package/dist/harness/providers/web-search.js.map +1 -0
- package/dist/harness/store/blob-store.d.ts +4 -0
- package/dist/harness/store/blob-store.d.ts.map +1 -0
- package/dist/harness/store/blob-store.js +79 -0
- package/dist/harness/store/blob-store.js.map +1 -0
- package/dist/harness/store/durable-file.d.ts +17 -0
- package/dist/harness/store/durable-file.d.ts.map +1 -0
- package/dist/harness/store/durable-file.js +84 -0
- package/dist/harness/store/durable-file.js.map +1 -0
- package/dist/harness/store/event-store.d.ts +56 -0
- package/dist/harness/store/event-store.d.ts.map +1 -0
- package/dist/harness/store/event-store.js +210 -0
- package/dist/harness/store/event-store.js.map +1 -0
- package/dist/harness/store/index.d.ts +8 -0
- package/dist/harness/store/index.d.ts.map +1 -0
- package/dist/harness/store/index.js +4 -0
- package/dist/harness/store/index.js.map +1 -0
- package/dist/harness/store/layout.d.ts +12 -0
- package/dist/harness/store/layout.d.ts.map +1 -0
- package/dist/harness/store/layout.js +27 -0
- package/dist/harness/store/layout.js.map +1 -0
- package/dist/harness/store/lease.d.ts +37 -0
- package/dist/harness/store/lease.d.ts.map +1 -0
- package/dist/harness/store/lease.js +326 -0
- package/dist/harness/store/lease.js.map +1 -0
- package/dist/harness/store/segments.d.ts +49 -0
- package/dist/harness/store/segments.d.ts.map +1 -0
- package/dist/harness/store/segments.js +216 -0
- package/dist/harness/store/segments.js.map +1 -0
- package/dist/harness/store/session-store.d.ts +18 -0
- package/dist/harness/store/session-store.d.ts.map +1 -0
- package/dist/harness/store/session-store.js +319 -0
- package/dist/harness/store/session-store.js.map +1 -0
- package/dist/harness/tools/builtin/control-tools.d.ts +57 -0
- package/dist/harness/tools/builtin/control-tools.d.ts.map +1 -0
- package/dist/harness/tools/builtin/control-tools.js +72 -0
- package/dist/harness/tools/builtin/control-tools.js.map +1 -0
- package/dist/harness/tools/builtin/glob.d.ts +15 -0
- package/dist/harness/tools/builtin/glob.d.ts.map +1 -0
- package/dist/harness/tools/builtin/glob.js +164 -0
- package/dist/harness/tools/builtin/glob.js.map +1 -0
- package/dist/harness/tools/builtin/process-bg.d.ts +72 -0
- package/dist/harness/tools/builtin/process-bg.d.ts.map +1 -0
- package/dist/harness/tools/builtin/process-bg.js +360 -0
- package/dist/harness/tools/builtin/process-bg.js.map +1 -0
- package/dist/harness/tools/builtin/process-tools.d.ts +46 -0
- package/dist/harness/tools/builtin/process-tools.d.ts.map +1 -0
- package/dist/harness/tools/builtin/process-tools.js +263 -0
- package/dist/harness/tools/builtin/process-tools.js.map +1 -0
- package/dist/harness/tools/builtin/read-media.d.ts +10 -0
- package/dist/harness/tools/builtin/read-media.d.ts.map +1 -0
- package/dist/harness/tools/builtin/read-media.js +128 -0
- package/dist/harness/tools/builtin/read-media.js.map +1 -0
- package/dist/harness/tools/builtin/read-tools.d.ts +29 -0
- package/dist/harness/tools/builtin/read-tools.d.ts.map +1 -0
- package/dist/harness/tools/builtin/read-tools.js +329 -0
- package/dist/harness/tools/builtin/read-tools.js.map +1 -0
- package/dist/harness/tools/builtin/shared.d.ts +47 -0
- package/dist/harness/tools/builtin/shared.d.ts.map +1 -0
- package/dist/harness/tools/builtin/shared.js +94 -0
- package/dist/harness/tools/builtin/shared.js.map +1 -0
- package/dist/harness/tools/builtin/todo.d.ts +38 -0
- package/dist/harness/tools/builtin/todo.d.ts.map +1 -0
- package/dist/harness/tools/builtin/todo.js +55 -0
- package/dist/harness/tools/builtin/todo.js.map +1 -0
- package/dist/harness/tools/builtin/web-common.d.ts +18 -0
- package/dist/harness/tools/builtin/web-common.d.ts.map +1 -0
- package/dist/harness/tools/builtin/web-common.js +53 -0
- package/dist/harness/tools/builtin/web-common.js.map +1 -0
- package/dist/harness/tools/builtin/web-fetch.d.ts +33 -0
- package/dist/harness/tools/builtin/web-fetch.d.ts.map +1 -0
- package/dist/harness/tools/builtin/web-fetch.js +173 -0
- package/dist/harness/tools/builtin/web-fetch.js.map +1 -0
- package/dist/harness/tools/builtin/web-html.d.ts +14 -0
- package/dist/harness/tools/builtin/web-html.d.ts.map +1 -0
- package/dist/harness/tools/builtin/web-html.js +314 -0
- package/dist/harness/tools/builtin/web-html.js.map +1 -0
- package/dist/harness/tools/builtin/web-net.d.ts +59 -0
- package/dist/harness/tools/builtin/web-net.d.ts.map +1 -0
- package/dist/harness/tools/builtin/web-net.js +347 -0
- package/dist/harness/tools/builtin/web-net.js.map +1 -0
- package/dist/harness/tools/builtin/web-search.d.ts +40 -0
- package/dist/harness/tools/builtin/web-search.d.ts.map +1 -0
- package/dist/harness/tools/builtin/web-search.js +60 -0
- package/dist/harness/tools/builtin/web-search.js.map +1 -0
- package/dist/harness/tools/builtin/web-state.d.ts +67 -0
- package/dist/harness/tools/builtin/web-state.d.ts.map +1 -0
- package/dist/harness/tools/builtin/web-state.js +227 -0
- package/dist/harness/tools/builtin/web-state.js.map +1 -0
- package/dist/harness/tools/builtin/write-tools.d.ts +18 -0
- package/dist/harness/tools/builtin/write-tools.d.ts.map +1 -0
- package/dist/harness/tools/builtin/write-tools.js +335 -0
- package/dist/harness/tools/builtin/write-tools.js.map +1 -0
- package/dist/harness/tools/environment.d.ts +9 -0
- package/dist/harness/tools/environment.d.ts.map +1 -0
- package/dist/harness/tools/environment.js +59 -0
- package/dist/harness/tools/environment.js.map +1 -0
- package/dist/harness/tools/file-ledger.d.ts +9 -0
- package/dist/harness/tools/file-ledger.d.ts.map +1 -0
- package/dist/harness/tools/file-ledger.js +26 -0
- package/dist/harness/tools/file-ledger.js.map +1 -0
- package/dist/harness/tools/gateway.d.ts +52 -0
- package/dist/harness/tools/gateway.d.ts.map +1 -0
- package/dist/harness/tools/gateway.js +435 -0
- package/dist/harness/tools/gateway.js.map +1 -0
- package/dist/harness/tools/index.d.ts +20 -0
- package/dist/harness/tools/index.d.ts.map +1 -0
- package/dist/harness/tools/index.js +17 -0
- package/dist/harness/tools/index.js.map +1 -0
- package/dist/harness/tools/patch.d.ts +51 -0
- package/dist/harness/tools/patch.d.ts.map +1 -0
- package/dist/harness/tools/patch.js +450 -0
- package/dist/harness/tools/patch.js.map +1 -0
- package/dist/harness/tools/process.d.ts +28 -0
- package/dist/harness/tools/process.d.ts.map +1 -0
- package/dist/harness/tools/process.js +263 -0
- package/dist/harness/tools/process.js.map +1 -0
- package/dist/harness/tools/redaction.d.ts +26 -0
- package/dist/harness/tools/redaction.d.ts.map +1 -0
- package/dist/harness/tools/redaction.js +77 -0
- package/dist/harness/tools/redaction.js.map +1 -0
- package/dist/harness/tools/registry.d.ts +26 -0
- package/dist/harness/tools/registry.d.ts.map +1 -0
- package/dist/harness/tools/registry.js +57 -0
- package/dist/harness/tools/registry.js.map +1 -0
- package/dist/harness/tools/sandbox.d.ts +23 -0
- package/dist/harness/tools/sandbox.d.ts.map +1 -0
- package/dist/harness/tools/sandbox.js +117 -0
- package/dist/harness/tools/sandbox.js.map +1 -0
- package/dist/harness/tools/testing.d.ts +42 -0
- package/dist/harness/tools/testing.d.ts.map +1 -0
- package/dist/harness/tools/testing.js +143 -0
- package/dist/harness/tools/testing.js.map +1 -0
- package/dist/harness/tools/text-file.d.ts +38 -0
- package/dist/harness/tools/text-file.d.ts.map +1 -0
- package/dist/harness/tools/text-file.js +90 -0
- package/dist/harness/tools/text-file.js.map +1 -0
- package/dist/harness/tools/windows-launch.d.ts +52 -0
- package/dist/harness/tools/windows-launch.d.ts.map +1 -0
- package/dist/harness/tools/windows-launch.js +261 -0
- package/dist/harness/tools/windows-launch.js.map +1 -0
- package/dist/harness/tools/workspace-path.d.ts +34 -0
- package/dist/harness/tools/workspace-path.d.ts.map +1 -0
- package/dist/harness/tools/workspace-path.js +133 -0
- package/dist/harness/tools/workspace-path.js.map +1 -0
- package/dist/harness/tui/approvals.d.ts +44 -0
- package/dist/harness/tui/approvals.d.ts.map +1 -0
- package/dist/harness/tui/approvals.js +127 -0
- package/dist/harness/tui/approvals.js.map +1 -0
- package/dist/harness/tui/auth-interaction.d.ts +36 -0
- package/dist/harness/tui/auth-interaction.d.ts.map +1 -0
- package/dist/harness/tui/auth-interaction.js +76 -0
- package/dist/harness/tui/auth-interaction.js.map +1 -0
- package/dist/harness/tui/choice-modal.d.ts +58 -0
- package/dist/harness/tui/choice-modal.d.ts.map +1 -0
- package/dist/harness/tui/choice-modal.js +244 -0
- package/dist/harness/tui/choice-modal.js.map +1 -0
- package/dist/harness/tui/conversation-view.d.ts +250 -0
- package/dist/harness/tui/conversation-view.d.ts.map +1 -0
- package/dist/harness/tui/conversation-view.js +1115 -0
- package/dist/harness/tui/conversation-view.js.map +1 -0
- package/dist/harness/tui/describe.d.ts +21 -0
- package/dist/harness/tui/describe.d.ts.map +1 -0
- package/dist/harness/tui/describe.js +110 -0
- package/dist/harness/tui/describe.js.map +1 -0
- package/dist/harness/tui/index.d.ts +30 -0
- package/dist/harness/tui/index.d.ts.map +1 -0
- package/dist/harness/tui/index.js +26 -0
- package/dist/harness/tui/index.js.map +1 -0
- package/dist/harness/tui/input/attachments.d.ts +20 -0
- package/dist/harness/tui/input/attachments.d.ts.map +1 -0
- package/dist/harness/tui/input/attachments.js +100 -0
- package/dist/harness/tui/input/attachments.js.map +1 -0
- package/dist/harness/tui/input/autocomplete.d.ts +41 -0
- package/dist/harness/tui/input/autocomplete.d.ts.map +1 -0
- package/dist/harness/tui/input/autocomplete.js +85 -0
- package/dist/harness/tui/input/autocomplete.js.map +1 -0
- package/dist/harness/tui/input/clipboard.d.ts +44 -0
- package/dist/harness/tui/input/clipboard.d.ts.map +1 -0
- package/dist/harness/tui/input/clipboard.js +181 -0
- package/dist/harness/tui/input/clipboard.js.map +1 -0
- package/dist/harness/tui/input/commands.d.ts +23 -0
- package/dist/harness/tui/input/commands.d.ts.map +1 -0
- package/dist/harness/tui/input/commands.js +71 -0
- package/dist/harness/tui/input/commands.js.map +1 -0
- package/dist/harness/tui/input/file-index.d.ts +49 -0
- package/dist/harness/tui/input/file-index.d.ts.map +1 -0
- package/dist/harness/tui/input/file-index.js +170 -0
- package/dist/harness/tui/input/file-index.js.map +1 -0
- package/dist/harness/tui/input/index.d.ts +8 -0
- package/dist/harness/tui/input/index.d.ts.map +1 -0
- package/dist/harness/tui/input/index.js +8 -0
- package/dist/harness/tui/input/index.js.map +1 -0
- package/dist/harness/tui/input/mouse.d.ts +68 -0
- package/dist/harness/tui/input/mouse.d.ts.map +1 -0
- package/dist/harness/tui/input/mouse.js +141 -0
- package/dist/harness/tui/input/mouse.js.map +1 -0
- package/dist/harness/tui/interrupt.d.ts +25 -0
- package/dist/harness/tui/interrupt.d.ts.map +1 -0
- package/dist/harness/tui/interrupt.js +49 -0
- package/dist/harness/tui/interrupt.js.map +1 -0
- package/dist/harness/tui/jsonl-renderer.d.ts +68 -0
- package/dist/harness/tui/jsonl-renderer.d.ts.map +1 -0
- package/dist/harness/tui/jsonl-renderer.js +172 -0
- package/dist/harness/tui/jsonl-renderer.js.map +1 -0
- package/dist/harness/tui/line-source.d.ts +39 -0
- package/dist/harness/tui/line-source.d.ts.map +1 -0
- package/dist/harness/tui/line-source.js +137 -0
- package/dist/harness/tui/line-source.js.map +1 -0
- package/dist/harness/tui/logo-art.d.ts +9 -0
- package/dist/harness/tui/logo-art.d.ts.map +1 -0
- package/dist/harness/tui/logo-art.js +24 -0
- package/dist/harness/tui/logo-art.js.map +1 -0
- package/dist/harness/tui/logo.d.ts +28 -0
- package/dist/harness/tui/logo.d.ts.map +1 -0
- package/dist/harness/tui/logo.js +88 -0
- package/dist/harness/tui/logo.js.map +1 -0
- package/dist/harness/tui/open-browser.d.ts +17 -0
- package/dist/harness/tui/open-browser.d.ts.map +1 -0
- package/dist/harness/tui/open-browser.js +45 -0
- package/dist/harness/tui/open-browser.js.map +1 -0
- package/dist/harness/tui/output-chunks.d.ts +8 -0
- package/dist/harness/tui/output-chunks.d.ts.map +1 -0
- package/dist/harness/tui/output-chunks.js +48 -0
- package/dist/harness/tui/output-chunks.js.map +1 -0
- package/dist/harness/tui/panels/index.d.ts +2 -0
- package/dist/harness/tui/panels/index.d.ts.map +1 -0
- package/dist/harness/tui/panels/index.js +2 -0
- package/dist/harness/tui/panels/index.js.map +1 -0
- package/dist/harness/tui/panels/panel-view.d.ts +98 -0
- package/dist/harness/tui/panels/panel-view.d.ts.map +1 -0
- package/dist/harness/tui/panels/panel-view.js +596 -0
- package/dist/harness/tui/panels/panel-view.js.map +1 -0
- package/dist/harness/tui/pi-tui-renderer.d.ts +363 -0
- package/dist/harness/tui/pi-tui-renderer.d.ts.map +1 -0
- package/dist/harness/tui/pi-tui-renderer.js +2696 -0
- package/dist/harness/tui/pi-tui-renderer.js.map +1 -0
- package/dist/harness/tui/plain-line-renderer.d.ts +102 -0
- package/dist/harness/tui/plain-line-renderer.d.ts.map +1 -0
- package/dist/harness/tui/plain-line-renderer.js +491 -0
- package/dist/harness/tui/plain-line-renderer.js.map +1 -0
- package/dist/harness/tui/render-queue.d.ts +34 -0
- package/dist/harness/tui/render-queue.d.ts.map +1 -0
- package/dist/harness/tui/render-queue.js +92 -0
- package/dist/harness/tui/render-queue.js.map +1 -0
- package/dist/harness/tui/sanitize.d.ts +9 -0
- package/dist/harness/tui/sanitize.d.ts.map +1 -0
- package/dist/harness/tui/sanitize.js +31 -0
- package/dist/harness/tui/sanitize.js.map +1 -0
- package/dist/harness/tui/style.d.ts +54 -0
- package/dist/harness/tui/style.d.ts.map +1 -0
- package/dist/harness/tui/style.js +64 -0
- package/dist/harness/tui/style.js.map +1 -0
- package/dist/harness/tui/terminal-lifecycle.d.ts +49 -0
- package/dist/harness/tui/terminal-lifecycle.d.ts.map +1 -0
- package/dist/harness/tui/terminal-lifecycle.js +100 -0
- package/dist/harness/tui/terminal-lifecycle.js.map +1 -0
- package/dist/harness/tui/theme.d.ts +77 -0
- package/dist/harness/tui/theme.d.ts.map +1 -0
- package/dist/harness/tui/theme.js +501 -0
- package/dist/harness/tui/theme.js.map +1 -0
- package/dist/harness/tui/tool-cards.d.ts +35 -0
- package/dist/harness/tui/tool-cards.d.ts.map +1 -0
- package/dist/harness/tui/tool-cards.js +122 -0
- package/dist/harness/tui/tool-cards.js.map +1 -0
- package/dist/harness/tui/tool-row.d.ts +51 -0
- package/dist/harness/tui/tool-row.d.ts.map +1 -0
- package/dist/harness/tui/tool-row.js +98 -0
- package/dist/harness/tui/tool-row.js.map +1 -0
- package/dist/harness/tui/views/board.d.ts +49 -0
- package/dist/harness/tui/views/board.d.ts.map +1 -0
- package/dist/harness/tui/views/board.js +293 -0
- package/dist/harness/tui/views/board.js.map +1 -0
- package/dist/harness/tui/views/cards.d.ts +8 -0
- package/dist/harness/tui/views/cards.d.ts.map +1 -0
- package/dist/harness/tui/views/cards.js +206 -0
- package/dist/harness/tui/views/cards.js.map +1 -0
- package/dist/harness/tui/views/components.d.ts +101 -0
- package/dist/harness/tui/views/components.d.ts.map +1 -0
- package/dist/harness/tui/views/components.js +186 -0
- package/dist/harness/tui/views/components.js.map +1 -0
- package/dist/harness/tui/views/diff.d.ts +11 -0
- package/dist/harness/tui/views/diff.d.ts.map +1 -0
- package/dist/harness/tui/views/diff.js +150 -0
- package/dist/harness/tui/views/diff.js.map +1 -0
- package/dist/harness/tui/views/graph.d.ts +49 -0
- package/dist/harness/tui/views/graph.d.ts.map +1 -0
- package/dist/harness/tui/views/graph.js +361 -0
- package/dist/harness/tui/views/graph.js.map +1 -0
- package/dist/harness/tui/views/index.d.ts +15 -0
- package/dist/harness/tui/views/index.d.ts.map +1 -0
- package/dist/harness/tui/views/index.js +15 -0
- package/dist/harness/tui/views/index.js.map +1 -0
- package/dist/harness/tui/views/kit.d.ts +112 -0
- package/dist/harness/tui/views/kit.d.ts.map +1 -0
- package/dist/harness/tui/views/kit.js +282 -0
- package/dist/harness/tui/views/kit.js.map +1 -0
- package/dist/harness/tui/views/trust-cards.d.ts +27 -0
- package/dist/harness/tui/views/trust-cards.d.ts.map +1 -0
- package/dist/harness/tui/views/trust-cards.js +181 -0
- package/dist/harness/tui/views/trust-cards.js.map +1 -0
- package/dist/harness/tui/views/usage.d.ts +4 -0
- package/dist/harness/tui/views/usage.d.ts.map +1 -0
- package/dist/harness/tui/views/usage.js +182 -0
- package/dist/harness/tui/views/usage.js.map +1 -0
- package/dist/harness/tui/views/worker.d.ts +47 -0
- package/dist/harness/tui/views/worker.d.ts.map +1 -0
- package/dist/harness/tui/views/worker.js +221 -0
- package/dist/harness/tui/views/worker.js.map +1 -0
- package/dist/harness/tui/welcome.d.ts +97 -0
- package/dist/harness/tui/welcome.d.ts.map +1 -0
- package/dist/harness/tui/welcome.js +271 -0
- package/dist/harness/tui/welcome.js.map +1 -0
- package/dist/harness/tui/wrap.d.ts +26 -0
- package/dist/harness/tui/wrap.d.ts.map +1 -0
- package/dist/harness/tui/wrap.js +38 -0
- package/dist/harness/tui/wrap.js.map +1 -0
- package/dist/infrastructure/build-info.d.ts +5 -0
- package/dist/infrastructure/build-info.d.ts.map +1 -0
- package/dist/infrastructure/build-info.js +21 -0
- package/dist/infrastructure/build-info.js.map +1 -0
- package/dist/infrastructure/frontmatter.d.ts +25 -0
- package/dist/infrastructure/frontmatter.d.ts.map +1 -0
- package/dist/infrastructure/frontmatter.js +75 -0
- package/dist/infrastructure/frontmatter.js.map +1 -0
- package/dist/templates/agent-manifests.d.ts +19 -0
- package/dist/templates/agent-manifests.d.ts.map +1 -0
- package/dist/templates/agent-manifests.js +302 -0
- package/dist/templates/agent-manifests.js.map +1 -0
- package/dist/templates/base-skills.d.ts +23 -0
- package/dist/templates/base-skills.d.ts.map +1 -0
- package/dist/templates/base-skills.js +477 -0
- package/dist/templates/base-skills.js.map +1 -0
- package/dist/templates/skill-creator-skill.d.ts +23 -0
- package/dist/templates/skill-creator-skill.d.ts.map +1 -0
- package/dist/templates/skill-creator-skill.js +235 -0
- package/dist/templates/skill-creator-skill.js.map +1 -0
- package/dist/templates/skill-references.d.ts +13 -0
- package/dist/templates/skill-references.d.ts.map +1 -0
- package/dist/templates/skill-references.js +280 -0
- package/dist/templates/skill-references.js.map +1 -0
- package/dist/templates/structure-templates.d.ts.map +1 -1
- package/dist/templates/structure-templates.js +20 -144
- package/dist/templates/structure-templates.js.map +1 -1
- package/dist/templates/task-conductor-skill.d.ts +1 -1
- package/dist/templates/task-conductor-skill.d.ts.map +1 -1
- package/dist/templates/task-conductor-skill.js +50 -22
- package/dist/templates/task-conductor-skill.js.map +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1,639 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { Document, isMap, parseDocument } from "yaml";
|
|
4
|
+
import { addMarketplace, approveHooks, claudeHome as resolveClaudeHome, createExtensions, describeContents, describeHookConfig, hookCount, hookDigest, personaBaseRole, personaModelTier, revokeHooks, marketplacePlugins, PluginError, readPluginStore, removeMarketplace, removePlugin, stagePlugin, } from "./extensions/index.js";
|
|
5
|
+
import { createWorkspaceTrustStore } from "../policy/index.js";
|
|
6
|
+
import { loadCanonicalStructure } from "./canonical.js";
|
|
7
|
+
import { CONFIG_FILE, extensionsConfigOf, isSynorchHome, loadRuntimeConfig, validateUserConfigText } from "./config.js";
|
|
8
|
+
/**
|
|
9
|
+
* K7 `syn skills`, `syn plugin`, `/skills` and `/plugins`: list skills and markdown commands with
|
|
10
|
+
* their source and state, turn one off or on (user configuration only; Claude's files are never
|
|
11
|
+
* touched), install / remove / enable / disable plugins and add marketplaces (Claude Code formats).
|
|
12
|
+
*/
|
|
13
|
+
export const SKILLS_HELP = `syn skills — skills and slash commands (Claude Code SKILL.md format)
|
|
14
|
+
|
|
15
|
+
Usage:
|
|
16
|
+
syn skills [list] [--json] Every skill and markdown command: source, state, description.
|
|
17
|
+
syn skills show <name> Where it comes from, what shadows it, its frontmatter.
|
|
18
|
+
syn skills enable|disable <name> Turn one on or off for Synorch (saved in your user config).
|
|
19
|
+
|
|
20
|
+
Sources (highest first on a name clash):
|
|
21
|
+
project .synorch/skills, .claude/skills, .agents/skills, .claude/commands, .synorch/commands
|
|
22
|
+
(repository content: used once the workspace is trusted)
|
|
23
|
+
user ~/.synorch/skills/<name>/SKILL.md, ~/.synorch/commands/<name>.md
|
|
24
|
+
plugin plugins installed with syn plugin install (as <plugin>:<name>)
|
|
25
|
+
claude ~/.claude/skills, ~/.claude/commands and plugins enabled in Claude Code
|
|
26
|
+
(skills.include_claude / plugins.include_claude: false turns them off)
|
|
27
|
+
builtin the Synorch skills
|
|
28
|
+
In a session every skill and command is also /<name> [args].
|
|
29
|
+
`;
|
|
30
|
+
export const PLUGIN_HELP = `syn plugin — plugins in the Claude Code plugin format
|
|
31
|
+
|
|
32
|
+
Usage:
|
|
33
|
+
syn plugin [list] [--json] Synorch and Claude Code plugins, what each contains.
|
|
34
|
+
syn plugin install <path|git-url|name@marketplace> [--yes] [--disabled]
|
|
35
|
+
Show what it contains, then install it into
|
|
36
|
+
~/.synorch/plugins (skills, commands, MCP servers).
|
|
37
|
+
syn plugin remove <name> Uninstall a Synorch plugin.
|
|
38
|
+
syn plugin enable|disable <name> Turn a plugin on or off for Synorch (Claude plugins:
|
|
39
|
+
name@marketplace; Claude's own settings stay as they are).
|
|
40
|
+
syn plugin marketplace add <git-url|path> Register a marketplace (.claude-plugin/marketplace.json).
|
|
41
|
+
syn plugin marketplace list|remove <name>
|
|
42
|
+
syn plugin show <name> Contents, hook commands and agents of one plugin.
|
|
43
|
+
syn plugin hooks [list] Hook sources and whether they run.
|
|
44
|
+
syn plugin hooks approve|revoke <name> Let a plugin's hooks run (or stop them); a changed
|
|
45
|
+
plugin needs a new approval.
|
|
46
|
+
syn plugin agents Plugin agents (orchestration worker personas).
|
|
47
|
+
|
|
48
|
+
Plugin hooks run commands on your machine: they run only after you approve them (install asks;
|
|
49
|
+
--allow-hooks approves at install). Claude Code plugins' hooks stay off until approved and never
|
|
50
|
+
run on Claude Code routes, where Claude runs them itself.
|
|
51
|
+
`;
|
|
52
|
+
export class ExtensionCommandError extends Error {
|
|
53
|
+
constructor(message) {
|
|
54
|
+
super(message);
|
|
55
|
+
this.name = "ExtensionCommandError";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// ---- user configuration --------------------------------------------------------------------------
|
|
59
|
+
async function readUserDocument(file) {
|
|
60
|
+
let text;
|
|
61
|
+
try {
|
|
62
|
+
text = await readFile(file, "utf8");
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
text = undefined;
|
|
66
|
+
}
|
|
67
|
+
const document = text === undefined ? new Document({}) : parseDocument(text);
|
|
68
|
+
if (document.errors.length > 0)
|
|
69
|
+
throw new ExtensionCommandError(`${file} is not valid YAML (${document.errors[0]?.message.split("\n")[0] ?? ""}); fix it with syn config edit`);
|
|
70
|
+
if (!isMap(document.contents))
|
|
71
|
+
document.contents = document.createNode({});
|
|
72
|
+
return document;
|
|
73
|
+
}
|
|
74
|
+
/** Adds `key` to (or removes it from) `skills.disabled` / `plugins.disabled`; returns the new settings. */
|
|
75
|
+
export async function setExtensionDisabled(home, block, key, disabled) {
|
|
76
|
+
const file = path.join(home, CONFIG_FILE);
|
|
77
|
+
const document = await readUserDocument(file);
|
|
78
|
+
const current = document.toJS()?.[block]?.disabled;
|
|
79
|
+
const list = new Set(Array.isArray(current) ? current : []);
|
|
80
|
+
if (disabled)
|
|
81
|
+
list.add(key);
|
|
82
|
+
else
|
|
83
|
+
list.delete(key);
|
|
84
|
+
if (list.size === 0) {
|
|
85
|
+
if (!document.hasIn([block, "disabled"]))
|
|
86
|
+
return extensionsConfigOf(document.toJS() ?? undefined);
|
|
87
|
+
document.deleteIn([block, "disabled"]);
|
|
88
|
+
const rest = document.getIn([block]);
|
|
89
|
+
if (isMap(rest) && rest.items.length === 0)
|
|
90
|
+
document.deleteIn([block]);
|
|
91
|
+
}
|
|
92
|
+
else
|
|
93
|
+
document.setIn([block, "disabled"], document.createNode([...list].sort()));
|
|
94
|
+
const text = document.toString({ lineWidth: 0 });
|
|
95
|
+
const parsed = validateUserConfigText(text, file);
|
|
96
|
+
await mkdir(home, { recursive: true });
|
|
97
|
+
const temporary = `${file}.${process.pid}.tmp`;
|
|
98
|
+
await writeFile(temporary, text, "utf8");
|
|
99
|
+
await rename(temporary, file);
|
|
100
|
+
return extensionsConfigOf(parsed);
|
|
101
|
+
}
|
|
102
|
+
// ---- formatting ----------------------------------------------------------------------------------
|
|
103
|
+
const STATE_LABEL = { active: "on", shadowed: "shadowed", disabled: "off", "needs-trust": "needs trust" };
|
|
104
|
+
function oneLine(text, width) {
|
|
105
|
+
const flat = text.replace(/\s+/g, " ").trim();
|
|
106
|
+
return flat.length <= width ? flat : `${flat.slice(0, width - 1)}…`;
|
|
107
|
+
}
|
|
108
|
+
export function describeSkills(statuses, sep = "·") {
|
|
109
|
+
if (statuses.length === 0)
|
|
110
|
+
return ["No skills or commands."];
|
|
111
|
+
const width = Math.min(34, Math.max(...statuses.map((status) => status.item.name.length + (status.item.kind === "command" ? 1 : 0))));
|
|
112
|
+
const lines = [];
|
|
113
|
+
for (const kind of ["skill", "command"]) {
|
|
114
|
+
const rows = statuses.filter((status) => status.item.kind === kind);
|
|
115
|
+
if (rows.length === 0)
|
|
116
|
+
continue;
|
|
117
|
+
const active = rows.filter((status) => status.state === "active").length;
|
|
118
|
+
lines.push(`${kind === "skill" ? "Skills" : "Commands"} ${sep} ${active} on of ${rows.length}`);
|
|
119
|
+
for (const status of rows) {
|
|
120
|
+
const name = kind === "command" ? `/${status.item.name}` : status.item.name;
|
|
121
|
+
const state = status.state === "shadowed" && status.shadowedBy !== undefined ? `shadowed by ${status.shadowedBy.source}` : STATE_LABEL[status.state];
|
|
122
|
+
lines.push(` ${name.padEnd(width + 2)}${status.item.source.padEnd(9)}${state.padEnd(20)}${oneLine(status.item.meta.description, 70)}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return lines;
|
|
126
|
+
}
|
|
127
|
+
export function describeSkill(name, statuses) {
|
|
128
|
+
const matches = statuses.filter((status) => status.item.name === name || status.item.name.toLowerCase() === name.toLowerCase());
|
|
129
|
+
if (matches.length === 0)
|
|
130
|
+
return [`No skill or command ${name}.`];
|
|
131
|
+
const lines = [];
|
|
132
|
+
for (const status of matches) {
|
|
133
|
+
const entry = status.item;
|
|
134
|
+
lines.push(`${entry.kind} ${entry.name} ${status.state === "active" ? "(on)" : `(${status.state === "shadowed" ? `shadowed by ${status.shadowedBy?.source ?? "?"}` : STATE_LABEL[status.state]})`}`);
|
|
135
|
+
lines.push(` source ${entry.source}${entry.plugin === undefined ? "" : ` (plugin ${entry.plugin})`}`);
|
|
136
|
+
lines.push(` location ${entry.location}`);
|
|
137
|
+
lines.push(` description ${oneLine(entry.meta.description, 200)}`);
|
|
138
|
+
if (entry.meta.whenToUse !== undefined)
|
|
139
|
+
lines.push(` when to use ${oneLine(entry.meta.whenToUse, 200)}`);
|
|
140
|
+
if (entry.meta.argumentHint !== undefined)
|
|
141
|
+
lines.push(` arguments ${entry.meta.argumentHint}`);
|
|
142
|
+
if (entry.meta.allowedTools.length > 0)
|
|
143
|
+
lines.push(` allowed-tools ${entry.meta.allowedTools.join(" ")} (informational: Synorch's permission mode decides)`);
|
|
144
|
+
if (!entry.meta.modelInvocable)
|
|
145
|
+
lines.push(" model never loads it on its own (disable-model-invocation)");
|
|
146
|
+
if (!entry.meta.userInvocable)
|
|
147
|
+
lines.push(" palette hidden (user-invocable: false)");
|
|
148
|
+
if (entry.claudeNative)
|
|
149
|
+
lines.push(" Claude Code loads it itself on Claude routes (not duplicated there)");
|
|
150
|
+
if (status.state === "needs-trust")
|
|
151
|
+
lines.push(" trust repository content: /trust (or syn trust) activates it");
|
|
152
|
+
}
|
|
153
|
+
return lines;
|
|
154
|
+
}
|
|
155
|
+
const HOOK_STATE_LABEL = {
|
|
156
|
+
active: "hooks approved (they run)",
|
|
157
|
+
pending: "hooks not approved (never run)",
|
|
158
|
+
changed: "hooks changed since you approved them (not run until approved again)",
|
|
159
|
+
};
|
|
160
|
+
function hookStateLine(source, key) {
|
|
161
|
+
if (source === undefined || source.origin === "user")
|
|
162
|
+
return undefined;
|
|
163
|
+
const hint = source.state === "active" ? `/plugins hooks revoke ${key}` : `/plugins hooks approve ${key}`;
|
|
164
|
+
return `${HOOK_STATE_LABEL[source.state]}${source.origin === "claude" ? "; never on Claude Code routes (Claude runs them)" : ""} · ${hint}`;
|
|
165
|
+
}
|
|
166
|
+
export function describePlugins(plugins, sep = "·", hooks = []) {
|
|
167
|
+
if (plugins.length === 0)
|
|
168
|
+
return ["No plugins. Install one: syn plugin install <path|git-url|name@marketplace>"];
|
|
169
|
+
const lines = [];
|
|
170
|
+
for (const plugin of plugins) {
|
|
171
|
+
const state = plugin.enabled ? "on" : plugin.shadowed ? "shadowed by the Synorch plugin" : plugin.offReason === "claude" ? "disabled in Claude Code" : "off in Synorch";
|
|
172
|
+
lines.push(`${plugin.key}${plugin.contents.version === undefined ? "" : ` ${plugin.contents.version}`} ${sep} ${plugin.origin === "claude" ? "claude" : "synorch"} ${sep} ${state}`);
|
|
173
|
+
if (plugin.contents.description !== "")
|
|
174
|
+
lines.push(` ${oneLine(plugin.contents.description, 100)}`);
|
|
175
|
+
for (const line of describeContents(plugin.contents))
|
|
176
|
+
lines.push(` ${line}`);
|
|
177
|
+
const hookLine = hookStateLine(hooks.find((source) => source.key === plugin.key), plugin.key);
|
|
178
|
+
if (hookLine !== undefined)
|
|
179
|
+
lines.push(` ${hookLine}`);
|
|
180
|
+
}
|
|
181
|
+
return lines;
|
|
182
|
+
}
|
|
183
|
+
/** `/plugins hooks`: every hook source (user configuration and plugins) and whether it runs. */
|
|
184
|
+
export function describeHookSources(sources) {
|
|
185
|
+
if (sources.length === 0)
|
|
186
|
+
return ["No hooks. Plugins may bring hooks/hooks.json; your own go under hooks: in ~/.synorch/config.yaml."];
|
|
187
|
+
const lines = [];
|
|
188
|
+
for (const source of sources) {
|
|
189
|
+
lines.push(`${source.key} ${source.origin === "user" ? "(your config: runs)" : `(${source.origin} plugin: ${HOOK_STATE_LABEL[source.state]})`}`);
|
|
190
|
+
for (const line of describeHookConfig(source.config))
|
|
191
|
+
lines.push(` ${line}`);
|
|
192
|
+
}
|
|
193
|
+
return lines;
|
|
194
|
+
}
|
|
195
|
+
/** `/agents`: plugin agents with their base role and model hint. */
|
|
196
|
+
export function describeAgents(agents) {
|
|
197
|
+
if (agents.length === 0)
|
|
198
|
+
return ["No plugin agents. A plugin's agents/*.md become worker personas the orchestrator can assign to a task."];
|
|
199
|
+
const lines = [`Plugin agents (worker personas) · ${agents.length}`];
|
|
200
|
+
for (const agent of agents) {
|
|
201
|
+
const tier = personaModelTier(agent.model);
|
|
202
|
+
lines.push(` ${agent.id.padEnd(32)}${personaBaseRole(agent).padEnd(12)}${(tier ?? "orchestrator's tier").padEnd(22)}${oneLine(agent.description, 70)}`);
|
|
203
|
+
}
|
|
204
|
+
lines.push("The orchestrator names one on a plan task (agent); its instructions are layered on that task's role.");
|
|
205
|
+
return lines;
|
|
206
|
+
}
|
|
207
|
+
function describeAgent(agent) {
|
|
208
|
+
const tier = personaModelTier(agent.model);
|
|
209
|
+
return [
|
|
210
|
+
`agent ${agent.id} (${agent.origin} plugin ${agent.plugin})`,
|
|
211
|
+
` file ${agent.file}`,
|
|
212
|
+
` description ${oneLine(agent.description, 200)}`,
|
|
213
|
+
` base role ${personaBaseRole(agent)}${agent.tools.length === 0 ? " (all tools)" : ` (tools: ${agent.tools.join(", ")})`}`,
|
|
214
|
+
` model ${agent.model ?? "inherit"}${tier === undefined ? "" : ` → tier ${tier} (your routes for that tier decide)`}`,
|
|
215
|
+
` instructions ${oneLine(agent.body, 200)}`,
|
|
216
|
+
];
|
|
217
|
+
}
|
|
218
|
+
function hookApprovalContext(source) {
|
|
219
|
+
return [
|
|
220
|
+
`Plugin ${source.key} (${source.origin === "claude" ? "installed in Claude Code" : "Synorch plugin"}) wants to run these commands on your machine:`,
|
|
221
|
+
...describeHookConfig(source.config).map((line) => ` ${line}`),
|
|
222
|
+
"They run in the workspace with your user permissions and environment (timeout 60 s by default, output capped).",
|
|
223
|
+
"A hook can block or narrow a tool call, never widen your permission mode.",
|
|
224
|
+
...(source.origin === "claude" ? ["On Claude Code routes they are never run by Synorch (Claude runs them itself)."] : []),
|
|
225
|
+
];
|
|
226
|
+
}
|
|
227
|
+
function claudeHomeOf(io) {
|
|
228
|
+
return io.claudeHome === null ? undefined : (io.claudeHome ?? resolveClaudeHome(io.env));
|
|
229
|
+
}
|
|
230
|
+
export async function standaloneExtensions(io, root) {
|
|
231
|
+
const config = await loadRuntimeConfig(io.home, root, [], { platform: io.platform, ...(io.discovery ?? {}) });
|
|
232
|
+
const canonical = await loadCanonicalStructure(root);
|
|
233
|
+
const trusted = createWorkspaceTrustStore(io.home, { platform: io.platform }).status(root).trusted;
|
|
234
|
+
return createExtensions({
|
|
235
|
+
home: io.home,
|
|
236
|
+
workspaceRoot: root,
|
|
237
|
+
env: io.env,
|
|
238
|
+
platform: io.platform,
|
|
239
|
+
claudeHome: claudeHomeOf(io),
|
|
240
|
+
settings: config.extensions,
|
|
241
|
+
trusted: () => trusted,
|
|
242
|
+
canonicalCatalog: canonical.skills,
|
|
243
|
+
canonical: { origin: canonical.origin, skills: canonical.skillEntries },
|
|
244
|
+
skipProjectSynorch: isSynorchHome(path.join(root, ".synorch"), io.home, io.platform),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
function statusJson(status) {
|
|
248
|
+
const entry = status.item;
|
|
249
|
+
return {
|
|
250
|
+
name: entry.name,
|
|
251
|
+
kind: entry.kind,
|
|
252
|
+
source: entry.source,
|
|
253
|
+
state: status.state,
|
|
254
|
+
...(status.shadowedBy === undefined ? {} : { shadowed_by: status.shadowedBy.source }),
|
|
255
|
+
description: entry.meta.description,
|
|
256
|
+
location: entry.location,
|
|
257
|
+
...(entry.plugin === undefined ? {} : { plugin: entry.plugin }),
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
/** `syn skills …`; returns the exit code. */
|
|
261
|
+
export async function skillsCommand(args, target, json, io) {
|
|
262
|
+
const root = path.resolve(io.cwd, target ?? ".");
|
|
263
|
+
const [verb = "list", name] = args;
|
|
264
|
+
try {
|
|
265
|
+
switch (verb) {
|
|
266
|
+
case "list": {
|
|
267
|
+
const extensions = await standaloneExtensions(io, root);
|
|
268
|
+
const statuses = extensions.statuses();
|
|
269
|
+
if (json)
|
|
270
|
+
io.stdout(`${JSON.stringify({ items: statuses.map(statusJson), problems: extensions.problems() }, null, 2)}\n`);
|
|
271
|
+
else
|
|
272
|
+
io.stdout(`${[...describeSkills(statuses), ...extensions.problems().map((problem) => `warning: ${problem}`)].join("\n")}\n`);
|
|
273
|
+
return 0;
|
|
274
|
+
}
|
|
275
|
+
case "show": {
|
|
276
|
+
if (name === undefined)
|
|
277
|
+
throw new ExtensionCommandError("syn skills show <name>");
|
|
278
|
+
const extensions = await standaloneExtensions(io, root);
|
|
279
|
+
io.stdout(`${describeSkill(name, extensions.statuses()).join("\n")}\n`);
|
|
280
|
+
return 0;
|
|
281
|
+
}
|
|
282
|
+
case "enable":
|
|
283
|
+
case "disable": {
|
|
284
|
+
if (name === undefined)
|
|
285
|
+
throw new ExtensionCommandError(`syn skills ${verb} <name>`);
|
|
286
|
+
await setExtensionDisabled(io.home, "skills", name, verb === "disable");
|
|
287
|
+
io.stdout(`${name} is ${verb === "disable" ? "off" : "on"} for Synorch (${path.join(io.home, CONFIG_FILE)}).\n`);
|
|
288
|
+
return 0;
|
|
289
|
+
}
|
|
290
|
+
default:
|
|
291
|
+
throw new ExtensionCommandError(`Unknown skills sub-command: ${verb}. Expected list, show, enable or disable.`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
if (error instanceof ExtensionCommandError || error instanceof PluginError) {
|
|
296
|
+
io.stderr(`Error: ${error.message}\n`);
|
|
297
|
+
return 2;
|
|
298
|
+
}
|
|
299
|
+
throw error;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/** `syn plugin …`; returns the exit code. */
|
|
303
|
+
export async function pluginCommand(args, target, json, io) {
|
|
304
|
+
const root = path.resolve(io.cwd, target ?? ".");
|
|
305
|
+
const flags = new Set(args.filter((arg) => arg.startsWith("--")));
|
|
306
|
+
const words = args.filter((arg) => !arg.startsWith("--"));
|
|
307
|
+
const [verb = "list", name, extra] = words;
|
|
308
|
+
const options = { home: io.home, cwd: io.cwd, env: io.env, ...(io.git === undefined ? {} : { git: io.git }), ...(claudeHomeOf(io) === undefined ? {} : { claudeHome: claudeHomeOf(io) }) };
|
|
309
|
+
try {
|
|
310
|
+
switch (verb) {
|
|
311
|
+
case "list": {
|
|
312
|
+
const extensions = await standaloneExtensions(io, root);
|
|
313
|
+
const plugins = extensions.state().plugins;
|
|
314
|
+
if (json)
|
|
315
|
+
io.stdout(`${JSON.stringify(plugins.map((plugin) => ({ key: plugin.key, origin: plugin.origin, enabled: plugin.enabled, version: plugin.contents.version, root: plugin.contents.root, skills: plugin.contents.skills.map((skill) => skill.name), commands: plugin.contents.commands.map((command) => command.name), mcp_servers: Object.keys(plugin.contents.mcpServers), agents: plugin.contents.agents, hooks: plugin.contents.hooks })), null, 2)}\n`);
|
|
316
|
+
else
|
|
317
|
+
io.stdout(`${describePlugins(plugins, "·", extensions.hooks.sources()).join("\n")}\n`);
|
|
318
|
+
return 0;
|
|
319
|
+
}
|
|
320
|
+
case "show": {
|
|
321
|
+
if (name === undefined)
|
|
322
|
+
throw new ExtensionCommandError("syn plugin show <name>");
|
|
323
|
+
const extensions = await standaloneExtensions(io, root);
|
|
324
|
+
const plugin = extensions.state().plugins.find((entry) => entry.key === name || entry.contents.name === name);
|
|
325
|
+
if (plugin === undefined)
|
|
326
|
+
throw new ExtensionCommandError(`No plugin ${name} (syn plugin list).`);
|
|
327
|
+
io.stdout(`${[...describePlugins([plugin], "·", extensions.hooks.sources()), ...plugin.contents.agentDefs.length === 0 ? [] : ["", ...describeAgents(extensions.personas.list().filter((agent) => agent.plugin === plugin.key))]].join("\n")}\n`);
|
|
328
|
+
return 0;
|
|
329
|
+
}
|
|
330
|
+
case "agents": {
|
|
331
|
+
const extensions = await standaloneExtensions(io, root);
|
|
332
|
+
io.stdout(`${describeAgents(extensions.personas.list()).join("\n")}\n`);
|
|
333
|
+
return 0;
|
|
334
|
+
}
|
|
335
|
+
case "hooks": {
|
|
336
|
+
const action = name ?? "list";
|
|
337
|
+
const extensions = await standaloneExtensions(io, root);
|
|
338
|
+
if (action === "list") {
|
|
339
|
+
io.stdout(`${describeHookSources(extensions.hooks.sources()).join("\n")}\n`);
|
|
340
|
+
return 0;
|
|
341
|
+
}
|
|
342
|
+
if (action !== "approve" && action !== "revoke")
|
|
343
|
+
throw new ExtensionCommandError(`Unknown hooks action: ${action}. Expected list, approve or revoke.`);
|
|
344
|
+
if (extra === undefined)
|
|
345
|
+
throw new ExtensionCommandError(`syn plugin hooks ${action} <name>`);
|
|
346
|
+
if (action === "revoke") {
|
|
347
|
+
io.stdout((await revokeHooks(io.home, extra)) ? `Hooks of ${extra} no longer run.\n` : `Hooks of ${extra} were not approved.\n`);
|
|
348
|
+
return 0;
|
|
349
|
+
}
|
|
350
|
+
const source = extensions.hooks.sources().find((entry) => entry.key === extra && entry.origin !== "user");
|
|
351
|
+
if (source === undefined)
|
|
352
|
+
throw new ExtensionCommandError(`${extra} is not an enabled plugin with hooks (syn plugin hooks list).`);
|
|
353
|
+
io.stdout(`${hookApprovalContext(source).join("\n")}\n`);
|
|
354
|
+
let proceed = flags.has("--yes");
|
|
355
|
+
if (!proceed && io.confirm !== undefined)
|
|
356
|
+
proceed = await io.confirm(`Let ${extra}'s hooks run?`);
|
|
357
|
+
if (!proceed) {
|
|
358
|
+
io.stdout(io.confirm === undefined ? "Not approved: pass --yes to approve without a question.\n" : "Not approved.\n");
|
|
359
|
+
return io.confirm === undefined ? 2 : 0;
|
|
360
|
+
}
|
|
361
|
+
await approveHooks(io.home, extra, source.digest);
|
|
362
|
+
io.stdout(`Hooks of ${extra} approved; they run from the next session (in a running session: /plugins hooks approve).\n`);
|
|
363
|
+
return 0;
|
|
364
|
+
}
|
|
365
|
+
case "install": {
|
|
366
|
+
if (name === undefined)
|
|
367
|
+
throw new ExtensionCommandError("syn plugin install <path|git-url|name@marketplace>");
|
|
368
|
+
const staged = await stagePlugin(name, options);
|
|
369
|
+
io.stdout(`${previewLines(staged).join("\n")}\n`);
|
|
370
|
+
let proceed = flags.has("--yes");
|
|
371
|
+
if (!proceed && io.confirm !== undefined)
|
|
372
|
+
proceed = await io.confirm(`Install ${staged.contents.name}?`);
|
|
373
|
+
if (!proceed) {
|
|
374
|
+
await staged.discard();
|
|
375
|
+
io.stdout(io.confirm === undefined ? "Not installed: pass --yes to install without a question.\n" : "Not installed.\n");
|
|
376
|
+
return io.confirm === undefined ? 2 : 0;
|
|
377
|
+
}
|
|
378
|
+
const record = await staged.commit();
|
|
379
|
+
await setExtensionDisabled(io.home, "plugins", record.name, flags.has("--disabled"));
|
|
380
|
+
io.stdout(`Installed ${record.name} in ${record.dir}${flags.has("--disabled") ? " (off: syn plugin enable " + record.name + ")" : ""}.\n`);
|
|
381
|
+
if (hookCount(staged.contents.hookConfig) > 0) {
|
|
382
|
+
let allow = flags.has("--allow-hooks");
|
|
383
|
+
if (!allow && !flags.has("--yes") && io.confirm !== undefined)
|
|
384
|
+
allow = await io.confirm(`Let ${record.name}'s hooks run (the commands listed above)?`);
|
|
385
|
+
if (allow)
|
|
386
|
+
await approveHooks(io.home, record.name, hookDigest(staged.contents.hookConfig, record.dir));
|
|
387
|
+
io.stdout(allow ? "Its hooks are approved.\n" : `Its hooks do not run until you approve them: syn plugin hooks approve ${record.name}\n`);
|
|
388
|
+
}
|
|
389
|
+
return 0;
|
|
390
|
+
}
|
|
391
|
+
case "remove":
|
|
392
|
+
case "uninstall": {
|
|
393
|
+
if (name === undefined)
|
|
394
|
+
throw new ExtensionCommandError("syn plugin remove <name>");
|
|
395
|
+
const removed = await removePlugin(io.home, name);
|
|
396
|
+
if (removed === undefined)
|
|
397
|
+
throw new ExtensionCommandError(`${name} is not a Synorch plugin (syn plugin list); a Claude plugin is turned off with syn plugin disable <name@marketplace>`);
|
|
398
|
+
await setExtensionDisabled(io.home, "plugins", name, false);
|
|
399
|
+
io.stdout(`Removed ${name}.\n`);
|
|
400
|
+
return 0;
|
|
401
|
+
}
|
|
402
|
+
case "enable":
|
|
403
|
+
case "disable": {
|
|
404
|
+
if (name === undefined)
|
|
405
|
+
throw new ExtensionCommandError(`syn plugin ${verb} <name>`);
|
|
406
|
+
await setExtensionDisabled(io.home, "plugins", name, verb === "disable");
|
|
407
|
+
io.stdout(`${name} is ${verb === "disable" ? "off" : "on"} for Synorch.\n`);
|
|
408
|
+
return 0;
|
|
409
|
+
}
|
|
410
|
+
case "marketplace": {
|
|
411
|
+
const action = name ?? "list";
|
|
412
|
+
if (action === "add") {
|
|
413
|
+
if (extra === undefined)
|
|
414
|
+
throw new ExtensionCommandError("syn plugin marketplace add <git-url|path>");
|
|
415
|
+
const added = await addMarketplace(extra, options);
|
|
416
|
+
io.stdout(`Added marketplace ${added.marketplace.name} (${added.plugins.length} plugin${added.plugins.length === 1 ? "" : "s"}: ${added.plugins.join(", ") || "none"}).\nInstall one: syn plugin install <name>@${added.marketplace.name}\n`);
|
|
417
|
+
return 0;
|
|
418
|
+
}
|
|
419
|
+
if (action === "remove") {
|
|
420
|
+
if (extra === undefined)
|
|
421
|
+
throw new ExtensionCommandError("syn plugin marketplace remove <name>");
|
|
422
|
+
if (!(await removeMarketplace(io.home, extra)))
|
|
423
|
+
throw new ExtensionCommandError(`No marketplace ${extra}.`);
|
|
424
|
+
io.stdout(`Removed marketplace ${extra}.\n`);
|
|
425
|
+
return 0;
|
|
426
|
+
}
|
|
427
|
+
if (action === "list") {
|
|
428
|
+
const store = await readPluginStore(io.home);
|
|
429
|
+
if (store.marketplaces.length === 0)
|
|
430
|
+
io.stdout("No marketplaces. Add one: syn plugin marketplace add <git-url|path>\n");
|
|
431
|
+
for (const market of store.marketplaces) {
|
|
432
|
+
const plugins = await marketplacePlugins(market.dir);
|
|
433
|
+
io.stdout(`${market.name} · ${market.source}\n${plugins.map((plugin) => ` ${plugin.name}${plugin.description === "" ? "" : ` — ${oneLine(plugin.description, 90)}`}`).join("\n")}\n`);
|
|
434
|
+
}
|
|
435
|
+
return 0;
|
|
436
|
+
}
|
|
437
|
+
throw new ExtensionCommandError(`Unknown marketplace action: ${action}. Expected add, list or remove.`);
|
|
438
|
+
}
|
|
439
|
+
default:
|
|
440
|
+
throw new ExtensionCommandError(`Unknown plugin sub-command: ${verb}. Expected list, show, install, remove, enable, disable, hooks, agents or marketplace.`);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
catch (error) {
|
|
444
|
+
if (error instanceof ExtensionCommandError || error instanceof PluginError) {
|
|
445
|
+
io.stderr(`Error: ${error.message}\n`);
|
|
446
|
+
return 2;
|
|
447
|
+
}
|
|
448
|
+
throw error;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
function previewLines(staged) {
|
|
452
|
+
const contents = staged.contents;
|
|
453
|
+
return [`Plugin ${contents.name}${contents.version === undefined ? "" : ` ${contents.version}`} (${staged.source})`, ...(contents.description === "" ? [] : [` ${oneLine(contents.description, 100)}`]), ...describeContents(contents).map((line) => ` ${line}`)];
|
|
454
|
+
}
|
|
455
|
+
/** `/skills [list | show <name> | enable <name> | disable <name>]`. */
|
|
456
|
+
export async function runSkillsSlash(host, argument) {
|
|
457
|
+
const [verb = "list", name] = argument.trim().split(/\s+/).filter((word) => word !== "");
|
|
458
|
+
const extensions = host.extensions;
|
|
459
|
+
if (verb === "list") {
|
|
460
|
+
host.print([...describeSkills(extensions.statuses(), host.sep), ...extensions.problems().map((problem) => `warning: ${problem}`), `/<name> [args] runs one ${host.sep} /skills show|enable|disable <name> ${host.sep} /plugins`]);
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
463
|
+
if (name === undefined) {
|
|
464
|
+
host.print([`/skills ${verb} <name>`]);
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
if (verb === "show") {
|
|
468
|
+
host.print(describeSkill(name, extensions.statuses()));
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
if (verb === "enable" || verb === "disable") {
|
|
472
|
+
const known = extensions.statuses().some((status) => status.item.name === name);
|
|
473
|
+
if (!known) {
|
|
474
|
+
host.print([`No skill or command ${name}; /skills lists them.`]);
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
const settings = await setExtensionDisabled(host.home, "skills", name, verb === "disable");
|
|
478
|
+
await extensions.reload(settings);
|
|
479
|
+
await host.changed();
|
|
480
|
+
host.print([`${name} is ${verb === "disable" ? "off" : "on"} (saved in your user config).`]);
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
host.print(["/skills [list | show <name> | enable <name> | disable <name>]"]);
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Asks in the choice modal whether a plugin's hooks may run (each command shown); an approval
|
|
487
|
+
* stores the digest of the definitions, so a changed plugin asks again. Returns whether approved.
|
|
488
|
+
*/
|
|
489
|
+
export async function askHookApproval(host, source) {
|
|
490
|
+
const answer = await host.choose({
|
|
491
|
+
question: source.state === "changed" ? `The hooks of ${source.key} changed. Let them run?` : `Let the hooks of ${source.key} run?`,
|
|
492
|
+
header: "Hooks",
|
|
493
|
+
context: hookApprovalContext(source),
|
|
494
|
+
options: [
|
|
495
|
+
{ label: "Allow", description: "these commands run on the listed events until the plugin changes" },
|
|
496
|
+
{ label: "Not now", description: "they do not run; /plugins hooks approve asks again", recommended: true },
|
|
497
|
+
],
|
|
498
|
+
allowOther: false,
|
|
499
|
+
escapeLabel: "not now",
|
|
500
|
+
tone: "attention",
|
|
501
|
+
});
|
|
502
|
+
if (answer?.kind !== "selected" || answer.indices[0] !== 0)
|
|
503
|
+
return false;
|
|
504
|
+
await approveHooks(host.home, source.key, source.digest);
|
|
505
|
+
await host.extensions.reload();
|
|
506
|
+
return true;
|
|
507
|
+
}
|
|
508
|
+
/** `/plugins [list | show <name> | install <spec> | remove <name> | enable <name> | disable <name> | hooks [approve|revoke <name>] | agents]`. */
|
|
509
|
+
export async function runPluginsSlash(host, argument) {
|
|
510
|
+
const [verb = "list", name, extra] = argument.trim().split(/\s+/).filter((word) => word !== "");
|
|
511
|
+
const extensions = host.extensions;
|
|
512
|
+
const options = { home: host.home, cwd: host.workspaceRoot, env: host.env, ...(extensions.claudeHome === undefined ? {} : { claudeHome: extensions.claudeHome }) };
|
|
513
|
+
switch (verb) {
|
|
514
|
+
case "list":
|
|
515
|
+
host.print([...describePlugins(extensions.state().plugins, host.sep, extensions.hooks.sources()), `/plugins show|enable|disable|remove <name> ${host.sep} /plugins install <spec> ${host.sep} /plugins hooks ${host.sep} /agents`]);
|
|
516
|
+
return;
|
|
517
|
+
case "show": {
|
|
518
|
+
const plugin = extensions.state().plugins.find((entry) => entry.key === name || entry.contents.name === name);
|
|
519
|
+
if (plugin === undefined) {
|
|
520
|
+
host.print([name === undefined ? "/plugins show <name>" : `No plugin ${name}; /plugins lists them.`]);
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
const agents = extensions.personas.list().filter((agent) => agent.plugin === plugin.key);
|
|
524
|
+
host.print([...describePlugins([plugin], host.sep, extensions.hooks.sources()), ...(agents.length === 0 ? [] : ["", ...describeAgents(agents)])]);
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
case "agents": {
|
|
528
|
+
const agent = name === "show" && extra !== undefined ? extensions.personas.find(extra) : undefined;
|
|
529
|
+
if (name === "show")
|
|
530
|
+
host.print(agent === undefined ? [`No plugin agent ${extra ?? ""}; /agents lists them.`] : describeAgent(agent));
|
|
531
|
+
else
|
|
532
|
+
host.print(describeAgents(extensions.personas.list()));
|
|
533
|
+
return;
|
|
534
|
+
}
|
|
535
|
+
case "hooks": {
|
|
536
|
+
const action = name ?? "list";
|
|
537
|
+
if (action === "list") {
|
|
538
|
+
host.print([...describeHookSources(extensions.hooks.sources()), `/plugins hooks approve|revoke <plugin>`]);
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
541
|
+
if ((action !== "approve" && action !== "revoke") || extra === undefined) {
|
|
542
|
+
host.print(["/plugins hooks [list | approve <plugin> | revoke <plugin>]"]);
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
if (action === "revoke") {
|
|
546
|
+
const revoked = await revokeHooks(host.home, extra);
|
|
547
|
+
await extensions.reload();
|
|
548
|
+
host.print([revoked ? `Hooks of ${extra} no longer run.` : `Hooks of ${extra} were not approved.`]);
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
551
|
+
const source = extensions.hooks.sources().find((entry) => entry.key === extra && entry.origin !== "user");
|
|
552
|
+
if (source === undefined) {
|
|
553
|
+
host.print([`${extra} is not an enabled plugin with hooks; /plugins hooks lists them.`]);
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
host.print([(await askHookApproval(host, source)) ? `Hooks of ${extra} approved; they run from now on.` : `Hooks of ${extra} stay off.`]);
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
case "install": {
|
|
560
|
+
if (name === undefined) {
|
|
561
|
+
host.print(["/plugins install <path|git-url|name@marketplace>"]);
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
host.print([`Fetching ${name}…`]);
|
|
565
|
+
let staged;
|
|
566
|
+
try {
|
|
567
|
+
staged = await stagePlugin(name, options);
|
|
568
|
+
}
|
|
569
|
+
catch (error) {
|
|
570
|
+
host.print([`Not installed: ${error instanceof Error ? error.message : String(error)}`]);
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
const answer = await host.choose({
|
|
574
|
+
question: `Install plugin ${staged.contents.name}?`,
|
|
575
|
+
header: "Plugin",
|
|
576
|
+
context: previewLines(staged),
|
|
577
|
+
options: [
|
|
578
|
+
{ label: "Install and enable", description: "its skills, commands and MCP servers become available", recommended: true },
|
|
579
|
+
{ label: "Install, keep it off", description: "/plugins enable turns it on later" },
|
|
580
|
+
{ label: "Cancel", description: "nothing is installed" },
|
|
581
|
+
],
|
|
582
|
+
allowOther: false,
|
|
583
|
+
escapeLabel: "cancel",
|
|
584
|
+
tone: "neutral",
|
|
585
|
+
});
|
|
586
|
+
const index = answer?.kind === "selected" ? answer.indices[0] : undefined;
|
|
587
|
+
if (index !== 0 && index !== 1) {
|
|
588
|
+
await staged.discard();
|
|
589
|
+
host.print(["Not installed."]);
|
|
590
|
+
return;
|
|
591
|
+
}
|
|
592
|
+
const record = await staged.commit();
|
|
593
|
+
const settings = await setExtensionDisabled(host.home, "plugins", record.name, index === 1);
|
|
594
|
+
await extensions.reload(settings);
|
|
595
|
+
await host.changed();
|
|
596
|
+
host.print([`Installed ${record.name}${index === 1 ? " (off)" : ""}.`]);
|
|
597
|
+
const hookSource = extensions.hooks.sources().find((entry) => entry.key === record.name && entry.origin === "synorch");
|
|
598
|
+
if (hookSource !== undefined && hookSource.state !== "active")
|
|
599
|
+
host.print([(await askHookApproval(host, hookSource)) ? "Its hooks are approved." : `Its hooks stay off (/plugins hooks approve ${record.name}).`]);
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
case "remove":
|
|
603
|
+
case "uninstall": {
|
|
604
|
+
if (name === undefined) {
|
|
605
|
+
host.print(["/plugins remove <name>"]);
|
|
606
|
+
return;
|
|
607
|
+
}
|
|
608
|
+
const removed = await removePlugin(host.home, name);
|
|
609
|
+
if (removed === undefined) {
|
|
610
|
+
host.print([`${name} is not a Synorch plugin; a Claude plugin is turned off with /plugins disable <name@marketplace>.`]);
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
const settings = await setExtensionDisabled(host.home, "plugins", name, false);
|
|
614
|
+
await extensions.reload(settings);
|
|
615
|
+
await host.changed();
|
|
616
|
+
host.print([`Removed ${name}.`]);
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
case "enable":
|
|
620
|
+
case "disable": {
|
|
621
|
+
if (name === undefined) {
|
|
622
|
+
host.print([`/plugins ${verb} <name>`]);
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
if (!extensions.state().plugins.some((plugin) => plugin.key === name)) {
|
|
626
|
+
host.print([`No plugin ${name}; /plugins lists them.`]);
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
const settings = await setExtensionDisabled(host.home, "plugins", name, verb === "disable");
|
|
630
|
+
await extensions.reload(settings);
|
|
631
|
+
await host.changed();
|
|
632
|
+
host.print([`${name} is ${verb === "disable" ? "off" : "on"} for Synorch.`]);
|
|
633
|
+
return;
|
|
634
|
+
}
|
|
635
|
+
default:
|
|
636
|
+
host.print(["/plugins [list | show <name> | install <spec> | remove <name> | enable <name> | disable <name> | hooks | agents]"]);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
//# sourceMappingURL=extensions-command.js.map
|