@weavecode/weave 0.1.7 → 0.1.9
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/node_modules/@modelcontextprotocol/sdk/node_modules/@hono/node-server/dist/index.cjs +31 -6
- package/node_modules/@modelcontextprotocol/sdk/node_modules/@hono/node-server/dist/index.mjs +31 -6
- package/node_modules/@modelcontextprotocol/sdk/node_modules/@hono/node-server/package.json +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/dist/index.cjs +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/dist/index.mjs +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/node_modules/ip-address/README.md +39 -39
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/node_modules/ip-address/dist/ipv6.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/node_modules/ip-address/package.json +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/package.json +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/adapter/bun/websocket.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/context.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/helper/css/common.js +3 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/hono-base.js +4 -10
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/hono.js +0 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/csrf/index.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/mount/index.js +4 -4
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +13 -11
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +4 -4
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +39 -51
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +15 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/utils/jwt/jwt.js +2 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/utils/mount.js +35 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/utils/url.js +10 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/validator/validator.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/context.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/helper/css/common.js +3 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/hono-base.js +4 -10
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/hono.js +0 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/basic-auth/index.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/bearer-auth/index.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/csrf/index.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/jwk/jwk.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/jwt/jwt.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/language/language.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/mount/index.js +4 -4
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/reg-exp-router/node.js +13 -11
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +5 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/reg-exp-router/router.js +40 -52
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/reg-exp-router/trie.js +15 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/middleware/mount/index.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +3 -3
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/utils/mount.d.ts +4 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/utils/url.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/utils/jwt/jwt.js +2 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/utils/mount.js +34 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/utils/url.js +10 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/validator/validator.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/package.json +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwks/remote.js +3 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/deflate.js +2 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +2 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/package.json +1 -1
- package/node_modules/@weavecode/cli/dist/cli.js +4 -4
- package/node_modules/@weavecode/cli/dist/commands/chpass.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/daemon-auth.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/daemon.js +2 -2
- package/node_modules/@weavecode/cli/dist/commands/dashboard.js +2 -2
- package/node_modules/@weavecode/cli/dist/commands/doctor.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/init.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/scan.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/status.js +2 -2
- package/node_modules/@weavecode/cli/dist/commands/uninstall.js +1 -1
- package/node_modules/@weavecode/cli/dist/i18n/dict/en.js +3 -3
- package/node_modules/@weavecode/cli/dist/i18n/dict/zh.d.ts +7 -0
- package/node_modules/@weavecode/cli/dist/i18n/dict/zh.js +3 -3
- package/node_modules/@weavecode/cli/dist/i18n/index.js +1 -1
- package/node_modules/@weavecode/cli/dist/i18n/t.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/claudemd-gen.js +5 -5
- package/node_modules/@weavecode/cli/dist/init/executor.js +3 -3
- package/node_modules/@weavecode/cli/dist/init/git-commit.js +2 -2
- package/node_modules/@weavecode/cli/dist/init/git-exclude.d.ts +20 -0
- package/node_modules/@weavecode/cli/dist/init/git-exclude.js +7 -0
- package/node_modules/@weavecode/cli/dist/init/harnesses/claude.js +7 -7
- package/node_modules/@weavecode/cli/dist/init/harnesses/codex.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/instruction-files.d.ts +14 -0
- package/node_modules/@weavecode/cli/dist/init/instruction-files.js +1 -0
- package/node_modules/@weavecode/cli/dist/init/instruction-link.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/plugin-templates.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/prompt.js +4 -4
- package/node_modules/@weavecode/cli/dist/init/provision.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/uninstall.js +6 -6
- package/node_modules/@weavecode/cli/dist/init/wiring.js +1 -1
- package/node_modules/@weavecode/cli/dist/parser.js +1 -1
- package/node_modules/@weavecode/cli/dist/statusline/ansi.js +1 -1
- package/node_modules/@weavecode/cli/package.json +5 -5
- package/node_modules/@weavecode/core/dist/harness-checks.js +1 -1
- package/node_modules/@weavecode/core/dist/harness.d.ts +115 -0
- package/node_modules/@weavecode/core/dist/harness.js +1 -1
- package/node_modules/@weavecode/core/dist/index.d.ts +1 -1
- package/node_modules/@weavecode/core/dist/index.js +1 -1
- package/node_modules/@weavecode/core/dist/platform.js +1 -1
- package/node_modules/@weavecode/core/dist/types.d.ts +4 -4
- package/node_modules/@weavecode/core/dist/types.js +1 -1
- package/node_modules/@weavecode/core/dist/utils/fs.js +1 -1
- package/node_modules/@weavecode/core/package.json +1 -1
- package/node_modules/@weavecode/harness/dist/claude/assets.js +3 -3
- package/node_modules/@weavecode/harness/dist/claude/capture.js +9 -9
- package/node_modules/@weavecode/harness/dist/claude/commands.d.ts +2 -0
- package/node_modules/@weavecode/harness/dist/claude/commands.js +3 -2
- package/node_modules/@weavecode/harness/dist/claude/config.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/detect.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/edits.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/event-source.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/images.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/index.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/liveness.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/mcp-gen.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/messaging.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/model-aliases.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/narration.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/peers.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/plan.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/plugins.js +4 -4
- package/node_modules/@weavecode/harness/dist/claude/prompt-inbox.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/prompt.js +3 -3
- package/node_modules/@weavecode/harness/dist/claude/questions.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/resume.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/rewind.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/settings-gen.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/side-question.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/statusline/generator.d.ts +6 -0
- package/node_modules/@weavecode/harness/dist/claude/statusline/generator.js +21 -14
- package/node_modules/@weavecode/harness/dist/claude/statusline/git-cache.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/statusline/surface.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/transcript-cursor.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/transcript.js +7 -7
- package/node_modules/@weavecode/harness/dist/codex/assets.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/capture.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/commands.js +4 -4
- package/node_modules/@weavecode/harness/dist/codex/config.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/detect.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/event-source.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/images.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/index.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/liveness.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/mcp.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/messaging.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/narration.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/plugin-state.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/plugins.js +3 -3
- package/node_modules/@weavecode/harness/dist/codex/provision.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/questions.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/rollout.js +5 -5
- package/node_modules/@weavecode/harness/dist/codex/side-question.js +4 -4
- package/node_modules/@weavecode/harness/dist/codex/titles.js +4 -4
- package/node_modules/@weavecode/harness/dist/codex/toml.js +13 -13
- package/node_modules/@weavecode/harness/dist/codex/transcript.js +2 -2
- package/node_modules/@weavecode/harness/dist/driver.d.ts +6 -0
- package/node_modules/@weavecode/harness/dist/driver.js +1 -1
- package/node_modules/@weavecode/harness/dist/init/generated.js +2 -2
- package/node_modules/@weavecode/harness/dist/init/pipeline.js +1 -1
- package/node_modules/@weavecode/harness/dist/registry-wiring.js +1 -1
- package/node_modules/@weavecode/harness/dist/shared/install-link.js +1 -1
- package/node_modules/@weavecode/harness/dist/shared/json-cap.js +1 -1
- package/node_modules/@weavecode/harness/package.json +2 -2
- package/node_modules/@weavecode/server/dist/config/dotted.js +1 -1
- package/node_modules/@weavecode/server/dist/config/profiles.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/ai-config.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/ai-context.js +6 -6
- package/node_modules/@weavecode/server/dist/daemon/ai-routes.js +4 -4
- package/node_modules/@weavecode/server/dist/daemon/api-log.js +3 -3
- package/node_modules/@weavecode/server/dist/daemon/auth-routes.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/auto-start.js +3 -3
- package/node_modules/@weavecode/server/dist/daemon/capture-routes.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/config-routes.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/cron.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/dashboard-auth.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/dashboard-pusher.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/decision-config.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/dev-entry.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/entry.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/fs-browser.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/hook-pipeline.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/hooks-routes.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/http.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/liveness.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/mcp-orchestration.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/narration-watcher.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/opener/backend-ghostty.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/backend-iterm.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/backend-konsole.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/opener/backend-terminal-app.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/backend-wezterm.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/backend-wt.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/backend.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/pty-terminals.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/shared.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/wezterm-mux.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/wt.js +3 -3
- package/node_modules/@weavecode/server/dist/daemon/opener.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/pet-seed.d.ts +4 -0
- package/node_modules/@weavecode/server/dist/daemon/pet-seed.js +2 -0
- package/node_modules/@weavecode/server/dist/daemon/pet-window.d.ts +17 -0
- package/node_modules/@weavecode/server/dist/daemon/pet-window.js +2 -0
- package/node_modules/@weavecode/server/dist/daemon/port.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/project-files.d.ts +1 -1
- package/node_modules/@weavecode/server/dist/daemon/project-files.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/project-harnesses.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/project-updates-refresher.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/prompt-images.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/hooks-admin.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/installations.d.ts +29 -0
- package/node_modules/@weavecode/server/dist/daemon/routes/installations.js +1 -0
- package/node_modules/@weavecode/server/dist/daemon/routes/market.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/orchestration.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/path-refs.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/pets.d.ts +3 -0
- package/node_modules/@weavecode/server/dist/daemon/routes/pets.js +1 -0
- package/node_modules/@weavecode/server/dist/daemon/routes/project-files.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/projects.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/search.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/session-control.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/session-insights.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/settings-statusline.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/uploads.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/visualizations.js +2 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/watches.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/server.d.ts +4 -0
- package/node_modules/@weavecode/server/dist/daemon/server.js +8 -8
- package/node_modules/@weavecode/server/dist/daemon/session-open.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/session-probe.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/settings.d.ts +21 -0
- package/node_modules/@weavecode/server/dist/daemon/settings.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/snapshot-refresher.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/sse-hub.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/start.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/state.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/static.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/terminal-topology-refresher.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/tls.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/toolkit-routes.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/upload-sessions.js +1 -1
- package/node_modules/@weavecode/server/dist/db/db.d.ts +4 -1
- package/node_modules/@weavecode/server/dist/db/db.js +2 -2
- package/node_modules/@weavecode/server/dist/db/layout.d.ts +5 -0
- package/node_modules/@weavecode/server/dist/db/layout.js +2 -1
- package/node_modules/@weavecode/server/dist/db/paths.d.ts +9 -0
- package/node_modules/@weavecode/server/dist/db/paths.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/answer-keys.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/dashboard-rate.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/decision-judge.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/ack-gate.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/channels.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/keys.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/queue.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/relay.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/send.js +2 -2
- package/node_modules/@weavecode/server/dist/hooks/delivery/views.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/dispatcher.js +6 -6
- package/node_modules/@weavecode/server/dist/hooks/edge-extract.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/handlers/webhook.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/headless-runner.js +2 -2
- package/node_modules/@weavecode/server/dist/hooks/inbox-socket.js +2 -2
- package/node_modules/@weavecode/server/dist/hooks/inbox-worker.js +3 -3
- package/node_modules/@weavecode/server/dist/hooks/match.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/message-deliverer.js +5 -5
- package/node_modules/@weavecode/server/dist/hooks/mirror.js +4 -4
- package/node_modules/@weavecode/server/dist/hooks/orchestration-engine.js +7 -7
- package/node_modules/@weavecode/server/dist/hooks/orchestration-graph.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/plugin-installer.js +3 -3
- package/node_modules/@weavecode/server/dist/hooks/plugin-loader.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/plugin-project-state.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/prompt-flusher.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/promptbox.js +8 -8
- package/node_modules/@weavecode/server/dist/hooks/push-notify.js +2 -2
- package/node_modules/@weavecode/server/dist/hooks/question-tracker.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/registry.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/resume-runner.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/session-purge.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/side-questions.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/synthetic-sessions.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/toolkit-scan.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/toolkit.js +5 -5
- package/node_modules/@weavecode/server/dist/hooks/watch-engine.js +1 -1
- package/node_modules/@weavecode/server/dist/index.d.ts +1 -1
- package/node_modules/@weavecode/server/dist/index.js +1 -1
- package/node_modules/@weavecode/server/dist/install/apply-update.js +1 -1
- package/node_modules/@weavecode/server/dist/install/capabilities.js +1 -1
- package/node_modules/@weavecode/server/dist/install/codex-toml.js +1 -1
- package/node_modules/@weavecode/server/dist/install/file-assets.js +1 -1
- package/node_modules/@weavecode/server/dist/install/fingerprint.js +1 -1
- package/node_modules/@weavecode/server/dist/install/global-config.js +1 -1
- package/node_modules/@weavecode/server/dist/install/global-file-assets.js +1 -1
- package/node_modules/@weavecode/server/dist/install/init-files.d.ts +0 -9
- package/node_modules/@weavecode/server/dist/install/init-files.js +2 -2
- package/node_modules/@weavecode/server/dist/install/install-ledger.js +1 -1
- package/node_modules/@weavecode/server/dist/install/installer.js +1 -1
- package/node_modules/@weavecode/server/dist/install/library-index.js +1 -1
- package/node_modules/@weavecode/server/dist/install/mcp-rows.js +1 -1
- package/node_modules/@weavecode/server/dist/install/plugin-install.js +1 -1
- package/node_modules/@weavecode/server/dist/install/plugin-rows.js +1 -1
- package/node_modules/@weavecode/server/dist/install/plugin-templates.js +1 -1
- package/node_modules/@weavecode/server/dist/install/project-config.js +1 -1
- package/node_modules/@weavecode/server/dist/install/reader.js +1 -1
- package/node_modules/@weavecode/server/dist/install/scan-cache.js +1 -1
- package/node_modules/@weavecode/server/dist/install/scanner.js +1 -1
- package/node_modules/@weavecode/server/dist/install/settings-mcp.js +2 -2
- package/node_modules/@weavecode/server/dist/install/updates.js +1 -1
- package/node_modules/@weavecode/server/dist/market/builtin.js +1 -1
- package/node_modules/@weavecode/server/dist/market/identity.js +1 -1
- package/node_modules/@weavecode/server/dist/market/import.js +2 -2
- package/node_modules/@weavecode/server/dist/market/refresh.js +1 -1
- package/node_modules/@weavecode/server/dist/market/resolve.js +1 -1
- package/node_modules/@weavecode/server/dist/market/updates.js +1 -1
- package/node_modules/@weavecode/server/dist/registry.js +2 -2
- package/node_modules/@weavecode/server/dist/repositories/hook-dispatches.js +4 -4
- package/node_modules/@weavecode/server/dist/repositories/hook-events.d.ts +6 -0
- package/node_modules/@weavecode/server/dist/repositories/hook-events.js +8 -5
- package/node_modules/@weavecode/server/dist/repositories/hook-rules.js +4 -4
- package/node_modules/@weavecode/server/dist/repositories/libraries.js +1 -1
- package/node_modules/@weavecode/server/dist/repositories/orchestrations.js +7 -7
- package/node_modules/@weavecode/server/dist/repositories/plugin-states.js +1 -1
- package/node_modules/@weavecode/server/dist/repositories/projects.js +1 -1
- package/node_modules/@weavecode/server/dist/repositories/push-subscriptions.js +2 -2
- package/node_modules/@weavecode/server/dist/repositories/session-watches.js +4 -4
- package/node_modules/@weavecode/server/dist/repositories/sessions.js +2 -2
- package/node_modules/@weavecode/server/dist/repositories/uploads.js +11 -11
- package/node_modules/@weavecode/server/dist/statusline/cache-sweeper.js +1 -1
- package/node_modules/@weavecode/server/dist/statusline/generator.js +1 -1
- package/node_modules/@weavecode/server/dist/statusline/manager.js +3 -3
- package/node_modules/@weavecode/server/dist/surfaces.js +1 -1
- package/node_modules/@weavecode/server/dist/watch/cache.js +1 -1
- package/node_modules/@weavecode/server/dist/watch/classifier.js +1 -1
- package/node_modules/@weavecode/server/dist/watch/plugin-mods.js +1 -1
- package/node_modules/@weavecode/server/dist/watch/sync-scheduler.js +1 -1
- package/node_modules/@weavecode/server/dist/watch/watch-service.js +1 -1
- package/node_modules/@weavecode/server/package.json +4 -4
- package/node_modules/@weavecode/server/web/dist/assets/abnfDiagram-WEYOIA3C-S1lL1V_n.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{arc-CRZTRyjb.js → arc-CoTNHyHV.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/architectureDiagram-ZHVYKT53-C6ttfnzW.js +36 -0
- package/node_modules/@weavecode/server/web/dist/assets/{blockDiagram-RJAE7QA3-BIH8mSIZ.js → blockDiagram-RJAE7QA3-CYr3Cpu9.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{c4Diagram-XDPPPE54-5YoKWFOD.js → c4Diagram-XDPPPE54-BFS7PhLD.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/channel-DxQHp3Yc.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-2E7WHVMD-B653kMXt.js → chunk-2E7WHVMD-DJ7X_Shu.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-2Q5K7J3B-f_A4_eDz.js → chunk-2Q5K7J3B-B8nr2rdz.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-4EMNKR2T-v5j5qNGj.js → chunk-4EMNKR2T-DmnZmUMU.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-55XCU76K-Xz9a8dmp.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-5VM5RSS4-BeROhLXN.js → chunk-5VM5RSS4-Dg9mg7pf.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-JWPE2WC7-D6dXb_jr.js → chunk-JWPE2WC7-CmjTZO8o.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-VQ5W62QI-CnHdSEMi.js → chunk-VQ5W62QI-D3YDdJ3E.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-XXDRQBXY-s1OG9sqW.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/chunk-ZCHMQSOR-C3hINQU3.js +2 -0
- package/node_modules/@weavecode/server/web/dist/assets/{classDiagram-v2-4MYWR3UA-DQe1b_k8.js → classDiagram-v2-4MYWR3UA-BTsbYrVl.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/cose-bilkent-JH36ORCC-C0W8Y-jI.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{cynefin-EF2NZ3EQ-OZotFKUu.js → cynefin-EF2NZ3EQ-stAu4Rh-.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/cynefinDiagram-WF24UDRP-CqYibiiv.js +62 -0
- package/node_modules/@weavecode/server/web/dist/assets/dagre-NK4GIZVX-qqcoJAqB.js +4 -0
- package/node_modules/@weavecode/server/web/dist/assets/diagram-CBK3MWTC-D0YTopb7.js +24 -0
- package/node_modules/@weavecode/server/web/dist/assets/diagram-I5XIIV2D-Csvw6aYr.js +24 -0
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-ODIL2UCW-D9A6W8oB.js → diagram-ODIL2UCW-Dl0tYLkF.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-PFBEJUXE-PeI-eyu2.js → diagram-PFBEJUXE-BCPSWZPe.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/diagram-RJA3I4VV-ETg-BrAJ.js +41 -0
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-TYUNFSNR-D5KieEw5.js → diagram-TYUNFSNR-_M6ZxBG7.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/ebnfDiagram-V4P3TTPT-C-e_W7qx.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{elk-QONTBCTQ-D3xrVg0U.js → elk-QONTBCTQ-B5TBharB.js} +3 -3
- package/node_modules/@weavecode/server/web/dist/assets/{erDiagram-KYQIGQAA-y_V1cor7.js → erDiagram-KYQIGQAA-D08rj2pv.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{flowDiagram-IUGLLWBU-BJ8Z0MkF.js → flowDiagram-IUGLLWBU-BALTxsKh.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/ganttDiagram-R7GPNTJY-Cts193jT.js +292 -0
- package/node_modules/@weavecode/server/web/dist/assets/gitGraphDiagram-PDYL7XHY-L9qYUX0v.js +106 -0
- package/node_modules/@weavecode/server/web/dist/assets/infoDiagram-MVDRKAX5-Bv47rgU0.js +2 -0
- package/node_modules/@weavecode/server/web/dist/assets/{ishikawaDiagram-HPEHV2GE-ChEnND76.js → ishikawaDiagram-HPEHV2GE-Da8_s6cs.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{journeyDiagram-BOSHW7O7-DHcNtpYF.js → journeyDiagram-BOSHW7O7-Bj3CjZOf.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{kanban-definition-FNSA4HC5-Dft7qpW5.js → kanban-definition-FNSA4HC5-D1hicmMu.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/linear-CWQg2iA1.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/main-XLn3EZFh.css +11 -0
- package/node_modules/@weavecode/server/web/dist/assets/main-bsb0lQoL.js +1096 -0
- package/node_modules/@weavecode/server/web/dist/assets/{mermaid.core-D_Dp_Kl2.js → mermaid.core-C-wP0Zg2.js} +4 -4
- package/node_modules/@weavecode/server/web/dist/assets/{mindmap-definition-6OY57UG3-CM6OAd_-.js → mindmap-definition-6OY57UG3-Dk0VKqre.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/modulepreload-polyfill-B5Qt9EMX.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/pegDiagram-ECIUJNBX-Bp1K_F9z.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/pet-J6izA90s.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/pieDiagram-GNMPY74T-BZ4rGy3t.js +39 -0
- package/node_modules/@weavecode/server/web/dist/assets/{quadrantDiagram-D57K4MC3-D8pQ_PU2.js → quadrantDiagram-D57K4MC3-B4N5KRsR.js} +4 -4
- package/node_modules/@weavecode/server/web/dist/assets/railroadDiagram-Y72NRBL7-C8nx8oHf.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{requirementDiagram-EQYSW5RA-C90DU5Ny.js → requirementDiagram-EQYSW5RA-VSH57d0d.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{sankeyDiagram-SY24JHO5-B_poYGgJ.js → sankeyDiagram-SY24JHO5-jUb1hcya.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{sequenceDiagram-BLEHNHQU-DDW7b2Dn.js → sequenceDiagram-BLEHNHQU-E2BioCNi.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/sizeCapture-INFHLROL-BdKrbRmI.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{stateDiagram-v2-A6IESKWZ-CkVMAyxG.js → stateDiagram-v2-A6IESKWZ-tFz7uNM7.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/swimlanes-B3ENRKFQ-B9BAPDWw.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/swimlanesDiagram-AYQRV4AK-DQ2NPLl9.js +8 -0
- package/node_modules/@weavecode/server/web/dist/assets/{timeline-definition-JXYKGLGB-DnhkRGLb.js → timeline-definition-JXYKGLGB-CofNnFTK.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{usecaseDiagram-WPOLBNNX-_TdIjC6Z.js → usecaseDiagram-WPOLBNNX-DOvjhJjJ.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{vennDiagram-Q3Y3IDCW-FzgsymXB.js → vennDiagram-Q3Y3IDCW-BcFHWnhS.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{wardleyDiagram-IVAIDKWA-BwqimStC.js → wardleyDiagram-IVAIDKWA-Bz2aqRAs.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{xychartDiagram-4URNHDU4-CFjjVPIV.js → xychartDiagram-4URNHDU4-DpNF6Vsq.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/index.html +3 -2
- package/node_modules/@weavecode/server/web/dist/pet.html +130 -0
- package/node_modules/@weavecode/templates/dist/index.d.ts +2 -0
- package/node_modules/@weavecode/templates/dist/index.js +1 -1
- package/node_modules/@weavecode/templates/dist/resources/pets/weave-spider/pet.json +7 -0
- package/node_modules/@weavecode/templates/dist/resources/pets/weave-spider/spritesheet.png +0 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/.claude-plugin/marketplace.json +6 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/plugins/core-skills/weave-pet-hatcher/.claude-plugin/plugin.json +8 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/plugins/core-skills/weave-pet-hatcher/skills/weave-pet-hatcher/SKILL.md +121 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/plugins/core-skills/weave-pet-hatcher/skills/weave-pet-hatcher/scripts/assemble-pet.mjs +308 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/plugins/core-skills/weave-pet-hatcher/weave.json +4 -0
- package/node_modules/@weavecode/templates/package.json +2 -2
- package/package.json +11 -7
- package/scripts/preinstall.mjs +108 -0
- package/node_modules/@weavecode/server/web/dist/assets/abnfDiagram-WEYOIA3C-DDeQkTf5.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/architectureDiagram-ZHVYKT53-Dj54DE3O.js +0 -36
- package/node_modules/@weavecode/server/web/dist/assets/channel-5VM93AJ8.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-55XCU76K-CgEqeP7j.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-XXDRQBXY-BkG_e6PE.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-ZCHMQSOR-DxR-fxzs.js +0 -2
- package/node_modules/@weavecode/server/web/dist/assets/cose-bilkent-JH36ORCC-DThrA8S5.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/cynefinDiagram-WF24UDRP-DJjq2hfT.js +0 -62
- package/node_modules/@weavecode/server/web/dist/assets/dagre-NK4GIZVX-C2vH93HT.js +0 -4
- package/node_modules/@weavecode/server/web/dist/assets/diagram-CBK3MWTC-DrF_ScM-.js +0 -24
- package/node_modules/@weavecode/server/web/dist/assets/diagram-I5XIIV2D-D1qoUJ4t.js +0 -24
- package/node_modules/@weavecode/server/web/dist/assets/diagram-RJA3I4VV-DITY0Rd8.js +0 -41
- package/node_modules/@weavecode/server/web/dist/assets/ebnfDiagram-V4P3TTPT-DDylK-gz.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/ganttDiagram-R7GPNTJY-C0q-CS1T.js +0 -292
- package/node_modules/@weavecode/server/web/dist/assets/gitGraphDiagram-PDYL7XHY-BYTComiB.js +0 -106
- package/node_modules/@weavecode/server/web/dist/assets/index-BKxAxaVG.js +0 -1091
- package/node_modules/@weavecode/server/web/dist/assets/index-C0Sd4MH7.css +0 -11
- package/node_modules/@weavecode/server/web/dist/assets/infoDiagram-MVDRKAX5-DtixgjLP.js +0 -2
- package/node_modules/@weavecode/server/web/dist/assets/linear-DEo11t-X.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/pegDiagram-ECIUJNBX-_QkY0h8Q.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/pieDiagram-GNMPY74T-ZGr5vtDj.js +0 -39
- package/node_modules/@weavecode/server/web/dist/assets/railroadDiagram-Y72NRBL7-DUIo-WmA.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/sizeCapture-INFHLROL-CmKoqX6K.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/swimlanes-B3ENRKFQ-Dm_Omzky.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/swimlanesDiagram-AYQRV4AK-Bjj8ZA4d.js +0 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weavecode/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "CLI entry point for weave — parser, commands, and init executor",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"node": ">=22.5.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@weavecode/core": "^0.1.
|
|
26
|
-
"@weavecode/harness": "^0.1.
|
|
27
|
-
"@weavecode/server": "^0.1.
|
|
28
|
-
"@weavecode/templates": "^0.1.
|
|
25
|
+
"@weavecode/core": "^0.1.9",
|
|
26
|
+
"@weavecode/harness": "^0.1.9",
|
|
27
|
+
"@weavecode/server": "^0.1.9",
|
|
28
|
+
"@weavecode/templates": "^0.1.9"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"node:path";import{lstat as k,readFile as p,readlink as g,access as y}from"node:fs/promises";import{HARNESS_KEYS as w,HARNESS_LOCAL_INSTRUCTION_FILES as S}from"./harness.js";const c="CLAUDE.md",u="AGENTS.md",d=".claude/helpers/statusline.cjs",j=".claude/settings.json";async function f(t){try{return await y(t),!0}catch{return!1}}async function l(t){try{if(!(await k(t)).isSymbolicLink())return"file";const n=s.resolve(s.dirname(t),await g(t));return await f(n)?"link":"dangling"}catch{return"absent"}}async function v(t){const n=s.join(t,u);if(await l(n)!=="file")return null;const a=(await p(n,"utf-8").catch(()=>"")).trim();return{id:"instruction-link-not-materialised",params:{agents:u,claude:c},ok:a!==c}}async function b(t){const n=await l(s.join(t,c)),a=await l(s.join(t,u));return n==="absent"||a==="absent"?null:{id:"instruction-files-duplicated",params:{claude:c,agents:u},ok:!(n==="file"&&a==="file")}}async function E(t){const n=[];for(const a of[c,u]){const i=await l(s.join(t,a));if(i==="dangling"){n.push({id:"instruction-link-dangling",params:{name:a},ok:!1});break}i==="link"&&n.push({id:"instruction-link-dangling",params:{name:a},ok:!0})}return n}function L(t){const n=/"([^"]+)"/.exec(t);if(n)return n[1];const a=t.trim().split(/\s+/),i=a[a.length-1];return i&&m(i).includes(d)?i:null}function m(t){return t.replace(/\\/g,"/")}async function N(t){const n=s.join(t,j);let a;try{a=JSON.parse(await p(n,"utf-8"))}catch{return[]}const i=a.statusLine;if(!i||typeof i!="object")return[];const e=i.command;if(typeof e!="string"||!m(e).includes(d))return[];const r=L(e);if(!r)return[{id:"statusline-path-unresolved",params:{command:e},ok:!1}];const o=[{id:"statusline-path-unresolved",params:{command:e},ok:!0}],h=s.resolve(t)+s.sep;return s.resolve(r).startsWith(h)?(o.push({id:"statusline-path-foreign",params:{path:r},ok:!0}),o.push({id:"statusline-script-missing",params:{path:r},ok:await f(r)}),o):(o.push({id:"statusline-path-foreign",params:{path:r},ok:!1}),o)}async function A(t){const n=[];for(const a of w){const{file:i,semantics:e}=S[a];await f(s.join(t,i))&&n.push({id:e==="override"?"local-instruction-override":"local-instruction-append",params:{file:i},ok:!0})}return n}export async function checkHarness(t){const[n,a,i,e,r]=await Promise.all([v(t),b(t),E(t),N(t),A(t)]);return[n,a,...i,...e,...r].filter(o=>o!==null)}
|
|
@@ -94,6 +94,29 @@ export declare const HARNESS_INSTRUCTION_FILES: {
|
|
|
94
94
|
};
|
|
95
95
|
/** 指令文件名(由注册表派生,不手写 union)。 */
|
|
96
96
|
export type InstructionFile = (typeof HARNESS_INSTRUCTION_FILES)[Harness][number];
|
|
97
|
+
/**
|
|
98
|
+
* 本机私有指令面注册表——各 harness 宿主原生加载的 local 指令文件(不进仓、
|
|
99
|
+
* `.git/info/exclude` 清单由此派生)。**两 harness 不同构**(2026-11-03 源码
|
|
100
|
+
* 实测定案):claude 的 `CLAUDE.local.md` 是**追加**(与 CLAUDE.md 叠加生效);
|
|
101
|
+
* codex 的 `AGENTS.override.md` 是**覆盖**(agents_md.rs 的 candidate_filenames
|
|
102
|
+
* 命中即返回——override 在则同目录 AGENTS.md 不被宿主读取)。semantics 字段
|
|
103
|
+
* 让提示文案如实分叉,不把 override 冒充补充。
|
|
104
|
+
*
|
|
105
|
+
* init 的写入策略(local-first,实现见 weave-cli init/instruction-files.ts):
|
|
106
|
+
* claude 恒写本文件;codex 仅当根目录没有 AGENTS.md 时才写 override——已有
|
|
107
|
+
* 共享文件时块并入 AGENTS.md,避免 override 压掉用户自己的共享指令。
|
|
108
|
+
*/
|
|
109
|
+
export declare const HARNESS_LOCAL_INSTRUCTION_FILES: {
|
|
110
|
+
readonly claude: {
|
|
111
|
+
readonly file: "CLAUDE.local.md";
|
|
112
|
+
readonly semantics: "append";
|
|
113
|
+
};
|
|
114
|
+
readonly codex: {
|
|
115
|
+
readonly file: "AGENTS.override.md";
|
|
116
|
+
readonly semantics: "override";
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
export type LocalInstructionSemantics = (typeof HARNESS_LOCAL_INSTRUCTION_FILES)[Harness]['semantics'];
|
|
97
120
|
/** 任务分组生命周期表的条目形状(D7)——分组差异是 harness 知识。 */
|
|
98
121
|
export interface HarnessLifecycle {
|
|
99
122
|
/** 开启一个 turn 组的事件(组头)。 */
|
|
@@ -250,6 +273,96 @@ export declare const VISUALIZATION_PROTOCOL: {
|
|
|
250
273
|
/** fragment 文件大小上限(字节)。 */
|
|
251
274
|
readonly maxFragmentBytes: number;
|
|
252
275
|
};
|
|
276
|
+
/**
|
|
277
|
+
* 宠物精灵契约——桌面宠物窗的资产文法与动画时长表(跨 harness 统一,
|
|
278
|
+
* 模型侧由 skill 教;资产格式与 codex 的 v2 pet 兼容,社区现成资产可直接导入)。
|
|
279
|
+
* 网格/行号/帧时长与 codex TUI 的 default_animations 对齐(2026-10-31 考证);
|
|
280
|
+
* 时长表是宿主内建默认,manifest 不写时长。
|
|
281
|
+
*/
|
|
282
|
+
export declare const PET_SPRITE_CONTRACT: {
|
|
283
|
+
/** 单元格尺寸与列数(8 列 × 192×208)。 */
|
|
284
|
+
readonly cellWidth: 192;
|
|
285
|
+
readonly cellHeight: 208;
|
|
286
|
+
readonly columns: 8;
|
|
287
|
+
/** v1 = 9 行(仅标准动画);v2 = 11 行(+2 行 16 方向注视)。 */
|
|
288
|
+
readonly rowsV1: 9;
|
|
289
|
+
readonly rowsV2: 11;
|
|
290
|
+
/** v2 标记值:manifest 缺此值按 v1 处理,2288 高的资产会被拒。 */
|
|
291
|
+
readonly spriteVersionV2: 2;
|
|
292
|
+
/** spritesheet 文件大小上限(字节)。 */
|
|
293
|
+
readonly maxSpritesheetBytes: number;
|
|
294
|
+
/**
|
|
295
|
+
* 行号 → 帧数与时长(ms)。idle 单列时长;其余 uniform 帧间隔 + 尾帧加长。
|
|
296
|
+
* 播放模式:主循环 ×3 后接 idle 帧回落(loop_start = 主段帧数)。
|
|
297
|
+
*/
|
|
298
|
+
readonly animations: {
|
|
299
|
+
readonly idle: {
|
|
300
|
+
readonly row: 0;
|
|
301
|
+
readonly frames: 6;
|
|
302
|
+
readonly durationsMs: readonly [1680, 660, 660, 840, 840, 1920];
|
|
303
|
+
};
|
|
304
|
+
readonly 'running-right': {
|
|
305
|
+
readonly row: 1;
|
|
306
|
+
readonly frames: 8;
|
|
307
|
+
readonly frameMs: 120;
|
|
308
|
+
readonly finalMs: 220;
|
|
309
|
+
};
|
|
310
|
+
readonly 'running-left': {
|
|
311
|
+
readonly row: 2;
|
|
312
|
+
readonly frames: 8;
|
|
313
|
+
readonly frameMs: 120;
|
|
314
|
+
readonly finalMs: 220;
|
|
315
|
+
};
|
|
316
|
+
readonly waving: {
|
|
317
|
+
readonly row: 3;
|
|
318
|
+
readonly frames: 4;
|
|
319
|
+
readonly frameMs: 140;
|
|
320
|
+
readonly finalMs: 280;
|
|
321
|
+
};
|
|
322
|
+
readonly jumping: {
|
|
323
|
+
readonly row: 4;
|
|
324
|
+
readonly frames: 5;
|
|
325
|
+
readonly frameMs: 140;
|
|
326
|
+
readonly finalMs: 280;
|
|
327
|
+
};
|
|
328
|
+
readonly failed: {
|
|
329
|
+
readonly row: 5;
|
|
330
|
+
readonly frames: 8;
|
|
331
|
+
readonly frameMs: 140;
|
|
332
|
+
readonly finalMs: 240;
|
|
333
|
+
};
|
|
334
|
+
readonly waiting: {
|
|
335
|
+
readonly row: 6;
|
|
336
|
+
readonly frames: 6;
|
|
337
|
+
readonly frameMs: 150;
|
|
338
|
+
readonly finalMs: 260;
|
|
339
|
+
};
|
|
340
|
+
readonly running: {
|
|
341
|
+
readonly row: 7;
|
|
342
|
+
readonly frames: 6;
|
|
343
|
+
readonly frameMs: 120;
|
|
344
|
+
readonly finalMs: 220;
|
|
345
|
+
};
|
|
346
|
+
readonly review: {
|
|
347
|
+
readonly row: 8;
|
|
348
|
+
readonly frames: 6;
|
|
349
|
+
readonly frameMs: 150;
|
|
350
|
+
readonly finalMs: 280;
|
|
351
|
+
};
|
|
352
|
+
readonly enter: {
|
|
353
|
+
readonly row: 9;
|
|
354
|
+
readonly frames: 8;
|
|
355
|
+
readonly frameMs: 90;
|
|
356
|
+
readonly finalMs: 200;
|
|
357
|
+
};
|
|
358
|
+
readonly sleep: {
|
|
359
|
+
readonly row: 10;
|
|
360
|
+
readonly frames: 6;
|
|
361
|
+
readonly frameMs: 420;
|
|
362
|
+
readonly finalMs: 900;
|
|
363
|
+
};
|
|
364
|
+
};
|
|
365
|
+
};
|
|
253
366
|
/**
|
|
254
367
|
* 可选 harness 键序(= 名单表):`--harness` flag 值域与 init 交互多选的
|
|
255
368
|
* 选项表共用(批 5)。经名单表派生而非 `Object.keys(HARNESS_EVENTS)`——
|
|
@@ -261,3 +374,5 @@ export declare const HARNESS_KEYS: readonly Harness[];
|
|
|
261
374
|
* 其后为次名(链到主名)——`weave init` 的合一、卸载清扫与提交候选共用此序。
|
|
262
375
|
*/
|
|
263
376
|
export declare const INSTRUCTION_FILES: readonly InstructionFile[];
|
|
377
|
+
/** 全部 local 指令文件名(exclude 清单与检测共用,由 local 面注册表派生)。 */
|
|
378
|
+
export declare const LOCAL_INSTRUCTION_FILES: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const HARNESS_NAMES=["claude","codex"];export function isHarness(e){return typeof e=="string"&&HARNESS_NAMES.includes(e)}export const HARNESS_EVENTS={claude:["PreToolUse","PostToolUse","UserPromptSubmit","SessionStart","Stop","StopFailure","SubagentStop","Notification","PostToolUseFailure","PermissionRequest","PermissionDenied","SubagentStart","PreCompact","SessionEnd","PreModelSwitch","PostModelSwitch"],codex:["SessionStart","UserPromptSubmit","Stop","TurnAborted","PostToolUse","SessionEnd","PreCompact","PostCompact","SubagentStart","SubagentStop","PermissionRequest"]},HARNESS_TOOL_EVENTS={claude:["PreToolUse","PostToolUse","PostToolUseFailure"],codex:["PostToolUse"]},INJECTABLE_EVENTS={claude:["PostToolUse","UserPromptSubmit","SessionStart","Stop","SubagentStop"],codex:[]},TITLE_EFFECTIVE_EVENTS={claude:["SessionStart","UserPromptSubmit"],codex:[]},HARNESS_EVENT_UNION=[...new Set(Object.values(HARNESS_EVENTS).flat())],HARNESS_DIRS={claude:{projectDir:".claude",userDir:".claude"},codex:{projectDir:".codex",userDir:".codex"}},HARNESS_INSTRUCTION_FILES={claude:["CLAUDE.md"],codex:["AGENTS.md"]},HARNESS_LIFECYCLE={claude:{open:"UserPromptSubmit",close:["Stop","StopFailure"],closeFailed:["StopFailure"],sessionMarkers:["SessionStart","SessionEnd"],subagentStop:"SubagentStop",questionTools:["AskUserQuestion","ExitPlanMode"],sessionExit:"SessionEnd"},codex:{open:"UserPromptSubmit",close:["Stop","TurnAborted"],closeFailed:[],sessionMarkers:["SessionStart","SessionEnd"],subagentStop:"SubagentStop",questionTools:[],sessionExit:"SessionEnd"}},HARNESS_COMPACTION={claude:{start:"PreCompact",end:"SessionStart",endSource:"compact"},codex:{start:null,end:null,endSource:null}},HARNESS_SESSION_CONTROL={claude:{modeNames:["default","acceptEdits","plan","auto","dontAsk","bypassPermissions"],modelNames:["default","opus","sonnet","haiku","fable"],modelFactEvents:["PostModelSwitch","SessionStart"],effortLevels:["low","medium","high","xhigh","max"]},codex:{modeNames:[],modelNames:[],modelFactEvents:[],effortLevels:[]}},VISUALIZATION_PROTOCOL={referencePrefix:"\uE200visualize\uE202",referenceSuffix:"\uE201",referencePrefixAliases:["\u{E0000}visualize\u{E0001}","visualize"],referenceSuffixAliases:["\u{E0002}"],maxFragmentBytes:1024*1024},HARNESS_KEYS=HARNESS_NAMES,INSTRUCTION_FILES=[...new Set(HARNESS_KEYS.flatMap(e=>[...HARNESS_INSTRUCTION_FILES[e]]))];
|
|
1
|
+
export const HARNESS_NAMES=["claude","codex"];export function isHarness(e){return typeof e=="string"&&HARNESS_NAMES.includes(e)}export const HARNESS_EVENTS={claude:["PreToolUse","PostToolUse","UserPromptSubmit","SessionStart","Stop","StopFailure","SubagentStop","Notification","PostToolUseFailure","PermissionRequest","PermissionDenied","SubagentStart","PreCompact","SessionEnd","PreModelSwitch","PostModelSwitch"],codex:["SessionStart","UserPromptSubmit","Stop","TurnAborted","PostToolUse","SessionEnd","PreCompact","PostCompact","SubagentStart","SubagentStop","PermissionRequest"]},HARNESS_TOOL_EVENTS={claude:["PreToolUse","PostToolUse","PostToolUseFailure"],codex:["PostToolUse"]},INJECTABLE_EVENTS={claude:["PostToolUse","UserPromptSubmit","SessionStart","Stop","SubagentStop"],codex:[]},TITLE_EFFECTIVE_EVENTS={claude:["SessionStart","UserPromptSubmit"],codex:[]},HARNESS_EVENT_UNION=[...new Set(Object.values(HARNESS_EVENTS).flat())],HARNESS_DIRS={claude:{projectDir:".claude",userDir:".claude"},codex:{projectDir:".codex",userDir:".codex"}},HARNESS_INSTRUCTION_FILES={claude:["CLAUDE.md"],codex:["AGENTS.md"]},HARNESS_LOCAL_INSTRUCTION_FILES={claude:{file:"CLAUDE.local.md",semantics:"append"},codex:{file:"AGENTS.override.md",semantics:"override"}},HARNESS_LIFECYCLE={claude:{open:"UserPromptSubmit",close:["Stop","StopFailure"],closeFailed:["StopFailure"],sessionMarkers:["SessionStart","SessionEnd"],subagentStop:"SubagentStop",questionTools:["AskUserQuestion","ExitPlanMode"],sessionExit:"SessionEnd"},codex:{open:"UserPromptSubmit",close:["Stop","TurnAborted"],closeFailed:[],sessionMarkers:["SessionStart","SessionEnd"],subagentStop:"SubagentStop",questionTools:[],sessionExit:"SessionEnd"}},HARNESS_COMPACTION={claude:{start:"PreCompact",end:"SessionStart",endSource:"compact"},codex:{start:null,end:null,endSource:null}},HARNESS_SESSION_CONTROL={claude:{modeNames:["default","acceptEdits","plan","auto","dontAsk","bypassPermissions"],modelNames:["default","opus","sonnet","haiku","fable"],modelFactEvents:["PostModelSwitch","SessionStart"],effortLevels:["low","medium","high","xhigh","max"]},codex:{modeNames:[],modelNames:[],modelFactEvents:[],effortLevels:[]}},VISUALIZATION_PROTOCOL={referencePrefix:"\uE200visualize\uE202",referenceSuffix:"\uE201",referencePrefixAliases:["\u{E0000}visualize\u{E0001}","visualize"],referenceSuffixAliases:["\u{E0002}"],maxFragmentBytes:1024*1024},PET_SPRITE_CONTRACT={cellWidth:192,cellHeight:208,columns:8,rowsV1:9,rowsV2:11,spriteVersionV2:2,maxSpritesheetBytes:8*1024*1024,animations:{idle:{row:0,frames:6,durationsMs:[1680,660,660,840,840,1920]},"running-right":{row:1,frames:8,frameMs:120,finalMs:220},"running-left":{row:2,frames:8,frameMs:120,finalMs:220},waving:{row:3,frames:4,frameMs:140,finalMs:280},jumping:{row:4,frames:5,frameMs:140,finalMs:280},failed:{row:5,frames:8,frameMs:140,finalMs:240},waiting:{row:6,frames:6,frameMs:150,finalMs:260},running:{row:7,frames:6,frameMs:120,finalMs:220},review:{row:8,frames:6,frameMs:150,finalMs:280},enter:{row:9,frames:8,frameMs:90,finalMs:200},sleep:{row:10,frames:6,frameMs:420,finalMs:900}}},HARNESS_KEYS=HARNESS_NAMES,INSTRUCTION_FILES=[...new Set(HARNESS_KEYS.flatMap(e=>[...HARNESS_INSTRUCTION_FILES[e]]))],LOCAL_INSTRUCTION_FILES=HARNESS_KEYS.map(e=>HARNESS_LOCAL_INSTRUCTION_FILES[e].file);
|
|
@@ -4,7 +4,7 @@ export type { HookRule, HookRuleSource, HookRuleFilter, HookRuleOrigin, HandlerC
|
|
|
4
4
|
export { HookRuleSchema, HookRuleSourceSchema, HookRuleFilterSchema, HookRuleOriginSchema, HandlerConfigSchema, HookDispatchStatusSchema, HookDispatchModeSchema, PluginRuleEntrySchema, WeavePluginManifestSchema, WEAVE_PLUGIN_MANIFEST, CLAUDE_HOOK_EVENTS, INJECTABLE_HOOK_EVENTS, } from './types.js';
|
|
5
5
|
export { InitOptionsSchema, PresetSchema, resolveComponents } from './types.js';
|
|
6
6
|
export { normalizeHookRuleSource, hookSourceHarness } from './types.js';
|
|
7
|
-
export { type Harness, type InstructionFile, HARNESS_EVENTS, HARNESS_KEYS, HARNESS_NAMES, HARNESS_EVENT_UNION, HARNESS_TOOL_EVENTS, HARNESS_INSTRUCTION_FILES, INSTRUCTION_FILES, INJECTABLE_EVENTS, TITLE_EFFECTIVE_EVENTS, HARNESS_DIRS, HARNESS_LIFECYCLE, HARNESS_COMPACTION, HARNESS_SESSION_CONTROL, VISUALIZATION_PROTOCOL, type HarnessCompaction, isHarness, } from './harness.js';
|
|
7
|
+
export { type Harness, type InstructionFile, HARNESS_EVENTS, HARNESS_KEYS, HARNESS_NAMES, HARNESS_EVENT_UNION, HARNESS_TOOL_EVENTS, HARNESS_INSTRUCTION_FILES, HARNESS_LOCAL_INSTRUCTION_FILES, LOCAL_INSTRUCTION_FILES, INSTRUCTION_FILES, INJECTABLE_EVENTS, TITLE_EFFECTIVE_EVENTS, HARNESS_DIRS, HARNESS_LIFECYCLE, HARNESS_COMPACTION, HARNESS_SESSION_CONTROL, VISUALIZATION_PROTOCOL, PET_SPRITE_CONTRACT, type HarnessCompaction, isHarness, } from './harness.js';
|
|
8
8
|
export { TERMINAL_LOCATOR_ENV, TERMINAL_LOCATOR_ENV_KEYS } from './terminal.js';
|
|
9
9
|
export { type ToolScope, type ToolCategory, type EnableOverride, type InstallState, type ToolStateRow, } from './tool.js';
|
|
10
10
|
export { DEFAULT_COMPONENTS, FULL_COMPONENTS, MINIMAL_COMPONENTS } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{HookRuleSchema,HookRuleSourceSchema,HookRuleFilterSchema,HookRuleOriginSchema,HandlerConfigSchema,HookDispatchStatusSchema,HookDispatchModeSchema,PluginRuleEntrySchema,WeavePluginManifestSchema,WEAVE_PLUGIN_MANIFEST,CLAUDE_HOOK_EVENTS,INJECTABLE_HOOK_EVENTS}from"./types.js";export{InitOptionsSchema,PresetSchema,resolveComponents}from"./types.js";export{normalizeHookRuleSource,hookSourceHarness}from"./types.js";export{HARNESS_EVENTS,HARNESS_KEYS,HARNESS_NAMES,HARNESS_EVENT_UNION,HARNESS_TOOL_EVENTS,HARNESS_INSTRUCTION_FILES,INSTRUCTION_FILES,INJECTABLE_EVENTS,TITLE_EFFECTIVE_EVENTS,HARNESS_DIRS,HARNESS_LIFECYCLE,HARNESS_COMPACTION,HARNESS_SESSION_CONTROL,VISUALIZATION_PROTOCOL,isHarness}from"./harness.js";export{TERMINAL_LOCATOR_ENV,TERMINAL_LOCATOR_ENV_KEYS}from"./terminal.js";export{DEFAULT_COMPONENTS,FULL_COMPONENTS,MINIMAL_COMPONENTS}from"./types.js";export{DEFAULT_HOOKS,DEFAULT_SKILLS,DEFAULT_COMMANDS,DEFAULT_AGENTS,DEFAULT_MCP}from"./types.js";export{detectPlatform}from"./platform.js";export{checkHarness}from"./harness-checks.js";export{ensureDir,writeFileIfAbsent,fileExists}from"./utils/fs.js";export{logger,formatTable}from"./utils/logger.js";
|
|
1
|
+
export{HookRuleSchema,HookRuleSourceSchema,HookRuleFilterSchema,HookRuleOriginSchema,HandlerConfigSchema,HookDispatchStatusSchema,HookDispatchModeSchema,PluginRuleEntrySchema,WeavePluginManifestSchema,WEAVE_PLUGIN_MANIFEST,CLAUDE_HOOK_EVENTS,INJECTABLE_HOOK_EVENTS}from"./types.js";export{InitOptionsSchema,PresetSchema,resolveComponents}from"./types.js";export{normalizeHookRuleSource,hookSourceHarness}from"./types.js";export{HARNESS_EVENTS,HARNESS_KEYS,HARNESS_NAMES,HARNESS_EVENT_UNION,HARNESS_TOOL_EVENTS,HARNESS_INSTRUCTION_FILES,HARNESS_LOCAL_INSTRUCTION_FILES,LOCAL_INSTRUCTION_FILES,INSTRUCTION_FILES,INJECTABLE_EVENTS,TITLE_EFFECTIVE_EVENTS,HARNESS_DIRS,HARNESS_LIFECYCLE,HARNESS_COMPACTION,HARNESS_SESSION_CONTROL,VISUALIZATION_PROTOCOL,PET_SPRITE_CONTRACT,isHarness}from"./harness.js";export{TERMINAL_LOCATOR_ENV,TERMINAL_LOCATOR_ENV_KEYS}from"./terminal.js";export{DEFAULT_COMPONENTS,FULL_COMPONENTS,MINIMAL_COMPONENTS}from"./types.js";export{DEFAULT_HOOKS,DEFAULT_SKILLS,DEFAULT_COMMANDS,DEFAULT_AGENTS,DEFAULT_MCP}from"./types.js";export{detectPlatform}from"./platform.js";export{checkHarness}from"./harness-checks.js";export{ensureDir,writeFileIfAbsent,fileExists}from"./utils/fs.js";export{logger,formatTable}from"./utils/logger.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import n from"node:os";import i from"node:path";export function detectPlatform(){const c=n.platform(),a=n.arch(),
|
|
1
|
+
import n from"node:os";import i from"node:path";export function detectPlatform(){const c=n.platform(),a=n.arch(),e=n.homedir();let s,o,r;switch(c){case"win32":s="windows",o=process.env.PSModulePath?"powershell":"cmd",r=process.env.APPDATA||i.join(e,"AppData","Roaming");break;case"darwin":s="darwin",o=process.env.SHELL?.includes("zsh")?"zsh":"bash",r=i.join(e,"Library","Application Support");break;default:s="linux",o=process.env.SHELL?.includes("zsh")?"zsh":process.env.SHELL?.includes("bash")?"bash":"sh",r=process.env.XDG_CONFIG_HOME||i.join(e,".config")}return{os:s,arch:a,nodeVersion:process.version,shell:o,homeDir:e,configDir:r}}
|
|
@@ -425,13 +425,13 @@ export declare const HookRuleSchema: z.ZodObject<{
|
|
|
425
425
|
/** origin 为 plugin/builtin 时的插件 id;用户规则为 null。 */
|
|
426
426
|
pluginId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
427
427
|
}, "strip", z.ZodTypeAny, {
|
|
428
|
-
id: string;
|
|
429
|
-
name: string;
|
|
430
428
|
filter: {
|
|
431
429
|
toolNames?: string[] | undefined;
|
|
432
430
|
pathGlobs?: string[] | undefined;
|
|
433
431
|
crossProjectOnly?: boolean | undefined;
|
|
434
432
|
};
|
|
433
|
+
id: string;
|
|
434
|
+
name: string;
|
|
435
435
|
pluginId: string | null;
|
|
436
436
|
enabled: boolean;
|
|
437
437
|
priority: number;
|
|
@@ -545,7 +545,6 @@ export declare const WEAVE_PLUGIN_MANIFEST = "weave-plugin.json";
|
|
|
545
545
|
* enabled 可省略(默认 true,但用户在 dashboard 的开关改动会被保留)。
|
|
546
546
|
*/
|
|
547
547
|
export declare const PluginRuleEntrySchema: z.ZodObject<{
|
|
548
|
-
name: z.ZodString;
|
|
549
548
|
filter: z.ZodDefault<z.ZodObject<{
|
|
550
549
|
/** 匹配 toolInput 的工具名(PostToolUse/PreToolUse 事件)。 */
|
|
551
550
|
toolNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -562,6 +561,7 @@ export declare const PluginRuleEntrySchema: z.ZodObject<{
|
|
|
562
561
|
pathGlobs?: string[] | undefined;
|
|
563
562
|
crossProjectOnly?: boolean | undefined;
|
|
564
563
|
}>>;
|
|
564
|
+
name: z.ZodString;
|
|
565
565
|
pluginId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
566
566
|
source: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
567
567
|
kind: z.ZodLiteral<"hook-event">;
|
|
@@ -699,12 +699,12 @@ export declare const PluginRuleEntrySchema: z.ZodObject<{
|
|
|
699
699
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
700
700
|
priority: z.ZodOptional<z.ZodNumber>;
|
|
701
701
|
}, "strip", z.ZodTypeAny, {
|
|
702
|
-
name: string;
|
|
703
702
|
filter: {
|
|
704
703
|
toolNames?: string[] | undefined;
|
|
705
704
|
pathGlobs?: string[] | undefined;
|
|
706
705
|
crossProjectOnly?: boolean | undefined;
|
|
707
706
|
};
|
|
707
|
+
name: string;
|
|
708
708
|
pluginId: string | null;
|
|
709
709
|
source: {
|
|
710
710
|
kind: "hook-event";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as e}from"zod";import{HARNESS_EVENTS as
|
|
1
|
+
import{z as e}from"zod";import{HARNESS_EVENTS as r,HARNESS_NAMES as a,INJECTABLE_EVENTS as s}from"./harness.js";export const PresetSchema=e.enum(["minimal","default","full"]),InitComponentsSchema=e.object({settings:e.boolean(),skills:e.boolean(),commands:e.boolean(),agents:e.boolean(),helpers:e.boolean(),mcp:e.boolean(),claudeMd:e.boolean(),agentsMd:e.boolean()}),HooksConfigSchema=e.object({preToolUse:e.boolean(),postToolUse:e.boolean(),userPromptSubmit:e.boolean(),sessionStart:e.boolean(),stop:e.boolean(),stopFailure:e.boolean(),subagentStop:e.boolean(),subagentStart:e.boolean(),notification:e.boolean(),postToolUseFailure:e.boolean(),permissionRequest:e.boolean(),permissionDenied:e.boolean(),preCompact:e.boolean(),sessionEnd:e.boolean(),preModelSwitch:e.boolean(),timeout:e.number().default(5e3),continueOnError:e.boolean().default(!0)}),CLAUDE_HOOK_EVENTS=r.claude,INJECTABLE_HOOK_EVENTS=s.claude;const i=e.enum(a),l=e.enum([...a,"any"]);export const HookRuleSourceSchema=e.discriminatedUnion("kind",[e.object({kind:e.literal("hook-event"),harness:l,event:e.string().min(1)}),e.object({kind:e.literal("webhook"),routeId:e.string().min(1)}),e.object({kind:e.literal("claude-event"),event:e.string().min(1)})]);export function normalizeHookRuleSource(n){return n.kind==="claude-event"?{kind:"hook-event",harness:"claude",event:n.event}:n}export function hookSourceHarness(n){return n.kind==="claude-event"?"claude":n.kind==="hook-event"?n.harness:null}export const HookRuleFilterSchema=e.object({toolNames:e.array(e.string().min(1)).optional(),pathGlobs:e.array(e.string().min(1)).optional(),crossProjectOnly:e.boolean().optional()}),HandlerConfigSchema=e.discriminatedUnion("type",[e.object({type:e.literal("log")}),e.object({type:e.literal("webhook"),url:e.string().url(),secret:e.string().optional(),headers:e.record(e.string(),e.string()).optional()}),e.object({type:e.literal("inject"),template:e.string().min(1)}),e.object({type:e.literal("manual"),template:e.string().min(1)}),e.object({type:e.literal("plugin"),pluginId:e.string().min(1),handlerType:e.string().min(1),config:e.record(e.string(),e.unknown()).optional()}),e.object({type:e.literal("classify"),prompt:e.string().min(1),prefilter:e.array(e.string().min(1)).optional(),cooldownMs:e.number().int().positive().optional(),routes:e.array(e.object({label:e.string().min(1),url:e.string().url(),secret:e.string().optional(),headers:e.record(e.string(),e.string()).optional()})).min(1)})]),HookRuleOriginSchema=e.enum(["user","plugin","builtin"]),HookRuleSchema=e.object({id:e.string().min(1),name:e.string().min(1),enabled:e.boolean(),priority:e.number().int(),projectId:e.number().int().nullable(),source:HookRuleSourceSchema,filter:HookRuleFilterSchema.default({}),handler:HandlerConfigSchema,timeoutMs:e.number().int().positive().default(5e3),record:e.boolean().default(!0),origin:HookRuleOriginSchema.default("user"),pluginId:e.string().min(1).nullable().default(null)}),WEAVE_PLUGIN_MANIFEST="weave-plugin.json",PluginRuleEntrySchema=HookRuleSchema.omit({id:!0,projectId:!0}).extend({enabled:e.boolean().optional(),priority:e.number().int().optional()}),WeavePluginManifestSchema=e.object({manifestVersion:e.literal(1),id:e.string().regex(/^[a-z][a-z0-9-]{0,63}$/),name:e.string().min(1),version:e.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/),description:e.string().optional(),author:e.string().optional(),engines:e.object({weave:e.string().optional()}).optional(),rules:e.array(e.string().min(1)).default([]),handlers:e.array(e.object({type:e.string().min(1),entry:e.string().min(1)})).default([]),requires:e.object({events:e.array(e.string().min(1)).optional()}).optional(),templates:e.object({skills:e.array(e.string().min(1)).optional(),commands:e.array(e.string().min(1)).optional(),agents:e.array(e.string().min(1)).optional()}).optional(),mcpServers:e.record(e.string(),e.unknown()).optional(),subscribe:e.object({events:e.array(e.string().min(1)),entry:e.string().min(1)}).optional(),statusline:e.object({entry:e.string().min(1)}).optional(),config:e.record(e.string(),e.unknown()).optional()}),HookDispatchStatusSchema=e.enum(["pending","injected","running","succeeded","failed","timeout"]),HookDispatchModeSchema=e.enum(["auto","manual"]),SkillsConfigSchema=e.object({core:e.boolean()}),CommandsConfigSchema=e.object({core:e.boolean()}),AgentsConfigSchema=e.object({core:e.boolean()}),MCPConfigSchema=e.object({weave:e.boolean(),autoStart:e.boolean().default(!1)}),RuntimeConfigSchema=e.object({initVersion:e.string(),initTimestamp:e.string(),preset:PresetSchema,harnesses:e.array(i).optional(),components:InitComponentsSchema,hooks:HooksConfigSchema.partial().optional(),mcp:MCPConfigSchema.partial().optional()}),PlatformInfoSchema=e.object({os:e.enum(["windows","darwin","linux"]),arch:e.enum(["x64","arm64"]),nodeVersion:e.string(),shell:e.enum(["powershell","cmd","bash","zsh","sh"]),homeDir:e.string(),configDir:e.string()}),InitOptionsSchema=e.object({targetDir:e.string().default(process.cwd()),force:e.boolean().default(!1),interactive:e.boolean().default(!0),preset:PresetSchema.default("default"),harnesses:e.array(i).optional(),components:InitComponentsSchema.partial().default({}),hooks:HooksConfigSchema.partial().default({}),skills:SkillsConfigSchema.partial().default({}),commands:CommandsConfigSchema.partial().default({}),agents:AgentsConfigSchema.partial().default({}),mcp:MCPConfigSchema.partial().default({})}),InitResultSchema=e.object({success:e.boolean(),platform:PlatformInfoSchema,created:e.object({directories:e.array(e.string()),files:e.array(e.string())}),skipped:e.array(e.string()),merged:e.array(e.string()),updated:e.array(e.string()),errors:e.array(e.string()),removed:e.array(e.string()),summary:e.object({skillsCount:e.number(),commandsCount:e.number(),agentsCount:e.number(),hooksEnabled:e.number()})}),MINIMAL_COMPONENTS={settings:!0,skills:!0,commands:!1,agents:!1,helpers:!1,mcp:!1,claudeMd:!0,agentsMd:!0},DEFAULT_COMPONENTS={settings:!0,skills:!0,commands:!1,agents:!1,helpers:!0,mcp:!0,claudeMd:!0,agentsMd:!0},FULL_COMPONENTS={settings:!0,skills:!0,commands:!0,agents:!0,helpers:!0,mcp:!0,claudeMd:!0,agentsMd:!0},DEFAULT_HOOKS={preToolUse:!0,postToolUse:!0,userPromptSubmit:!0,sessionStart:!0,stop:!0,stopFailure:!0,subagentStop:!0,subagentStart:!0,notification:!0,postToolUseFailure:!0,permissionRequest:!0,permissionDenied:!0,preCompact:!0,sessionEnd:!0,preModelSwitch:!0,timeout:5e3,continueOnError:!0},DEFAULT_SKILLS={core:!0},DEFAULT_COMMANDS={core:!0},DEFAULT_AGENTS={core:!0},DEFAULT_MCP={weave:!1,autoStart:!1};export function resolveComponents(n,o){const t=n==="minimal"?MINIMAL_COMPONENTS:n==="full"?FULL_COMPONENTS:DEFAULT_COMPONENTS;return o?{...t,...o}:{...t}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{mkdir as
|
|
1
|
+
import{mkdir as a,readFile as e,writeFile as n,stat as s}from"node:fs/promises";import c from"node:path";export async function ensureDir(t){await a(t,{recursive:!0})}export async function writeFileIfAbsent(t,r,i){try{if(await e(t,"utf-8"),!i)return!1}catch{}return await ensureDir(c.dirname(t)),await n(t,r,"utf-8"),!0}export async function fileExists(t){try{return await s(t),!0}catch{return!1}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{readFile as
|
|
2
|
-
`,"utf-8");return}const
|
|
3
|
-
`,"utf-8")},async mcpRemove(r,
|
|
1
|
+
import{readFile as j,writeFile as u}from"node:fs/promises";import c from"node:path";import{FILE_ASSET_SPECS as m}from"../shared/file-specs.js";const l=".mcp.json",p=".claude.json";export class ClaudeJsonCorruptError extends Error{constructor(e){super(e),this.name="ClaudeJsonCorruptError"}}function f(r){if(!r||r.includes("/")||r.includes("\\")||r.includes(".."))throw new Error(`Invalid asset name: "${r}"`)}async function d(r){try{const e=JSON.parse(await j(r,"utf-8"));return e&&typeof e=="object"?e:{}}catch{return{}}}export async function readClaudeJson(r){const e=c.join(r,p);let o;try{o=await j(e,"utf-8")}catch{return{}}let t;try{t=JSON.parse(o)}catch(s){throw new ClaudeJsonCorruptError(`~/.claude.json is not valid JSON \u2014 refusing to write: ${s instanceof Error?s.message:String(s)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new ClaudeJsonCorruptError("~/.claude.json is not a JSON object \u2014 refusing to write");return t}export const CLAUDE_ASSETS={harness:"claude",targetDir(r,e,o,t){const s=m[r].dirs.claude;if(e==="user"){if(!s?.user)throw new Error(`"${r}" is project-scoped only (no user-level directory)`);return c.join(t,...s.user.split("/"))}if(!s?.project)throw new Error(`"${r}" has no Claude project surface`);return c.join(o,...s.project.split("/"))},projectSkillsRoots:()=>[".claude/skills"],globalSkillsRoots:r=>[c.join(r,...".claude/skills".split("/"))],userConfigFile:r=>c.join(r,".claude","settings.json"),mcpScopes:()=>["project","user"],mcpDest:(r,e)=>r==="project"?".mcp.json":c.join(e,".claude.json"),pluginCacheDir:r=>c.join(r,".claude","plugins","cache"),async mcpRead(r,e,o){if(r==="project")return(await d(c.join(e,l))).mcpServers??{};const t=(await readClaudeJson(o)).mcpServers;return!t||typeof t!="object"||Array.isArray(t)?{}:t},async mcpWrite(r,e,o,t,s){if(f(t),r==="project"){const a=c.join(e,l),i=await d(a);i.mcpServers={...i.mcpServers??{},[t]:s},await u(a,`${JSON.stringify(i,null,2)}
|
|
2
|
+
`,"utf-8");return}const n=await readClaudeJson(o);n.mcpServers={...n.mcpServers??{},[t]:s},await u(c.join(o,p),`${JSON.stringify(n,null,2)}
|
|
3
|
+
`,"utf-8")},async mcpRemove(r,e,o,t){f(t);const s=r==="project"?c.join(e,l):c.join(o,p),n=r==="project"?await d(s):await readClaudeJson(o),a=n.mcpServers??{};return t in a?(delete a[t],n.mcpServers=a,await u(s,`${JSON.stringify(n,null,2)}
|
|
4
4
|
`,"utf-8"),!0):!1},classify(r){return r===".claude"||r.startsWith(".claude/")||r===".mcp.json"?!0:r.slice(r.lastIndexOf("/")+1)==="CLAUDE.md"},ignore(r){return r===".claude"||r.startsWith(".claude/")?r===".claude/projects"||r.startsWith(".claude/projects/")||r===".claude/cache"||r.startsWith(".claude/cache/")||r===".claude/worktrees"||r.startsWith(".claude/worktrees/"):r!==".mcp.json"&&r!=="CLAUDE.md"}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{homedir as
|
|
1
|
+
import{homedir as l}from"node:os";import{access as k,mkdir as E,readFile as f,unlink as C,writeFile as h}from"node:fs/promises";import o from"node:path";import{HARNESS_DIRS as d,HARNESS_EVENTS as S,INJECTABLE_EVENTS as D,TERMINAL_LOCATOR_ENV_KEYS as w,TITLE_EFFECTIVE_EVENTS as j}from"@weavecode/core";import{CLAUDE_PROMPT_INBOX as v}from"./prompt-inbox.js";export function generateHookHandler(e,t="claude"){return`#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* weave hook-handler \u2014 collects Claude Code hook events into the global weave
|
|
4
4
|
* data directory and renders locally-mirrored injections. No network, no
|
|
@@ -28,15 +28,15 @@ const crypto = require('crypto');
|
|
|
28
28
|
const HOOK_GUARD_MS = 2000;
|
|
29
29
|
// Events that can carry additionalContext back via hook output (harness
|
|
30
30
|
// contract; mirrors INJECTABLE_EVENTS server-side).
|
|
31
|
-
const INJECTABLE_EVENTS = ${JSON.stringify(
|
|
31
|
+
const INJECTABLE_EVENTS = ${JSON.stringify(D[t])};
|
|
32
32
|
// The host applies hookSpecificOutput.sessionTitle ONLY on these events (mirrors
|
|
33
33
|
// TITLE_EFFECTIVE_EVENTS) \u2014 tool events record hook_success but drop the field
|
|
34
34
|
// (verified against Claude Code 2.1.296).
|
|
35
|
-
const TITLE_EVENTS = ${JSON.stringify(
|
|
35
|
+
const TITLE_EVENTS = ${JSON.stringify(j[t])};
|
|
36
36
|
// Terminal pane locator env (mirrors TERMINAL_LOCATOR_ENV_KEYS in @weavecode/core):
|
|
37
37
|
// captured in the pane's own child process and reported on the inbox line's side
|
|
38
38
|
// channel, so the daemon can address THIS session's pane exactly.
|
|
39
|
-
const TERMINAL_ENV_KEYS = ${JSON.stringify(
|
|
39
|
+
const TERMINAL_ENV_KEYS = ${JSON.stringify(w)};
|
|
40
40
|
const INBOX_MAX_BYTES = 4 * 1024 * 1024;
|
|
41
41
|
const INBOX_MAX_LINES = 1000;
|
|
42
42
|
const OUTBOX_MAX_LINES = 200;
|
|
@@ -80,9 +80,9 @@ function hooksDir() {
|
|
|
80
80
|
// \u8BE5\u4F1A\u8BDD\u7684 hooks \u4E0E Bash\uFF09\uFF1Adaemon \u4FA7\u53EA\u653E\u5185\u5B58\u3001\u4E0D\u843D\u5E93\u4E0D\u8FDB UI \u2014\u2014 \u4E0A\u62A5\u8D70 inbox
|
|
81
81
|
// \u884C\u7684\u65C1\u8DEF\u5B57\u6BB5\uFF08\u4E0D\u8FDB report/payload\uFF09\u3002
|
|
82
82
|
function messagingEnv() {
|
|
83
|
-
var sock = process.env.${
|
|
83
|
+
var sock = process.env.${v.socketEnv};
|
|
84
84
|
if (!sock) return null;
|
|
85
|
-
return { socket: sock, token: process.env.${
|
|
85
|
+
return { socket: sock, token: process.env.${v.tokenEnv} || null };
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
// \u7EC8\u7AEF\u628A\u300C\u672C pane\u300D\u5BFC\u51FA\u7684\u73AF\u5883\u53D8\u91CF\uFF08wezterm \u7B49\uFF09\u3002\u672C\u8FDB\u7A0B\u751F\u5728\u4F1A\u8BDD\u81EA\u5DF1\u7684 pane \u91CC\uFF0C
|
|
@@ -381,6 +381,6 @@ async function main() {
|
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
main().catch(function () { process.exit(0); });
|
|
384
|
-
`}export const HOOK_HANDLER_MARKER=".claude/helpers/hook-handler.cjs";function
|
|
385
|
-
`,"utf-8")}export async function readUserCapture(e={}){const t=e.home??
|
|
386
|
-
`,"utf-8")}export async function uninstallUserCapture(e={}){const t=e.home??
|
|
384
|
+
`}export const HOOK_HANDLER_MARKER=".claude/helpers/hook-handler.cjs";function c(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function y(e){return e.replace(/\\/g,"/")}export function groupIsWeave(e){if(!c(e))return!1;const t=e.hooks;return Array.isArray(t)?t.some(r=>c(r)&&typeof r.command=="string"&&y(r.command).includes(HOOK_HANDLER_MARKER)):!1}export function captureHookGroup(e,t){const r=`node "${y(t)}/hook-handler.cjs"`,u=!D.claude.includes(e);return[{matcher:"*",hooks:[{type:"command",command:r,...u?{async:!0}:{}}]}]}export function sweepWeaveHookEvents(e){if(!c(e))return;const t={};for(const[r,u]of Object.entries(e)){if(!Array.isArray(u)){t[r]=u;continue}const i=u.filter(s=>!groupIsWeave(s));i.length>0&&(t[r]=i)}return Object.keys(t).length>0?t:void 0}export function captureGroupsPresent(e){if(!c(e))return!1;const t=e.hooks;return c(t)?Object.values(t).some(r=>Array.isArray(r)&&r.some(groupIsWeave)):!1}function F(e){return o.join(e,d.claude.userDir,"settings.json")}function p(e){return o.join(e,d.claude.userDir,"helpers")}const g="@version weave@";async function B(e){try{return await k(e),!0}catch{return!1}}async function m(e){let t;try{t=await f(e,"utf-8")}catch{return{}}let r;try{r=JSON.parse(t)}catch{throw new Error(`user settings is not parseable JSON: ${e}`)}if(!c(r))throw new Error(`user settings is not a JSON object: ${e}`);return r}async function A(e){let t;try{t=await m(e)}catch{return}const r=sweepWeaveHookEvents(t.hooks);r===void 0?delete t.hooks:t.hooks=r,await E(o.dirname(e),{recursive:!0}),await h(e,JSON.stringify(t,null,2)+`
|
|
385
|
+
`,"utf-8")}export async function readUserCapture(e={}){const t=e.home??l(),r=await m(F(t));return{installed:captureGroupsPresent(r),helperPresent:await B(o.join(p(t),"hook-handler.cjs"))}}export async function readScriptHealth(e={}){const t=e.home??l(),r=o.join(p(t),"hook-handler.cjs"),u=e.projectPath?o.join(e.projectPath,d.claude.projectDir,"helpers","hook-handler.cjs"):null,i=(await readUserCapture({home:t})).installed,s=i?"user":u?"project":"none",a=i?r:u??r;let n=null;try{n=await f(a,"utf-8")}catch{n=null}return{source:s,present:n!==null,weaveOwned:n!==null&&n.includes(g),generatedVersion:n?.match(/@version weave@(\S+)/)?.[1]??null,reportsInbox:n!==null&&n.includes(v.socketEnv),reportsPaneEnv:n!==null&&n.includes("terminalEnv()")}}export async function installUserCapture(e){const t=e.home??l(),r=p(t);await E(r,{recursive:!0}),await h(o.join(r,"hook-handler.cjs"),generateHookHandler(e.version),"utf-8");const u=F(t),i=await m(u),s=sweepWeaveHookEvents(i.hooks)??{};for(const a of S.claude){const n=s[a];s[a]=Array.isArray(n)?[...n,...captureHookGroup(a,r)]:captureHookGroup(a,r)}i.hooks=s,await E(o.dirname(u),{recursive:!0}),await h(u,JSON.stringify(i,null,2)+`
|
|
386
|
+
`,"utf-8")}export async function uninstallUserCapture(e={}){const t=e.home??l();await A(F(t));const r=o.join(p(t),"hook-handler.cjs");try{(await f(r,"utf-8")).includes(g)&&await C(r)}catch{}}export async function stripProjectCapture(e){await A(o.join(e,d.claude.projectDir,"settings.json"))}export const CLAUDE_CAPTURE={harness:"claude",readUserCapture:e=>readUserCapture(e),installUserCapture:e=>installUserCapture(e),uninstallUserCapture:e=>uninstallUserCapture(e),stripProjectCapture,scriptHealth:e=>readScriptHealth(e)};
|
|
@@ -3,6 +3,8 @@ import { type PluginExecutor } from './plugins.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* 转录里的命令执行:`<command-name>` 那一条之后若紧跟 `<local-command-stdout>`,
|
|
5
5
|
* 就是一次内建命令(skill 命令后面跟的是 isMeta 展开正文,不算——它已经有 UPS 气泡)。
|
|
6
|
+
* bash 模式同构:`<bash-input>` 之后紧跟 `<bash-stdout>`(+`<bash-stderr>`)——
|
|
7
|
+
* bash 不发 UPS、hook 域零事件,转录这两行是它执行过的唯一证据。
|
|
6
8
|
*
|
|
7
9
|
* 按**字节游标**增量累积(同 narration):`pending`(等 stdout 的那条命令)是跨行
|
|
8
10
|
* 状态,跟着游标一起存——两行可能分在两次读里。文件被截断/换掉 ⇒ 全部作废重来。
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import{readdir as
|
|
2
|
-
`).find(
|
|
1
|
+
import{readdir as k,readFile as v,stat as j}from"node:fs/promises";import{homedir as A}from"node:os";import c from"node:path";import{execCli as M}from"./plugins.js";import{readNewLines as L,transcriptSize as $}from"./transcript-cursor.js";const I=[{name:"add-dir",description:"Add a new working directory",argsHint:"[<path>]",source:"builtin"},{name:"artifacts",description:"Browse your published and shared artifacts",source:"builtin"},{name:"auto-mode-setup",description:"Teach auto mode about your environment, plus optional rule tweaks",source:"builtin"},{name:"autocompact",description:"Set how full the context gets before auto-summarizing",argsHint:"[auto|<tokens>]",source:"builtin"},{name:"background",description:"Send this session to the background and free the terminal",argsHint:"[prompt]",source:"builtin"},{name:"branch",description:"Create a branch of the current conversation at this point",argsHint:"[name]",source:"builtin"},{name:"brief",description:"Toggle brief-only mode",source:"builtin"},{name:"btw",description:"Ask a quick side question without interrupting the main conversation",argsHint:"[question]",source:"builtin"},{name:"bug",description:"Report a bug or share your conversation",argsHint:"[report]",source:"builtin"},{name:"cd",description:"Move this session to a new working directory",argsHint:"[<path>]",source:"builtin"},{name:"clear",description:"Start a new session with empty context; previous session stays on disk (resumable with /resume)",source:"builtin"},{name:"cloud-plugins",description:"Choose whether cloud sessions use the plugins enabled on this machine",source:"builtin"},{name:"code-review",description:"Review the current diff or a PR for bugs and cleanups",source:"builtin"},{name:"color",description:"Set the prompt bar color for this session",source:"builtin"},{name:"compact",description:"Free up context by summarizing the conversation so far",argsHint:"[instructions]",source:"builtin"},{name:"config",description:"Open settings",argsHint:"[key=value]",source:"builtin"},{name:"context",description:"Visualize current context usage as a colored grid",argsHint:"[all]",source:"builtin"},{name:"copy",description:"Copy Claude's last response to clipboard (or /copy N for the Nth-latest)",source:"builtin"},{name:"daemon",description:"Manage background services and routines",source:"builtin"},{name:"debug",description:"Turn on debug logging and investigate problems",argsHint:"[issue description]",source:"builtin"},{name:"design-login",description:"Authorize design-system access for /design-sync with your claude.ai account",source:"builtin"},{name:"diff",description:"View uncommitted changes and per-turn diffs",source:"builtin"},{name:"doctor",description:"Health-check your setup and fix issues: installation, unused extensions, duplicated or bloated memory files, slow hooks, updates, permissions",source:"builtin"},{name:"effort",description:"Set effort level for model usage",argsHint:"[level]",source:"builtin"},{name:"exit",description:"Exit the CLI",source:"builtin"},{name:"export",description:"Export the current conversation to a file or clipboard",argsHint:"[filename]",source:"builtin"},{name:"feedback",description:"Send feedback to Anthropic or report a bug",argsHint:"[report]",source:"builtin"},{name:"focus",description:"Toggle focus view: just your prompt, summary, and response",source:"builtin"},{name:"fork",description:"Spawn a background agent that inherits the full conversation",argsHint:"[<directive>]",source:"builtin"},{name:"goal",description:"Set a goal Claude checks before stopping",argsHint:"[<condition> | clear]",source:"builtin"},{name:"help",description:"Show help and available commands",source:"builtin"},{name:"hooks",description:"View hook configurations for tool events",argsHint:"[name]",source:"builtin"},{name:"ide",description:"Manage IDE integrations and show status",argsHint:"[open]",source:"builtin"},{name:"init",description:"Initialize a CLAUDE.md for this project",source:"builtin",inline:!0},{name:"insights",description:"Generate a report analyzing your Claude Code sessions",source:"builtin",inline:!0},{name:"install",description:"Install Claude Code native build",argsHint:"[options]",source:"builtin"},{name:"install-github-app",description:"Set up Claude GitHub Actions for a repository",source:"builtin"},{name:"install-slack-app",description:"Install the Claude Slack app",source:"builtin"},{name:"keybindings",description:"Open your keyboard shortcuts file",source:"builtin"},{name:"list-agents",description:"List subagents, teammates, and other Claude sessions you can message",source:"builtin"},{name:"login",description:"Sign in with your Anthropic account",source:"builtin"},{name:"logout",description:"Sign out from your Anthropic account",source:"builtin"},{name:"loops",description:"List, create, and delete loops",argsHint:"[name]",source:"builtin"},{name:"mcp",description:"Manage MCP servers",source:"builtin"},{name:"memory",description:"Edit CLAUDE.md files and memory settings",source:"builtin"},{name:"mobile",description:"Show QR code to download the Claude mobile app",source:"builtin"},{name:"model",description:"Set the AI model for Claude Code",argsHint:"[model]",source:"builtin"},{name:"permissions",description:"Manage allow and deny tool permission rules",argsHint:"[open|<description>]",source:"builtin"},{name:"plan",description:"Enable plan mode or view the current session plan",argsHint:"[open|<description>]",source:"builtin"},{name:"plugin",description:"Manage Claude Code plugins",source:"builtin"},{name:"powerup",description:"Discover Claude Code features through quick interactive lessons",argsHint:"[name]",source:"builtin"},{name:"privacy-settings",description:"View and update your privacy settings",source:"builtin"},{name:"radio",description:"Listen to Claude FM lo-fi radio",source:"builtin"},{name:"rate-limit-options",description:"Manage usage limits and upgrade options",source:"builtin"},{name:"recap",description:"Generate a one-line session recap now",source:"builtin"},{name:"release-notes",description:"View release notes",source:"builtin"},{name:"reload-plugins",description:"Activate pending plugin changes in the current session",argsHint:"[--force]",source:"builtin"},{name:"reload-skills",description:"Pick up skills added or changed on disk during this session",source:"builtin"},{name:"rename",description:"Rename the current conversation",argsHint:"[name]",source:"builtin"},{name:"resume",description:"Resume a previous conversation",argsHint:"[conversation id or search term]",source:"builtin"},{name:"rewind",description:"Restore the code and/or conversation to a previous point",source:"builtin"},{name:"scroll-speed",description:"Adjust mouse wheel scroll speed",source:"builtin"},{name:"security-review",description:"Complete a security review of the pending changes on the current branch",source:"builtin"},{name:"skill-doctor",description:"Show which loaded skills are unused and costing context",source:"builtin"},{name:"skills",description:"List available skills",source:"builtin"},{name:"status",description:"Show Claude Code status including version, model, account, API connectivity, and tool statuses",source:"builtin"},{name:"statusline",description:"Set up Claude Code's status line UI",source:"builtin",inline:!0},{name:"stickers",description:"Order Claude Code stickers",source:"builtin"},{name:"stop",description:"Stop this background session; transcript and worktree are kept",source:"builtin"},{name:"subtask",description:"Send a subagent off with your full context; its result comes back here",argsHint:"[<task>]",source:"builtin"},{name:"tasks",description:"View and manage everything running in the background",source:"builtin"},{name:"terminal-setup",description:"Check terminal setup for key bindings like Shift+Enter",source:"builtin"},{name:"theme",description:"Change the theme",source:"builtin"},{name:"tui",description:"Set the terminal UI renderer (default | fullscreen)",argsHint:"[default|fullscreen]",source:"builtin"},{name:"ultraplan",description:"Draft an editable plan in a cloud session",argsHint:"[<prompt>]",source:"builtin"},{name:"ultrareview",description:"Start a cloud agent that finds and verifies bugs in your branch",source:"builtin"},{name:"upgrade",description:"Upgrade to Max for higher rate limits and more Opus",source:"builtin"},{name:"usage",description:"Show session cost, plan usage, and activity stats",source:"builtin"},{name:"usage-credits",description:"Configure usage credits or request them from your admin when you hit a limit",source:"builtin"},{name:"version",description:"Show this session's version (autoupdate may have a newer one)",source:"builtin"},{name:"wellbeing",description:"Configure optional break reminders and quiet-hours nudges",source:"builtin"},{name:"workflows",description:"Browse running and completed workflows",source:"builtin"}];function S(n){const t=/^---\r?\n([\s\S]*?)\r?\n---/.exec(n)?.[1]??"";return/^description:\s*(.+)$/m.exec(t)?.[1]?.trim().replace(/^["']|["']$/g,"")||(n.replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/,"").split(`
|
|
2
|
+
`).find(i=>i.trim()!==""&&!i.startsWith("#"))?.trim()??"")}async function C(n){try{const t=await j(n);return t.isDirectory()?"dir":t.isFile()?"file":"other"}catch{return"other"}}async function D(n){try{const t=[];for(const i of await k(n,{withFileTypes:!0})){if(!i.name.endsWith(".md"))continue;const e=c.join(n,i.name);(i.isFile()||i.isSymbolicLink()&&await C(e)==="file")&&t.push(e)}return t}catch{return[]}}async function m(n){try{const t=[];for(const i of await k(n,{withFileTypes:!0})){const e=c.join(n,i.name);(i.isDirectory()||i.isSymbolicLink()&&await C(e)==="dir")&&t.push(e)}return t}catch{return[]}}async function x(n){const t=[],i=async(e,o)=>{for(const s of await D(e)){const r=`${o}${c.basename(s,".md")}`,a=S(await v(s,"utf8").catch(()=>""));t.push({name:r,description:a,source:"command",inline:!0})}for(const s of await m(e))await i(s,`${o}${c.basename(s)}:`)};return await i(n,""),t}async function g(n,t="",i="skill"){const e=[];for(const o of await m(n)){const s=S(await v(c.join(o,"SKILL.md"),"utf8").catch(()=>""));e.push({name:`${t}${c.basename(o)}`,description:s,source:i,inline:!0})}return e}async function E(n){const t=[],i=new Set;for(const e of await m(c.join(n,"plugins","cache")))for(const o of await m(e)){const s=c.basename(o);if(!i.has(s))for(const r of await m(o)){const a=await g(c.join(r,"skills"),`${s}:`,"plugin");if(a.length>0){i.add(s),t.push(...a);break}}}return t}async function P(n){try{const{stdout:t}=await n(["plugin","list","--json"],{timeoutMs:15e3}),i=JSON.parse(t);if(!Array.isArray(i))return null;const e=[];for(const o of i){if(!o||typeof o!="object")continue;const s=o;if(typeof s.id!="string"||typeof s.installPath!="string")continue;const r=s.id.lastIndexOf("@");e.push({plugin:r>0?s.id.slice(0,r):s.id,enabled:s.enabled===!0,installPath:s.installPath})}return e}catch{return null}}async function z(n){const t=await P(n);if(!t)return null;const i=[];for(const e of t)e.enabled&&i.push(...await g(c.join(e.installPath,"skills"),`${e.plugin}:`,"plugin"));return i}function O(n){const t=new Set,i=[];for(const e of n)t.has(e.name)||(t.add(e.name),i.push(e));return i}const F=n=>typeof n=="string"?n:"";function R(n){return/<command-args>([\s\S]*?)<\/command-args>/.exec(n)?.[1]?.trim()??""}const d=new Map,N=64;export async function commandExecutions(n){const t=$(n);if(t===null)return d.delete(n),null;const i=d.get(n);d.delete(n);const e=i??{cur:{offset:0},out:[],pending:null};t<e.cur.offset&&(e.cur.offset=0,e.out=[],e.pending=null);const o=L(n,e.cur,t);if(o===null)return null;const s=e.out;let r=e.pending;for(const a of o){if(!a.includes("<command-")&&!a.includes("<local-command-stdout>")&&!a.includes("<bash-"))continue;let l;try{l=JSON.parse(a)}catch{continue}if(l===null||typeof l!="object")continue;const p=l,u=p.message?.content;if(typeof u!="string")continue;const b=F(p.timestamp),h=/<command-name>([^<]*)<\/command-name>/.exec(u)?.[1]?.trim();if(h?.startsWith("/")){r={name:h.slice(1),args:R(u),at:b};continue}const f=/<bash-input>([\s\S]*?)<\/bash-input>/.exec(u)?.[1];if(f!==void 0){r={name:f.trim(),args:"",at:b,sigil:"!"};continue}const H=/<local-command-stdout>([\s\S]*?)<\/local-command-stdout>/.exec(u)?.[1]??/<bash-stdout>([\s\S]*?)<\/bash-stdout>/.exec(u)?.[1]??"";if(r===null)continue;const w=/<bash-stderr>([\s\S]*?)<\/bash-stderr>/.exec(u)?.[1]?.trim()??"",y=[H.replace(/\u001b\[[0-9;]*m/g,"").trim(),w?`[stderr] ${w}`:""].filter(Boolean).join(`
|
|
3
|
+
`);s.push({...r,...y!==""?{output:y}:{}}),r=null}if(e.pending=r,d.size>=N){const a=d.keys().next().value;a!==void 0&&d.delete(a)}return d.set(n,e),s}const T=6e4,U=16;export function createClaudeCommandSurface(n={}){const t=n.exec??M,i=new Map;return{harness:"claude",inputModes:[{kind:"slash",sigil:"/",named:!0},{kind:"bash",sigil:"!",named:!1}],async list({projectPath:e,homedir:o=A()}){const s=`${e}\0${o}`,r=Date.now(),a=i.get(s);if(a&&r-a.at<T)return a.rows;const l=c.join(o,".claude"),p=O([...I,...await x(c.join(e,".claude","commands")),...await x(c.join(l,"commands")),...await g(c.join(e,".claude","skills")),...await g(c.join(l,"skills")),...await z(t)??await E(l)]);if(i.size>=U){const u=i.keys().next().value;u!==void 0&&i.delete(u)}return i.set(s,{at:r,rows:p}),p},executions:e=>e?commandExecutions(e):Promise.resolve(null)}}export const CLAUDE_COMMANDS=createClaudeCommandSurface();
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
`,"utf8"),await
|
|
1
|
+
import E from"node:fs/promises";import{homedir as y}from"node:os";import f from"node:path";import{CONFIG_SHAPE_OVERRIDES as _}from"./config-shapes.js";import{WEAVE_MARKETPLACE as P}from"./plugins.js";import{CLAUDE_ENV_VARS as C,CLAUDE_SETTINGS_GROUPS as S,CLAUDE_SETTINGS_KEYS as w}from"./settings-catalog.generated.js";import{WEAVE_PERMISSIONS_ALLOW as D,WEAVE_PERMISSIONS_DENY as I,statusLineIsWeave as R}from"./settings-gen.js";const F=2*1024*1024,v="https://api.anthropic.com",$="2023-06-01",L=["$comment","hooks","env.WEAVE_ENABLED"],b=[{id:"user",profiles:!0},{id:"project",profiles:!1},{id:"projectLocal",profiles:!1},{id:"global",profiles:!0}];function A(t,r){switch(t){case"user":return f.join(r.homedir,".claude","settings.json");case"project":return r.projectPath?f.join(r.projectPath,".claude","settings.json"):"";case"projectLocal":return r.projectPath?f.join(r.projectPath,".claude","settings.local.json"):"";case"global":return f.join(r.homedir,".claude.json")}}function H(t){return t==="projectLocal"?"local":t}function g(t){if(t==="global")return w.filter(e=>e.scope==="global");const r=H(t);return w.filter(e=>e.scope==="any"||e.scope===r)}function U(t){return t.map(r=>r.key in _?{...r,..._[r.key]}:r)}function j(t){return new Set(g(t).map(r=>r.key.split(".")[0]))}function c(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function k(t){return t==="__proto__"||t==="constructor"||t==="prototype"}function m(t,r){let e=t;for(const o of r.split(".")){if(!c(e))return;e=e[o]}return e}function N(t,r,e){const o=r.split(".");if(o.some(a=>!a||k(a)))throw new Error(`\u975E\u6CD5\u914D\u7F6E\u952E\uFF1A${r}`);let n=t;for(const a of o.slice(0,-1))c(n[a])||(n[a]={}),n=n[a];n[o[o.length-1]]=e}async function h(t){let r;try{if((await E.stat(t)).size>F)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u8D85\u8FC7 ${F} \u5B57\u8282\uFF1A${t}`);r=await E.readFile(t,"utf8")}catch(n){if(n.code==="ENOENT")return{};throw n}const e=r.replace(/^/,"").trim();if(!e)return{};let o;try{o=JSON.parse(e)}catch{throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E0D\u662F\u5408\u6CD5 JSON\uFF1A${t}`)}if(!c(o))throw new Error(`\u914D\u7F6E\u6587\u4EF6\u9876\u5C42\u4E0D\u662F\u5BF9\u8C61\uFF1A${t}`);return o}async function O(t,r){await E.mkdir(f.dirname(t),{recursive:!0});const e=`${t}.${process.pid}.${Date.now()}.tmp`;await E.writeFile(e,`${JSON.stringify(r,null,2)}
|
|
2
|
+
`,"utf8"),await E.rename(e,t)}function T(t,r){const e=A(t,r);if(!e)throw new Error(`\u914D\u7F6E\u6863\u4F4D ${t} \u9700\u8981\u9879\u76EE\u8DEF\u5F84`);return e}function B(t,r,e){const o=p=>p&&c(p.env)?p.env:{},n=(p,d)=>typeof p[d]=="string"?p[d]:"",a=o(t),s=o(r),i=e.apiKey||n(a,"ANTHROPIC_API_KEY")||(n(a,"ANTHROPIC_AUTH_TOKEN")?"":n(s,"ANTHROPIC_API_KEY")),l=e.authToken||n(a,"ANTHROPIC_AUTH_TOKEN")||(n(a,"ANTHROPIC_API_KEY")?"":n(s,"ANTHROPIC_AUTH_TOKEN"));return i?{header:{"x-api-key":i},credential:"apiKey"}:l?{header:{authorization:`Bearer ${l}`},credential:"authToken"}:{header:{},credential:"none"}}export async function ensureTrustAccepted(t){const r=A("global",{projectPath:null,homedir:y()}),e=await h(r),o=f.resolve(t).replace(/\\/g,"/"),n=c(e.projects)?e.projects:{},a=c(n[o])?n[o]:{};a.hasTrustDialogAccepted!==!0&&(n[o]={...a,hasTrustDialogAccepted:!0},e.projects=n,await O(r,e))}export const CLAUDE_CONFIG={harness:"claude",files(){return b.map(t=>({id:t.id,profiles:t.profiles,path:r=>A(t.id,r)}))},catalog(t){const r=U(g(t));return{groups:S.filter(e=>r.some(o=>o.group===e)),keys:r,envVars:t==="global"?[]:C}},async read(t,r){const e=await h(T(t,r)),o=j(t),n={};for(const a of o)a in e&&N(n,a,e[a]);return n},async write(t,r,e){const o=T(t,r),n=await h(o),a=j(t),s={...n};for(const i of Object.keys(n))a.has(i)&&!(i in e)&&delete s[i];for(const[i,l]of Object.entries(e))a.has(i.split(".")[0])&&N(s,i,l);await O(o,s)},managedKeys(t){const r=L.filter(e=>m(t,e)!==void 0);return t.statusLine!==void 0&&R(t.statusLine)&&r.push("statusLine"),r},managedEntries(t){const r=[];for(const[o,n]of[["permissions.allow",D],["permissions.deny",I]]){const a=m(t,o);if(Array.isArray(a))for(const s of n)a.includes(s)&&r.push({path:o,entry:s})}const e=m(t,"enabledPlugins");if(c(e))for(const o of Object.keys(e))o.endsWith(`@${P}`)&&r.push({path:"enabledPlugins",entry:o});return r},async models(t){const r=c(t.values.env)?t.values.env:{},e=typeof r.ANTHROPIC_BASE_URL=="string"?r.ANTHROPIC_BASE_URL:"",o=t.file&&t.file!=="user"?await h(A("user",{projectPath:null,homedir:t.homedir??y()})):null,n=o&&c(o.env)&&typeof o.env.ANTHROPIC_BASE_URL=="string"?o.env.ANTHROPIC_BASE_URL:"",a=(t.baseUrl||e||n||v).replace(/\/+$/,"").replace(/\/v1$/,""),{header:s,credential:i}=B(t.values,o,t),l=await fetch(`${a}/v1/models?limit=1000`,{headers:{"anthropic-version":$,...s},signal:AbortSignal.timeout(t.timeoutMs??1e4)});if(!l.ok){const u=(await l.text().catch(()=>"")).slice(0,200);throw new Error(`\u6A21\u578B\u5217\u8868\u8BF7\u6C42\u5931\u8D25\uFF1AHTTP ${l.status}${u?` ${u}`:""}`)}const p=await l.json(),d=[];if(Array.isArray(p.data))for(const u of p.data)!c(u)||typeof u.id!="string"||d.push({id:u.id,...typeof u.display_name=="string"?{name:u.display_name}:{},...typeof u.created_at=="string"?{createdAt:u.created_at}:{}});return{models:d,baseUrl:a,credential:i}},rawFormat:"json",parseRaw(t){const r=JSON.parse(t);if(typeof r!="object"||r===null||Array.isArray(r))throw new Error("\u9876\u5C42\u5FC5\u987B\u662F\u5BF9\u8C61");return r},serializeRaw(t){return`${JSON.stringify(t,null,2)}
|
|
3
3
|
`}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{existsSync as o}from"node:fs";import s from"node:path";const
|
|
1
|
+
import{existsSync as o}from"node:fs";import s from"node:path";const r=[".claude","CLAUDE.md"];function t(e){return r.some(n=>o(s.join(e,n)))}export const CLAUDE_DETECTOR={markers:r,present:t,detect:e=>({harness:"claude",present:t(e)})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createReadStream as
|
|
1
|
+
import{createReadStream as _}from"node:fs";import{createInterface as g}from"node:readline";const E=new Set(["Edit","Write","MultiEdit"]),n=t=>typeof t=="string"?t:null,p=t=>t&&typeof t=="object"?t:{};function w(t,e){if(t==="Write"){const r=n(e.content);return r===null?[]:[{before:"",after:r}]}if(t==="MultiEdit")return(Array.isArray(e.edits)?e.edits:[]).flatMap(r=>{const o=p(r),c=n(o.old_string),a=n(o.new_string);return c===null||a===null?[]:[{before:c,after:a}]});const i=n(e.old_string),s=n(e.new_string);return i===null||s===null?[]:[{before:i,after:s}]}export const CLAUDE_EDITS={async sessionEdits({transcriptPath:t}){if(!t)return null;const e=[],i=new Set,s=g({input:_(t,{encoding:"utf8"}),crlfDelay:1/0});try{for await(const r of s){if(!r.includes('"tool_use"'))continue;let o;try{o=JSON.parse(r)}catch{continue}const c=o.message?.content;if(Array.isArray(c))for(const a of c){const f=p(a);if(f.type!=="tool_use")continue;const u=n(f.name);if(!u||!E.has(u))continue;const l=n(f.id);if(l){if(i.has(l))continue;i.add(l)}const d=p(f.input),y=n(d.file_path);if(!y)continue;const h=n(o.timestamp);for(const m of w(u,d))e.push({path:y,hunk:m,at:h})}}}catch{return null}finally{s.close()}return e}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{HARNESS_EVENTS as d}from"@weavecode/core";import{capFields as
|
|
1
|
+
import{HARNESS_EVENTS as d}from"@weavecode/core";import{capFields as l}from"../shared/json-cap.js";import{CLAUDE_PLAN as y}from"./plan.js";function _(o){try{const t=JSON.parse(o);return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return{}}}function c(o,...t){for(const e of t)if(o[e]!=null)return o[e];return null}const g=[["toolName",["tool_name","toolName"]],["toolInput",["tool_input","toolInput"]],["toolResponse",["tool_response","toolResponse"]],["cwd",["cwd"]],["transcriptPath",["transcript_path","transcriptPath"]]],m=/^<\$\.([A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*)>$/;function A(o,t,e){return typeof o!="string"?null:y.draftOf(o,t,e)?.text?{input:t,response:e}:null}function w(o){const t={...o};for(const[e,n]of g)for(const r of n)r in t&&(t[r]=`<$.${e}>`);return t}export function expandPayloadRefs(o){const t=o.raw;if(!t||typeof t!="object"||Array.isArray(t))return o;const e={...t};for(const[n,r]of Object.entries(e)){const a=typeof r=="string"?m.exec(r):null;a&&(e[n]=I(o,a[1]))}return{...o,raw:e}}function I(o,t){let e=o;for(const n of t.split(".")){if(!e||typeof e!="object")return null;e=e[n]}return e??null}export class ClaudeEventSource{source="claude";events=d.claude;normalize(t,e){const n=_(t.payload),r=t.eventType||String(n.hook_event_name??"unknown"),a=t.sessionId??c(n,"session_id","sessionId"),i=c(n,"tool_name","toolName"),s=c(n,"tool_input","toolInput"),p=c(n,"tool_response","toolResponse"),u=A(i,s,p),f={eventType:r,toolName:i,toolInput:u?.input??l(s),toolResponse:u?.response??l(p),cwd:t.cwd??c(n,"cwd"),transcriptPath:c(n,"transcript_path","transcriptPath"),raw:w(n)};return{projectId:e,source:"claude",eventType:r,sessionId:a??void 0,payload:JSON.stringify(f)}}}export const CLAUDE_EVENT_SOURCE=new ClaudeEventSource;export function frameFacts(o){const t=o?.raw,e=t&&typeof t=="object"&&typeof t.agent_id=="string"?t.agent_id:void 0;let n;if(o?.eventType==="PostToolUse"&&o.toolName==="Agent"){const s=o.toolResponse;s?.isAsync&&typeof s.agentId=="string"&&(n=s.agentId)}let r;Array.isArray(t&&typeof t=="object"?t.background_tasks:void 0)&&(r=t.background_tasks.filter(s=>s&&typeof s.id=="string"&&typeof s.status=="string").map(s=>({id:s.id,status:s.status})));const a={};e&&(a.agentId=e),n&&(a.spawnAgentId=n),r&&(a.backgroundTasks=r);const i=t&&typeof t=="object"&&typeof t.source=="string"?t.source:void 0;return i&&(a.rawSource=i),a}
|