pi-harness-runtime 1.1.0 → 1.1.2
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/.pi/plugins/herdr-clipboard/herdr-plugin.toml +22 -0
- package/.pi/plugins/herdr-clipboard/start-bridge.sh +29 -0
- package/.pi/plugins/herdr-clipboard/tmux-watch.sh +39 -0
- package/CHANGELOG.md +175 -13
- package/README.md +87 -1
- package/config.toml.example +35 -0
- package/harness/autonomous-review.ts +5 -2
- package/harness/e2e/chatgpt-quota-scraper.ts +478 -0
- package/harness/e2e/glm-quota-scraper.ts +449 -0
- package/harness/herdr-agents.ts +6 -2
- package/harness/loop-code-agent.ts +4 -1
- package/harness/loop-review-agent.ts +5 -6
- package/harness/notification-events.ts +2 -2
- package/harness/task-graph.d.ts +51 -0
- package/index.ts +147 -2
- package/package.json +17 -16
- package/packages/a2a-adapter/dist/index.d.ts +1 -0
- package/packages/a2a-adapter/dist/index.d.ts.map +1 -1
- package/packages/a2a-adapter/dist/index.js +1 -0
- package/packages/a2a-adapter/dist/index.js.map +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/a2a-adapter/src/discovery.ts +106 -0
- package/packages/a2a-adapter/src/index.ts +8 -0
- package/packages/architecture-generator/package.json +21 -0
- package/packages/architecture-generator/src/adr.ts +51 -0
- package/packages/architecture-generator/src/index.ts +9 -0
- package/packages/architecture-generator/src/mermaid.ts +76 -0
- package/packages/architecture-generator/src/types.ts +30 -0
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +2 -2
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard/src/copy-sync.ts +52 -3
- package/packages/clipboard/src/index.ts +1 -0
- package/packages/clipboard/src/paste-bridge.ts +86 -0
- package/packages/clipboard-plugin/package.json +17 -0
- package/packages/clipboard-plugin/src/index.ts +74 -0
- package/packages/clipboard-plugin/src/types.ts +30 -0
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +2 -2
- package/packages/config-capture/package.json +23 -0
- package/packages/config-capture/src/index.ts +357 -0
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-bus/src/herdr-bus.ts +4 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +17 -0
- package/packages/file-copy-helper/src/extension.debug.ts +226 -0
- package/packages/file-copy-helper/src/extension.ts +226 -0
- package/packages/file-copy-helper/src/index.ts +1 -0
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/knowledge-graph/package.json +24 -0
- package/packages/knowledge-graph/src/graph-extractor.ts +338 -0
- package/packages/knowledge-graph/src/index.ts +27 -0
- package/packages/knowledge-graph/src/mcp-client.ts +237 -0
- package/packages/knowledge-graph/src/provenance-linker.ts +101 -0
- package/packages/knowledge-graph/src/types.ts +86 -0
- package/packages/knowledge-retrieval/package.json +25 -0
- package/packages/knowledge-retrieval/src/index.ts +18 -0
- package/packages/knowledge-retrieval/src/mcp-client.ts +212 -0
- package/packages/knowledge-retrieval/src/types.ts +112 -0
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +21 -0
- package/packages/milestone-manager/src/engine.ts +105 -0
- package/packages/milestone-manager/src/index.ts +6 -0
- package/packages/milestone-manager/src/types.ts +28 -0
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/notification/src/adapters/line-adapter.ts +119 -0
- package/packages/notification/src/index.ts +1 -0
- package/packages/notification/src/notification-center.ts +6 -0
- package/packages/notification/src/types.ts +7 -2
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +12 -0
- package/packages/okf-indexer/src/cli.ts +25 -0
- package/packages/okf-indexer/src/indexer.ts +186 -0
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +24 -0
- package/packages/project-bootstrap/src/bootstrap.ts +166 -0
- package/packages/project-bootstrap/src/frappe.ts +97 -0
- package/packages/project-bootstrap/src/index.ts +27 -0
- package/packages/project-bootstrap/src/minimal.ts +45 -0
- package/packages/project-bootstrap/src/types.ts +66 -0
- package/packages/project-bootstrap/src/typescript.ts +114 -0
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/dist/src/types.js +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/providers/src/adapters.ts +1 -1
- package/packages/providers/src/deepagents-adapter.ts +2 -2
- package/packages/quota-manager/package.json +1 -1
- package/packages/quota-manager/src/quota-manager.ts +1 -4
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/runtime/src/runtime-api.ts +16 -16
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/dist/manager.d.ts.map +1 -1
- package/packages/session/dist/manager.js +3 -1
- package/packages/session/dist/manager.js.map +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session/src/manager.ts +4 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/tencentdb-memory/package.json +23 -0
- package/packages/tencentdb-memory/src/client.ts +130 -0
- package/packages/tencentdb-memory/src/index.ts +32 -0
- package/packages/tencentdb-memory/src/loader.ts +150 -0
- package/packages/tencentdb-memory/src/mcp-tools.ts +213 -0
- package/packages/tencentdb-memory/src/types.ts +101 -0
- package/packages/tencentdb-sync/package.json +26 -0
- package/packages/tencentdb-sync/src/cli.ts +363 -0
- package/packages/tencentdb-sync/src/client.ts +268 -0
- package/packages/tencentdb-sync/src/config.ts +139 -0
- package/packages/tencentdb-sync/src/index.ts +15 -0
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/todo-bd-sync/src/detector.ts +25 -4
- package/packages/todo-bd-sync/src/extension.ts +8 -86
- package/packages/todo-bd-sync/src/task-analyzer.ts +314 -0
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/types/src/agent-worker-types.d.ts +206 -0
- package/packages/types/src/ai-providers.d.ts +36 -0
- package/packages/types/src/runtime-types.d.ts +6 -0
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/worktree/src/worktree.ts +1 -4
- package/packages/write-review/package.json +22 -0
- package/packages/write-review/src/blackboard.ts +249 -0
- package/packages/write-review/src/gate.ts +169 -0
- package/packages/write-review/src/index.ts +65 -0
- package/packages/write-review/src/injection.ts +190 -0
- package/packages/write-review/src/review.ts +206 -0
- package/packages/write-review/src/trigger.ts +133 -0
- package/packages/write-review/src/types.ts +90 -0
- package/prompts/agents/reviewer.md +57 -0
- package/prompts/agents/writer.md +42 -0
- package/prompts/slash-commands.md +40 -0
- package/prompts/tencentdb-connect.md +35 -0
- package/prompts/tencentdb-setup.md +101 -0
- package/prompts/tencentdb.md +88 -0
- package/prompts/write-review.md +50 -0
- package/scripts/check-version-sync.ts +80 -0
- package/scripts/convert-skills-to-okf.ts +168 -0
- package/scripts/copy-plugins.js +56 -0
- package/scripts/gist-auth.ts +64 -0
- package/scripts/gist-poll.sh +127 -0
- package/scripts/release/actions-monitor.ts +357 -0
- package/scripts/release/adapters/base.ts +95 -0
- package/scripts/release/adapters/detector.ts +181 -0
- package/scripts/release/adapters/node-workspace.ts +230 -0
- package/scripts/release/adapters/python.ts +236 -0
- package/scripts/release/adapters/rust.ts +129 -0
- package/scripts/release/adapters/tauri.ts +298 -0
- package/scripts/release/orchestrator.ts +278 -0
- package/scripts/release-all.ts +211 -0
- package/scripts/scan-secrets.sh +68 -0
- package/scripts/skills-sync.ts +487 -0
- package/packages/a2a-adapter/tsconfig.json +0 -5
- package/packages/auth/dist/minimax-browser-auth.d.ts +0 -89
- package/packages/auth/dist/minimax-browser-auth.d.ts.map +0 -1
- package/packages/auth/dist/minimax-browser-auth.js +0 -890
- package/packages/auth/dist/minimax-browser-auth.js.map +0 -1
- package/packages/auth/dist/run-minimax-auth.d.ts +0 -19
- package/packages/auth/dist/run-minimax-auth.d.ts.map +0 -1
- package/packages/auth/dist/run-minimax-auth.js +0 -112
- package/packages/auth/dist/run-minimax-auth.js.map +0 -1
- package/packages/auth/tsconfig.json +0 -9
- package/packages/autonomous-refactor/tsconfig.json +0 -5
- package/packages/autonomous-runtime/test/inbox.test.mjs +0 -266
- package/packages/autonomous-runtime/tsconfig.json +0 -22
- package/packages/autonomous-runtime/tsconfig.tsbuildinfo +0 -1
- package/packages/cache-strategy/tsconfig.json +0 -5
- package/packages/capability-registry/src/types.d.ts.map +0 -1
- package/packages/capability-registry/src/types.js +0 -10
- package/packages/capability-registry/src/types.js.map +0 -1
- package/packages/capability-registry/tsconfig.json +0 -22
- package/packages/checkpoint/tsconfig.json +0 -33
- package/packages/checkpoint/tsconfig.tsbuildinfo +0 -1
- package/packages/cli-plugin-sdk/tsconfig.json +0 -11
- package/packages/clipboard/dist/src/clipboard.d.ts +0 -11
- package/packages/clipboard/dist/src/clipboard.d.ts.map +0 -1
- package/packages/clipboard/dist/src/clipboard.js +0 -51
- package/packages/clipboard/dist/src/clipboard.js.map +0 -1
- package/packages/clipboard/dist/src/copy-sync.d.ts +0 -27
- package/packages/clipboard/dist/src/copy-sync.d.ts.map +0 -1
- package/packages/clipboard/dist/src/copy-sync.js +0 -170
- package/packages/clipboard/dist/src/copy-sync.js.map +0 -1
- package/packages/clipboard/dist/src/gist-relay.d.ts +0 -48
- package/packages/clipboard/dist/src/gist-relay.d.ts.map +0 -1
- package/packages/clipboard/dist/src/gist-relay.js +0 -186
- package/packages/clipboard/dist/src/gist-relay.js.map +0 -1
- package/packages/clipboard/dist/src/github-login.d.ts +0 -16
- package/packages/clipboard/dist/src/github-login.d.ts.map +0 -1
- package/packages/clipboard/dist/src/github-login.js +0 -69
- package/packages/clipboard/dist/src/github-login.js.map +0 -1
- package/packages/clipboard/dist/src/index.d.ts +0 -4
- package/packages/clipboard/dist/src/index.d.ts.map +0 -1
- package/packages/clipboard/dist/src/index.js +0 -3
- package/packages/clipboard/dist/src/index.js.map +0 -1
- package/packages/clipboard/dist/src/types.d.ts +0 -13
- package/packages/clipboard/dist/src/types.d.ts.map +0 -1
- package/packages/clipboard/dist/src/types.js +0 -5
- package/packages/clipboard/dist/src/types.js.map +0 -1
- package/packages/clipboard/test/mojibake.test.mjs +0 -143
- package/packages/clipboard/tsconfig.json +0 -10
- package/packages/code-generation/tsconfig.json +0 -33
- package/packages/code-generation/tsconfig.tsbuildinfo +0 -1
- package/packages/code-review/tsconfig.json +0 -33
- package/packages/code-review/tsconfig.tsbuildinfo +0 -1
- package/packages/codex-adapter/tsconfig.json +0 -5
- package/packages/context-compiler/tsconfig.json +0 -17
- package/packages/context-discovery/dist/src/discover.d.ts +0 -3
- package/packages/context-discovery/dist/src/discover.d.ts.map +0 -1
- package/packages/context-discovery/dist/src/discover.js +0 -42
- package/packages/context-discovery/dist/src/discover.js.map +0 -1
- package/packages/context-discovery/dist/src/discovery.d.ts +0 -28
- package/packages/context-discovery/dist/src/discovery.d.ts.map +0 -1
- package/packages/context-discovery/dist/src/discovery.js +0 -21
- package/packages/context-discovery/dist/src/discovery.js.map +0 -1
- package/packages/context-discovery/dist/src/index.d.ts +0 -3
- package/packages/context-discovery/dist/src/index.d.ts.map +0 -1
- package/packages/context-discovery/dist/src/index.js +0 -2
- package/packages/context-discovery/dist/src/index.js.map +0 -1
- package/packages/context-discovery/dist/src/types.d.ts +0 -16
- package/packages/context-discovery/dist/src/types.d.ts.map +0 -1
- package/packages/context-discovery/dist/src/types.js +0 -2
- package/packages/context-discovery/dist/src/types.js.map +0 -1
- package/packages/context-discovery/tsconfig.json +0 -10
- package/packages/context-manager/tsconfig.json +0 -6
- package/packages/cookie-sanitizer/tsconfig.json +0 -8
- package/packages/cost-optimizer/tsconfig.json +0 -22
- package/packages/dependency-analyzer/dist/src/analyzer.d.ts +0 -17
- package/packages/dependency-analyzer/dist/src/analyzer.d.ts.map +0 -1
- package/packages/dependency-analyzer/dist/src/analyzer.js +0 -119
- package/packages/dependency-analyzer/dist/src/analyzer.js.map +0 -1
- package/packages/dependency-analyzer/dist/src/imports.d.ts +0 -12
- package/packages/dependency-analyzer/dist/src/imports.d.ts.map +0 -1
- package/packages/dependency-analyzer/dist/src/imports.js +0 -73
- package/packages/dependency-analyzer/dist/src/imports.js.map +0 -1
- package/packages/dependency-analyzer/dist/src/index.d.ts +0 -4
- package/packages/dependency-analyzer/dist/src/index.d.ts.map +0 -1
- package/packages/dependency-analyzer/dist/src/index.js +0 -3
- package/packages/dependency-analyzer/dist/src/index.js.map +0 -1
- package/packages/dependency-analyzer/dist/src/types.d.ts +0 -28
- package/packages/dependency-analyzer/dist/src/types.d.ts.map +0 -1
- package/packages/dependency-analyzer/dist/src/types.js +0 -5
- package/packages/dependency-analyzer/dist/src/types.js.map +0 -1
- package/packages/dependency-analyzer/test/analyzer.test.js +0 -37
- package/packages/dependency-analyzer/tsconfig.json +0 -10
- package/packages/django-plugin/tsconfig.json +0 -12
- package/packages/doc-generator/tsconfig.json +0 -6
- package/packages/evaluation-engine/tsconfig.json +0 -8
- package/packages/evaluation-runner/tsconfig.json +0 -5
- package/packages/event-bus/dist/src/bus.d.ts +0 -15
- package/packages/event-bus/dist/src/bus.d.ts.map +0 -1
- package/packages/event-bus/dist/src/bus.js +0 -98
- package/packages/event-bus/dist/src/bus.js.map +0 -1
- package/packages/event-bus/dist/src/herdr-bus.d.ts +0 -121
- package/packages/event-bus/dist/src/herdr-bus.d.ts.map +0 -1
- package/packages/event-bus/dist/src/herdr-bus.js +0 -322
- package/packages/event-bus/dist/src/herdr-bus.js.map +0 -1
- package/packages/event-bus/dist/src/index.d.ts +0 -6
- package/packages/event-bus/dist/src/index.d.ts.map +0 -1
- package/packages/event-bus/dist/src/index.js +0 -4
- package/packages/event-bus/dist/src/index.js.map +0 -1
- package/packages/event-bus/dist/src/types.d.ts +0 -27
- package/packages/event-bus/dist/src/types.d.ts.map +0 -1
- package/packages/event-bus/dist/src/types.js +0 -10
- package/packages/event-bus/dist/src/types.js.map +0 -1
- package/packages/event-bus/tsconfig.json +0 -10
- package/packages/event-store/dist/src/index.d.ts +0 -3
- package/packages/event-store/dist/src/index.d.ts.map +0 -1
- package/packages/event-store/dist/src/index.js +0 -2
- package/packages/event-store/dist/src/index.js.map +0 -1
- package/packages/event-store/dist/src/store.d.ts +0 -15
- package/packages/event-store/dist/src/store.d.ts.map +0 -1
- package/packages/event-store/dist/src/store.js +0 -139
- package/packages/event-store/dist/src/store.js.map +0 -1
- package/packages/event-store/dist/src/types.d.ts +0 -48
- package/packages/event-store/dist/src/types.d.ts.map +0 -1
- package/packages/event-store/dist/src/types.js +0 -5
- package/packages/event-store/dist/src/types.js.map +0 -1
- package/packages/event-store/src/types.d.ts.map +0 -1
- package/packages/event-store/src/types.js +0 -5
- package/packages/event-store/src/types.js.map +0 -1
- package/packages/event-store/tsconfig.json +0 -10
- package/packages/experience-replay/tsconfig.json +0 -8
- package/packages/feedback-collector/tsconfig.json +0 -5
- package/packages/framework-detector/tsconfig.json +0 -33
- package/packages/framework-detector/tsconfig.tsbuildinfo +0 -1
- package/packages/framework-plugin-sdk/tsconfig.json +0 -33
- package/packages/framework-plugin-sdk/tsconfig.tsbuildinfo +0 -1
- package/packages/frappe-plugin/tsconfig.json +0 -12
- package/packages/generic-web-plugin/tsconfig.json +0 -12
- package/packages/health-monitor/tsconfig.json +0 -5
- package/packages/intent-analyzer/dist/src/analyzer.d.ts +0 -13
- package/packages/intent-analyzer/dist/src/analyzer.d.ts.map +0 -1
- package/packages/intent-analyzer/dist/src/analyzer.js +0 -239
- package/packages/intent-analyzer/dist/src/analyzer.js.map +0 -1
- package/packages/intent-analyzer/dist/src/index.d.ts +0 -3
- package/packages/intent-analyzer/dist/src/index.d.ts.map +0 -1
- package/packages/intent-analyzer/dist/src/index.js +0 -2
- package/packages/intent-analyzer/dist/src/index.js.map +0 -1
- package/packages/intent-analyzer/dist/src/types.d.ts +0 -26
- package/packages/intent-analyzer/dist/src/types.d.ts.map +0 -1
- package/packages/intent-analyzer/dist/src/types.js +0 -7
- package/packages/intent-analyzer/dist/src/types.js.map +0 -1
- package/packages/intent-analyzer/tsconfig.json +0 -10
- package/packages/laravel-plugin/tsconfig.json +0 -12
- package/packages/learning-engine/tsconfig.json +0 -8
- package/packages/mcp-adapter/tsconfig.json +0 -8
- package/packages/memory-engine/tsconfig.json +0 -8
- package/packages/model-registry/src/types.d.ts.map +0 -1
- package/packages/model-registry/src/types.js +0 -5
- package/packages/model-registry/src/types.js.map +0 -1
- package/packages/model-registry/tsconfig.json +0 -22
- package/packages/nextjs-plugin/tsconfig.json +0 -12
- package/packages/notification/dist/adapters/email-adapter.d.ts +0 -17
- package/packages/notification/dist/adapters/email-adapter.d.ts.map +0 -1
- package/packages/notification/dist/adapters/email-adapter.js +0 -89
- package/packages/notification/dist/adapters/email-adapter.js.map +0 -1
- package/packages/notification/dist/adapters/ntfy-adapter.d.ts +0 -17
- package/packages/notification/dist/adapters/ntfy-adapter.d.ts.map +0 -1
- package/packages/notification/dist/adapters/ntfy-adapter.js +0 -84
- package/packages/notification/dist/adapters/ntfy-adapter.js.map +0 -1
- package/packages/notification/dist/adapters/telegram-adapter.d.ts +0 -17
- package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +0 -1
- package/packages/notification/dist/adapters/telegram-adapter.js +0 -88
- package/packages/notification/dist/adapters/telegram-adapter.js.map +0 -1
- package/packages/notification/dist/adapters/webhook-adapter.d.ts +0 -15
- package/packages/notification/dist/adapters/webhook-adapter.d.ts.map +0 -1
- package/packages/notification/dist/adapters/webhook-adapter.js +0 -64
- package/packages/notification/dist/adapters/webhook-adapter.js.map +0 -1
- package/packages/notification/dist/base-adapter.d.ts +0 -36
- package/packages/notification/dist/base-adapter.d.ts.map +0 -1
- package/packages/notification/dist/base-adapter.js +0 -39
- package/packages/notification/dist/base-adapter.js.map +0 -1
- package/packages/notification/dist/index.d.ts +0 -9
- package/packages/notification/dist/index.d.ts.map +0 -1
- package/packages/notification/dist/index.js +0 -9
- package/packages/notification/dist/index.js.map +0 -1
- package/packages/notification/dist/notification-center.d.ts +0 -46
- package/packages/notification/dist/notification-center.d.ts.map +0 -1
- package/packages/notification/dist/notification-center.js +0 -228
- package/packages/notification/dist/notification-center.js.map +0 -1
- package/packages/notification/dist/types.d.ts +0 -65
- package/packages/notification/dist/types.d.ts.map +0 -1
- package/packages/notification/dist/types.js +0 -7
- package/packages/notification/dist/types.js.map +0 -1
- package/packages/notification/tsconfig.json +0 -8
- package/packages/observability/tsconfig.json +0 -33
- package/packages/observability/tsconfig.tsbuildinfo +0 -1
- package/packages/performance-optimizer/tsconfig.json +0 -8
- package/packages/privilege-broker/config/privileges.yaml.example +0 -172
- package/packages/privilege-broker/tsconfig.json +0 -22
- package/packages/privilege-broker/tsconfig.tsbuildinfo +0 -1
- package/packages/project-analyzer/tsconfig.json +0 -33
- package/packages/project-analyzer/tsconfig.tsbuildinfo +0 -1
- package/packages/projection-engine/dist/src/engine.d.ts +0 -61
- package/packages/projection-engine/dist/src/engine.d.ts.map +0 -1
- package/packages/projection-engine/dist/src/engine.js +0 -87
- package/packages/projection-engine/dist/src/engine.js.map +0 -1
- package/packages/projection-engine/dist/src/index.d.ts +0 -2
- package/packages/projection-engine/dist/src/index.d.ts.map +0 -1
- package/packages/projection-engine/dist/src/index.js +0 -2
- package/packages/projection-engine/dist/src/index.js.map +0 -1
- package/packages/projection-engine/dist/src/project.d.ts +0 -3
- package/packages/projection-engine/dist/src/project.d.ts.map +0 -1
- package/packages/projection-engine/dist/src/project.js +0 -24
- package/packages/projection-engine/dist/src/project.js.map +0 -1
- package/packages/projection-engine/dist/src/types.d.ts +0 -55
- package/packages/projection-engine/dist/src/types.d.ts.map +0 -1
- package/packages/projection-engine/dist/src/types.js +0 -5
- package/packages/projection-engine/dist/src/types.js.map +0 -1
- package/packages/projection-engine/src/types.d.ts.map +0 -1
- package/packages/projection-engine/src/types.js +0 -5
- package/packages/projection-engine/src/types.js.map +0 -1
- package/packages/projection-engine/tsconfig.json +0 -10
- package/packages/prompt-compiler/tsconfig.json +0 -19
- package/packages/prompt-versioning/tsconfig.json +0 -5
- package/packages/provider-adapter-sdk/dist/tsconfig.tsbuildinfo +0 -1
- package/packages/provider-adapter-sdk/tsconfig.json +0 -34
- package/packages/provider-adapter-sdk/tsconfig.tsbuildinfo +0 -1
- package/packages/provider-router/tsconfig.json +0 -20
- package/packages/provider-selector/tsconfig.json +0 -6
- package/packages/providers/dist/adapters.d.ts +0 -133
- package/packages/providers/dist/adapters.d.ts.map +0 -1
- package/packages/providers/dist/adapters.js +0 -236
- package/packages/providers/dist/adapters.js.map +0 -1
- package/packages/providers/dist/deepagents-adapter.d.ts +0 -78
- package/packages/providers/dist/deepagents-adapter.d.ts.map +0 -1
- package/packages/providers/dist/deepagents-adapter.js +0 -323
- package/packages/providers/dist/deepagents-adapter.js.map +0 -1
- package/packages/providers/dist/glm-usage.d.ts +0 -102
- package/packages/providers/dist/glm-usage.d.ts.map +0 -1
- package/packages/providers/dist/glm-usage.js +0 -197
- package/packages/providers/dist/glm-usage.js.map +0 -1
- package/packages/providers/dist/index.d.ts +0 -11
- package/packages/providers/dist/index.d.ts.map +0 -1
- package/packages/providers/dist/index.js +0 -11
- package/packages/providers/dist/index.js.map +0 -1
- package/packages/providers/dist/openai-usage.d.ts +0 -103
- package/packages/providers/dist/openai-usage.d.ts.map +0 -1
- package/packages/providers/dist/openai-usage.js +0 -208
- package/packages/providers/dist/openai-usage.js.map +0 -1
- package/packages/providers/dist/provider-id.d.ts +0 -46
- package/packages/providers/dist/provider-id.d.ts.map +0 -1
- package/packages/providers/dist/provider-id.js +0 -113
- package/packages/providers/dist/provider-id.js.map +0 -1
- package/packages/providers/tsconfig.json +0 -8
- package/packages/quota-manager/dist/examples/tui-usage-integration.d.ts +0 -35
- package/packages/quota-manager/dist/examples/tui-usage-integration.d.ts.map +0 -1
- package/packages/quota-manager/dist/examples/tui-usage-integration.js +0 -73
- package/packages/quota-manager/dist/examples/tui-usage-integration.js.map +0 -1
- package/packages/quota-manager/dist/index.d.ts +0 -8
- package/packages/quota-manager/dist/index.d.ts.map +0 -1
- package/packages/quota-manager/dist/index.js +0 -8
- package/packages/quota-manager/dist/index.js.map +0 -1
- package/packages/quota-manager/dist/quota-manager.d.ts +0 -70
- package/packages/quota-manager/dist/quota-manager.d.ts.map +0 -1
- package/packages/quota-manager/dist/quota-manager.js +0 -260
- package/packages/quota-manager/dist/quota-manager.js.map +0 -1
- package/packages/quota-manager/dist/tui-usage-monitor.d.ts +0 -96
- package/packages/quota-manager/dist/tui-usage-monitor.d.ts.map +0 -1
- package/packages/quota-manager/dist/tui-usage-monitor.js +0 -268
- package/packages/quota-manager/dist/tui-usage-monitor.js.map +0 -1
- package/packages/quota-manager/tsconfig.json +0 -8
- package/packages/rate-limiter/tsconfig.json +0 -5
- package/packages/react-vite-plugin/tsconfig.json +0 -12
- package/packages/release-manager/tsconfig.json +0 -5
- package/packages/requirement-compiler/tsconfig.json +0 -22
- package/packages/runtime/dist/command-executor.d.ts +0 -129
- package/packages/runtime/dist/command-executor.d.ts.map +0 -1
- package/packages/runtime/dist/command-executor.js +0 -383
- package/packages/runtime/dist/command-executor.js.map +0 -1
- package/packages/runtime/dist/index.d.ts +0 -11
- package/packages/runtime/dist/index.d.ts.map +0 -1
- package/packages/runtime/dist/index.js +0 -11
- package/packages/runtime/dist/index.js.map +0 -1
- package/packages/runtime/dist/local-runtime-agent.d.ts +0 -111
- package/packages/runtime/dist/local-runtime-agent.d.ts.map +0 -1
- package/packages/runtime/dist/local-runtime-agent.js +0 -356
- package/packages/runtime/dist/local-runtime-agent.js.map +0 -1
- package/packages/runtime/dist/policy-engine.d.ts +0 -203
- package/packages/runtime/dist/policy-engine.d.ts.map +0 -1
- package/packages/runtime/dist/policy-engine.js +0 -592
- package/packages/runtime/dist/policy-engine.js.map +0 -1
- package/packages/runtime/dist/runtime-api.d.ts +0 -137
- package/packages/runtime/dist/runtime-api.d.ts.map +0 -1
- package/packages/runtime/dist/runtime-api.js +0 -454
- package/packages/runtime/dist/runtime-api.js.map +0 -1
- package/packages/runtime/dist/workspace-manager.d.ts +0 -162
- package/packages/runtime/dist/workspace-manager.d.ts.map +0 -1
- package/packages/runtime/dist/workspace-manager.js +0 -451
- package/packages/runtime/dist/workspace-manager.js.map +0 -1
- package/packages/runtime/tsconfig.json +0 -8
- package/packages/scheduler-adapter/tsconfig.json +0 -22
- package/packages/scheduler-adapter/tsconfig.tsbuildinfo +0 -1
- package/packages/session/tsconfig.json +0 -33
- package/packages/session/tsconfig.tsbuildinfo +0 -1
- package/packages/session-api/dist/src/api.d.ts +0 -83
- package/packages/session-api/dist/src/api.d.ts.map +0 -1
- package/packages/session-api/dist/src/api.js +0 -49
- package/packages/session-api/dist/src/api.js.map +0 -1
- package/packages/session-api/dist/src/index.d.ts +0 -2
- package/packages/session-api/dist/src/index.d.ts.map +0 -1
- package/packages/session-api/dist/src/index.js +0 -2
- package/packages/session-api/dist/src/index.js.map +0 -1
- package/packages/session-api/dist/src/types.d.ts +0 -22
- package/packages/session-api/dist/src/types.d.ts.map +0 -1
- package/packages/session-api/dist/src/types.js +0 -5
- package/packages/session-api/dist/src/types.js.map +0 -1
- package/packages/session-api/tsconfig.json +0 -10
- package/packages/session-export/dist/src/exporter.d.ts +0 -28
- package/packages/session-export/dist/src/exporter.d.ts.map +0 -1
- package/packages/session-export/dist/src/exporter.js +0 -42
- package/packages/session-export/dist/src/exporter.js.map +0 -1
- package/packages/session-export/dist/src/index.d.ts +0 -2
- package/packages/session-export/dist/src/index.d.ts.map +0 -1
- package/packages/session-export/dist/src/index.js +0 -2
- package/packages/session-export/dist/src/index.js.map +0 -1
- package/packages/session-export/dist/src/types.d.ts +0 -20
- package/packages/session-export/dist/src/types.d.ts.map +0 -1
- package/packages/session-export/dist/src/types.js +0 -5
- package/packages/session-export/dist/src/types.js.map +0 -1
- package/packages/session-export/tsconfig.json +0 -10
- package/packages/skill-registry/tsconfig.json +0 -22
- package/packages/sprint-planner/tsconfig.json +0 -5
- package/packages/subscription-engine/dist/src/engine.d.ts +0 -13
- package/packages/subscription-engine/dist/src/engine.d.ts.map +0 -1
- package/packages/subscription-engine/dist/src/engine.js +0 -40
- package/packages/subscription-engine/dist/src/engine.js.map +0 -1
- package/packages/subscription-engine/dist/src/index.d.ts +0 -2
- package/packages/subscription-engine/dist/src/index.d.ts.map +0 -1
- package/packages/subscription-engine/dist/src/index.js +0 -2
- package/packages/subscription-engine/dist/src/index.js.map +0 -1
- package/packages/subscription-engine/dist/src/subscriptions.d.ts +0 -19
- package/packages/subscription-engine/dist/src/subscriptions.d.ts.map +0 -1
- package/packages/subscription-engine/dist/src/subscriptions.js +0 -39
- package/packages/subscription-engine/dist/src/subscriptions.js.map +0 -1
- package/packages/subscription-engine/dist/src/types.d.ts +0 -24
- package/packages/subscription-engine/dist/src/types.d.ts.map +0 -1
- package/packages/subscription-engine/dist/src/types.js +0 -5
- package/packages/subscription-engine/dist/src/types.js.map +0 -1
- package/packages/subscription-engine/tsconfig.json +0 -10
- package/packages/task-compiler/tsconfig.json +0 -24
- package/packages/test-data-generator/tsconfig.json +0 -33
- package/packages/test-data-generator/tsconfig.tsbuildinfo +0 -1
- package/packages/test-generator/tsconfig.json +0 -6
- package/packages/token-optimizer/tsconfig.json +0 -6
- package/packages/tui/tsconfig.json +0 -8
- package/packages/types/src/runtime-types.d.ts.map +0 -1
- package/packages/types/src/runtime-types.js +0 -2
- package/packages/types/src/runtime-types.js.map +0 -1
- package/packages/types/tsconfig.json +0 -21
- package/packages/types/tsconfig.tsbuildinfo +0 -1
- package/packages/workflow-events/dist/src/events.d.ts +0 -38
- package/packages/workflow-events/dist/src/events.d.ts.map +0 -1
- package/packages/workflow-events/dist/src/events.js +0 -55
- package/packages/workflow-events/dist/src/events.js.map +0 -1
- package/packages/workflow-events/dist/src/index.d.ts +0 -2
- package/packages/workflow-events/dist/src/index.d.ts.map +0 -1
- package/packages/workflow-events/dist/src/index.js +0 -2
- package/packages/workflow-events/dist/src/index.js.map +0 -1
- package/packages/workflow-events/dist/src/pipeline.d.ts +0 -21
- package/packages/workflow-events/dist/src/pipeline.d.ts.map +0 -1
- package/packages/workflow-events/dist/src/pipeline.js +0 -36
- package/packages/workflow-events/dist/src/pipeline.js.map +0 -1
- package/packages/workflow-events/dist/src/types.d.ts +0 -110
- package/packages/workflow-events/dist/src/types.d.ts.map +0 -1
- package/packages/workflow-events/dist/src/types.js +0 -5
- package/packages/workflow-events/dist/src/types.js.map +0 -1
- package/packages/workflow-events/src/types.d.ts.map +0 -1
- package/packages/workflow-events/src/types.js +0 -5
- package/packages/workflow-events/src/types.js.map +0 -1
- package/packages/workflow-events/tsconfig.json +0 -10
- package/packages/workspace-scanner/dist/src/detect.d.ts +0 -3
- package/packages/workspace-scanner/dist/src/detect.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/src/detect.js +0 -60
- package/packages/workspace-scanner/dist/src/detect.js.map +0 -1
- package/packages/workspace-scanner/dist/src/git.d.ts +0 -7
- package/packages/workspace-scanner/dist/src/git.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/src/git.js +0 -75
- package/packages/workspace-scanner/dist/src/git.js.map +0 -1
- package/packages/workspace-scanner/dist/src/index.d.ts +0 -5
- package/packages/workspace-scanner/dist/src/index.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/src/index.js +0 -4
- package/packages/workspace-scanner/dist/src/index.js.map +0 -1
- package/packages/workspace-scanner/dist/src/scanner.d.ts +0 -11
- package/packages/workspace-scanner/dist/src/scanner.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/src/scanner.js +0 -59
- package/packages/workspace-scanner/dist/src/scanner.js.map +0 -1
- package/packages/workspace-scanner/dist/src/types.d.ts +0 -35
- package/packages/workspace-scanner/dist/src/types.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/src/types.js +0 -5
- package/packages/workspace-scanner/dist/src/types.js.map +0 -1
- package/packages/workspace-scanner/test/scanner.test.js +0 -31
- package/packages/workspace-scanner/tsconfig.json +0 -10
- package/packages/worktree/dist/index.d.ts +0 -7
- package/packages/worktree/dist/index.d.ts.map +0 -1
- package/packages/worktree/dist/index.js +0 -7
- package/packages/worktree/dist/index.js.map +0 -1
- package/packages/worktree/dist/worktree.d.ts +0 -88
- package/packages/worktree/dist/worktree.d.ts.map +0 -1
- package/packages/worktree/dist/worktree.js +0 -242
- package/packages/worktree/dist/worktree.js.map +0 -1
- package/packages/worktree/tsconfig.json +0 -8
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* file-copy-helper extension (DEBUG VERSION)
|
|
3
|
+
*
|
|
4
|
+
* Injects "use cp instead of writing from scratch" reminder when user
|
|
5
|
+
* asks to mimic, copy, clone, or replicate files/folders between locations.
|
|
6
|
+
*
|
|
7
|
+
* DEBUG: All events and rule evaluations logged to /tmp/file-copy-helper-debug.log
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type {
|
|
11
|
+
ExtensionAPI,
|
|
12
|
+
InputEvent,
|
|
13
|
+
InputEventResult,
|
|
14
|
+
} from "@earendil-works/pi-coding-agent";
|
|
15
|
+
import * as fs from "fs";
|
|
16
|
+
|
|
17
|
+
// DEBUG: Write to file instead of TUI
|
|
18
|
+
const DEBUG_LOG = "/tmp/file-copy-helper-debug.log";
|
|
19
|
+
|
|
20
|
+
function debugLog(label: string, data: unknown): void {
|
|
21
|
+
const timestamp = new Date().toISOString();
|
|
22
|
+
const entry = `[${timestamp}] ${label}: ${JSON.stringify(data, null, 2)}\n`;
|
|
23
|
+
fs.appendFileSync(DEBUG_LOG, entry);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Keywords that trigger the copy rule injection
|
|
27
|
+
// MUST have explicit mimic/copy/clone/replicate intent + source/dest context
|
|
28
|
+
const COPY_KEYWORDS = ["mimic", "replicate", "clone"];
|
|
29
|
+
|
|
30
|
+
// Must have destination context to trigger (avoids false positives)
|
|
31
|
+
const COPY_DEST_CONTEXT = ["to ", "into ", "/dest/", "/target/", "over to"];
|
|
32
|
+
|
|
33
|
+
// Must have source context to trigger
|
|
34
|
+
const COPY_SOURCE_CONTEXT = ["from ", "source", "/source/", "orig"];
|
|
35
|
+
|
|
36
|
+
// When agent sees import/module errors (needs to copy those files too)
|
|
37
|
+
const IMPORT_ERROR_TRIGGERS = [
|
|
38
|
+
"import error",
|
|
39
|
+
"import errors",
|
|
40
|
+
"cannot find module",
|
|
41
|
+
"cannot resolve",
|
|
42
|
+
"module not found",
|
|
43
|
+
"missing import",
|
|
44
|
+
"missing file",
|
|
45
|
+
"does not exist",
|
|
46
|
+
"@repo/",
|
|
47
|
+
"error one by one",
|
|
48
|
+
"fix errors one by one",
|
|
49
|
+
"fix imports one by one",
|
|
50
|
+
"roll back",
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
// Extract source and destination from user request
|
|
54
|
+
const COPY_RULE = `
|
|
55
|
+
## COPY FILES DIRECTLY (CRITICAL)
|
|
56
|
+
|
|
57
|
+
When asked to mimic, copy, clone, or replicate files:
|
|
58
|
+
|
|
59
|
+
1. **DO NOT read the source files** - just copy them directly
|
|
60
|
+
2. **Run \`sudo cp\` immediately** - no reading needed
|
|
61
|
+
3. **If files have different owners**, use sudo
|
|
62
|
+
|
|
63
|
+
Examples:
|
|
64
|
+
\`\`\`bash
|
|
65
|
+
# Copy single file
|
|
66
|
+
sudo cp /source/file.ts /dest/file.ts
|
|
67
|
+
|
|
68
|
+
# Copy entire folder
|
|
69
|
+
sudo cp -r /source/folder/ /dest/folder/
|
|
70
|
+
|
|
71
|
+
# Copy matching pattern
|
|
72
|
+
sudo cp /source/*.tsx /dest/
|
|
73
|
+
\`\`\`
|
|
74
|
+
|
|
75
|
+
**STOP**: Do NOT use \`read\`, \`expand\`, or \`cat\` on source files. Just copy.
|
|
76
|
+
|
|
77
|
+
**Why**: Reading wastes time. The source files are complete - copying preserves everything exactly.
|
|
78
|
+
`;
|
|
79
|
+
|
|
80
|
+
// When agent sees import errors - copy those files too!
|
|
81
|
+
const IMPORT_ERROR_RULE = `
|
|
82
|
+
## IMPORT ERRORS? COPY THOSE FILES TOO!
|
|
83
|
+
|
|
84
|
+
When you see import/module errors after copying a file:
|
|
85
|
+
|
|
86
|
+
1. **STOP fixing imports one by one**
|
|
87
|
+
2. **STOP rolling back**
|
|
88
|
+
3. **LIST all missing import files** for the user
|
|
89
|
+
4. **Ask user which to copy**, then copy them via sudo cp
|
|
90
|
+
|
|
91
|
+
Example:
|
|
92
|
+
\`\`\`bash
|
|
93
|
+
# If error shows missing:
|
|
94
|
+
# - @repo/auth/server
|
|
95
|
+
# - @repo/design-system/components/ui/sidebar
|
|
96
|
+
# - ./components/notifications-provider
|
|
97
|
+
|
|
98
|
+
# Then copy these files the same way:
|
|
99
|
+
sudo cp /source/path/@repo/auth/server.ts /dest/path/@repo/auth/server.ts
|
|
100
|
+
sudo cp -r /source/path/@repo/design-system/components/ui/sidebar /dest/path/@repo/design-system/components/ui/sidebar
|
|
101
|
+
sudo cp /source/path/components/notifications-provider.tsx /dest/path/components/notifications-provider.tsx
|
|
102
|
+
\`\`\`
|
|
103
|
+
|
|
104
|
+
**NEVER fix imports one by one** - copy the missing files instead!
|
|
105
|
+
**NEVER roll back** - keep the copied file and copy its dependencies!
|
|
106
|
+
`;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Check if text contains copy-related keywords
|
|
110
|
+
* Requires: explicit intent (mimic/copy/clone/replicate) AND destination context
|
|
111
|
+
*/
|
|
112
|
+
function shouldInjectCopyRule(text: string): { triggered: boolean; reason: string } {
|
|
113
|
+
const lower = text.toLowerCase();
|
|
114
|
+
|
|
115
|
+
// Must have explicit mimic/copy/clone/replicate intent
|
|
116
|
+
const hasIntent = COPY_KEYWORDS.some((keyword) => lower.includes(keyword));
|
|
117
|
+
if (!hasIntent) {
|
|
118
|
+
return { triggered: false, reason: `No intent keyword found. Keywords: ${COPY_KEYWORDS.join(", ")}` };
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Must have destination context (avoids false positives on "copy this code" etc)
|
|
122
|
+
const hasDest = COPY_DEST_CONTEXT.some((ctx) => lower.includes(ctx));
|
|
123
|
+
if (!hasDest) {
|
|
124
|
+
return { triggered: false, reason: `No destination context found. Dest contexts: ${COPY_DEST_CONTEXT.join(", ")}` };
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Should have source context for full mimic behavior
|
|
128
|
+
const hasSource = COPY_SOURCE_CONTEXT.some((ctx) => lower.includes(ctx));
|
|
129
|
+
if (!hasSource) {
|
|
130
|
+
return { triggered: false, reason: `No source context found. Source contexts: ${COPY_SOURCE_CONTEXT.join(", ")}` };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return { triggered: true, reason: `All conditions met: hasIntent=${hasIntent}, hasDest=${hasDest}, hasSource=${hasSource}` };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Check if text contains import error triggers
|
|
138
|
+
*/
|
|
139
|
+
function shouldInjectImportErrorRule(text: string): { triggered: boolean; reason: string } {
|
|
140
|
+
const lower = text.toLowerCase();
|
|
141
|
+
const matchingTriggers = IMPORT_ERROR_TRIGGERS.filter((t) => lower.includes(t));
|
|
142
|
+
|
|
143
|
+
if (matchingTriggers.length === 0) {
|
|
144
|
+
return { triggered: false, reason: "No import error triggers found" };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return { triggered: true, reason: `Matched triggers: ${matchingTriggers.join(", ")}` };
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Register the file-copy-helper extension
|
|
152
|
+
*/
|
|
153
|
+
export function registerFileCopyHelper(pi: ExtensionAPI): void {
|
|
154
|
+
// Clear debug log on startup
|
|
155
|
+
fs.writeFileSync(DEBUG_LOG, `[${new Date().toISOString()}] === DEBUG SESSION STARTED ===\n`);
|
|
156
|
+
|
|
157
|
+
pi.on("input", (event: InputEvent): InputEventResult | undefined => {
|
|
158
|
+
// DEBUG: Log what we receive
|
|
159
|
+
debugLog("INPUT_EVENT", {
|
|
160
|
+
source: event.source,
|
|
161
|
+
textLength: event.text?.length,
|
|
162
|
+
textPreview: event.text?.substring(0, 200),
|
|
163
|
+
fullText: event.text,
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Only process user input (not from extensions or RPC)
|
|
167
|
+
if (event.source !== "interactive") {
|
|
168
|
+
debugLog("SKIP", "not interactive input - skipping");
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
const text = event.text.trim();
|
|
173
|
+
debugLog("PROCESSING_TEXT", {
|
|
174
|
+
text,
|
|
175
|
+
length: text.length,
|
|
176
|
+
hasMinLength: text.length >= 10,
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
if (!text || text.length < 10) {
|
|
180
|
+
debugLog("SKIP", "text too short (< 10 chars)");
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Check if this is a copy/mimic request
|
|
185
|
+
const copyCheck = shouldInjectCopyRule(text);
|
|
186
|
+
debugLog("COPY_RULE_CHECK", {
|
|
187
|
+
triggered: copyCheck.triggered,
|
|
188
|
+
reason: copyCheck.reason,
|
|
189
|
+
matchingKeywords: COPY_KEYWORDS.filter(k => text.toLowerCase().includes(k)),
|
|
190
|
+
matchingDest: COPY_DEST_CONTEXT.filter(ctx => text.toLowerCase().includes(ctx)),
|
|
191
|
+
matchingSource: COPY_SOURCE_CONTEXT.filter(ctx => text.toLowerCase().includes(ctx)),
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
if (copyCheck.triggered) {
|
|
195
|
+
debugLog("INJECT", { rule: "COPY_RULE", reason: copyCheck.reason });
|
|
196
|
+
return {
|
|
197
|
+
action: "transform",
|
|
198
|
+
text: text + COPY_RULE,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Inject import error rule when agent sees missing imports
|
|
203
|
+
const importCheck = shouldInjectImportErrorRule(text);
|
|
204
|
+
debugLog("IMPORT_ERROR_CHECK", {
|
|
205
|
+
triggered: importCheck.triggered,
|
|
206
|
+
reason: importCheck.reason,
|
|
207
|
+
matchingTriggers: IMPORT_ERROR_TRIGGERS.filter(t => text.toLowerCase().includes(t)),
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
if (importCheck.triggered) {
|
|
211
|
+
debugLog("INJECT", { rule: "IMPORT_ERROR_RULE", reason: importCheck.reason });
|
|
212
|
+
return {
|
|
213
|
+
action: "transform",
|
|
214
|
+
text: text + IMPORT_ERROR_RULE,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
debugLog("NO_INJECTION", "no rule matched - passing through");
|
|
219
|
+
return;
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Default export for pi extension loading
|
|
224
|
+
export default function fileCopyHelperExtension(pi: ExtensionAPI): void {
|
|
225
|
+
registerFileCopyHelper(pi);
|
|
226
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* file-copy-helper extension (DEBUG VERSION)
|
|
3
|
+
*
|
|
4
|
+
* Injects "use cp instead of writing from scratch" reminder when user
|
|
5
|
+
* asks to mimic, copy, clone, or replicate files/folders between locations.
|
|
6
|
+
*
|
|
7
|
+
* DEBUG: All events and rule evaluations logged to /tmp/file-copy-helper-debug.log
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type {
|
|
11
|
+
ExtensionAPI,
|
|
12
|
+
InputEvent,
|
|
13
|
+
InputEventResult,
|
|
14
|
+
} from "@earendil-works/pi-coding-agent";
|
|
15
|
+
import * as fs from "fs";
|
|
16
|
+
|
|
17
|
+
// DEBUG: Write to file instead of TUI
|
|
18
|
+
const DEBUG_LOG = "/tmp/file-copy-helper-debug.log";
|
|
19
|
+
|
|
20
|
+
function debugLog(label: string, data: unknown): void {
|
|
21
|
+
const timestamp = new Date().toISOString();
|
|
22
|
+
const entry = `[${timestamp}] ${label}: ${JSON.stringify(data, null, 2)}\n`;
|
|
23
|
+
fs.appendFileSync(DEBUG_LOG, entry);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Keywords that trigger the copy rule injection
|
|
27
|
+
// MUST have explicit mimic/copy/clone/replicate intent + source/dest context
|
|
28
|
+
const COPY_KEYWORDS = ["mimic", "replicate", "clone"];
|
|
29
|
+
|
|
30
|
+
// Must have destination context to trigger (avoids false positives)
|
|
31
|
+
const COPY_DEST_CONTEXT = ["to ", "into ", "/dest/", "/target/", "over to"];
|
|
32
|
+
|
|
33
|
+
// Must have source context to trigger
|
|
34
|
+
const COPY_SOURCE_CONTEXT = ["from ", "source", "/source/", "orig"];
|
|
35
|
+
|
|
36
|
+
// When agent sees import/module errors (needs to copy those files too)
|
|
37
|
+
const IMPORT_ERROR_TRIGGERS = [
|
|
38
|
+
"import error",
|
|
39
|
+
"import errors",
|
|
40
|
+
"cannot find module",
|
|
41
|
+
"cannot resolve",
|
|
42
|
+
"module not found",
|
|
43
|
+
"missing import",
|
|
44
|
+
"missing file",
|
|
45
|
+
"does not exist",
|
|
46
|
+
"@repo/",
|
|
47
|
+
"error one by one",
|
|
48
|
+
"fix errors one by one",
|
|
49
|
+
"fix imports one by one",
|
|
50
|
+
"roll back",
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
// Extract source and destination from user request
|
|
54
|
+
const COPY_RULE = `
|
|
55
|
+
## COPY FILES DIRECTLY (CRITICAL)
|
|
56
|
+
|
|
57
|
+
When asked to mimic, copy, clone, or replicate files:
|
|
58
|
+
|
|
59
|
+
1. **DO NOT read the source files** - just copy them directly
|
|
60
|
+
2. **Run \`sudo cp\` immediately** - no reading needed
|
|
61
|
+
3. **If files have different owners**, use sudo
|
|
62
|
+
|
|
63
|
+
Examples:
|
|
64
|
+
\`\`\`bash
|
|
65
|
+
# Copy single file
|
|
66
|
+
sudo cp /source/file.ts /dest/file.ts
|
|
67
|
+
|
|
68
|
+
# Copy entire folder
|
|
69
|
+
sudo cp -r /source/folder/ /dest/folder/
|
|
70
|
+
|
|
71
|
+
# Copy matching pattern
|
|
72
|
+
sudo cp /source/*.tsx /dest/
|
|
73
|
+
\`\`\`
|
|
74
|
+
|
|
75
|
+
**STOP**: Do NOT use \`read\`, \`expand\`, or \`cat\` on source files. Just copy.
|
|
76
|
+
|
|
77
|
+
**Why**: Reading wastes time. The source files are complete - copying preserves everything exactly.
|
|
78
|
+
`;
|
|
79
|
+
|
|
80
|
+
// When agent sees import errors - copy those files too!
|
|
81
|
+
const IMPORT_ERROR_RULE = `
|
|
82
|
+
## IMPORT ERRORS? COPY THOSE FILES TOO!
|
|
83
|
+
|
|
84
|
+
When you see import/module errors after copying a file:
|
|
85
|
+
|
|
86
|
+
1. **STOP fixing imports one by one**
|
|
87
|
+
2. **STOP rolling back**
|
|
88
|
+
3. **LIST all missing import files** for the user
|
|
89
|
+
4. **Ask user which to copy**, then copy them via sudo cp
|
|
90
|
+
|
|
91
|
+
Example:
|
|
92
|
+
\`\`\`bash
|
|
93
|
+
# If error shows missing:
|
|
94
|
+
# - @repo/auth/server
|
|
95
|
+
# - @repo/design-system/components/ui/sidebar
|
|
96
|
+
# - ./components/notifications-provider
|
|
97
|
+
|
|
98
|
+
# Then copy these files the same way:
|
|
99
|
+
sudo cp /source/path/@repo/auth/server.ts /dest/path/@repo/auth/server.ts
|
|
100
|
+
sudo cp -r /source/path/@repo/design-system/components/ui/sidebar /dest/path/@repo/design-system/components/ui/sidebar
|
|
101
|
+
sudo cp /source/path/components/notifications-provider.tsx /dest/path/components/notifications-provider.tsx
|
|
102
|
+
\`\`\`
|
|
103
|
+
|
|
104
|
+
**NEVER fix imports one by one** - copy the missing files instead!
|
|
105
|
+
**NEVER roll back** - keep the copied file and copy its dependencies!
|
|
106
|
+
`;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Check if text contains copy-related keywords
|
|
110
|
+
* Requires: explicit intent (mimic/copy/clone/replicate) AND destination context
|
|
111
|
+
*/
|
|
112
|
+
function shouldInjectCopyRule(text: string): { triggered: boolean; reason: string } {
|
|
113
|
+
const lower = text.toLowerCase();
|
|
114
|
+
|
|
115
|
+
// Must have explicit mimic/copy/clone/replicate intent
|
|
116
|
+
const hasIntent = COPY_KEYWORDS.some((keyword) => lower.includes(keyword));
|
|
117
|
+
if (!hasIntent) {
|
|
118
|
+
return { triggered: false, reason: `No intent keyword found. Keywords: ${COPY_KEYWORDS.join(", ")}` };
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Must have destination context (avoids false positives on "copy this code" etc)
|
|
122
|
+
const hasDest = COPY_DEST_CONTEXT.some((ctx) => lower.includes(ctx));
|
|
123
|
+
if (!hasDest) {
|
|
124
|
+
return { triggered: false, reason: `No destination context found. Dest contexts: ${COPY_DEST_CONTEXT.join(", ")}` };
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Should have source context for full mimic behavior
|
|
128
|
+
const hasSource = COPY_SOURCE_CONTEXT.some((ctx) => lower.includes(ctx));
|
|
129
|
+
if (!hasSource) {
|
|
130
|
+
return { triggered: false, reason: `No source context found. Source contexts: ${COPY_SOURCE_CONTEXT.join(", ")}` };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return { triggered: true, reason: `All conditions met: hasIntent=${hasIntent}, hasDest=${hasDest}, hasSource=${hasSource}` };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Check if text contains import error triggers
|
|
138
|
+
*/
|
|
139
|
+
function shouldInjectImportErrorRule(text: string): { triggered: boolean; reason: string } {
|
|
140
|
+
const lower = text.toLowerCase();
|
|
141
|
+
const matchingTriggers = IMPORT_ERROR_TRIGGERS.filter((t) => lower.includes(t));
|
|
142
|
+
|
|
143
|
+
if (matchingTriggers.length === 0) {
|
|
144
|
+
return { triggered: false, reason: "No import error triggers found" };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return { triggered: true, reason: `Matched triggers: ${matchingTriggers.join(", ")}` };
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Register the file-copy-helper extension
|
|
152
|
+
*/
|
|
153
|
+
export function registerFileCopyHelper(pi: ExtensionAPI): void {
|
|
154
|
+
// Clear debug log on startup
|
|
155
|
+
fs.writeFileSync(DEBUG_LOG, `[${new Date().toISOString()}] === DEBUG SESSION STARTED ===\n`);
|
|
156
|
+
|
|
157
|
+
pi.on("input", (event: InputEvent): InputEventResult | undefined => {
|
|
158
|
+
// DEBUG: Log what we receive
|
|
159
|
+
debugLog("INPUT_EVENT", {
|
|
160
|
+
source: event.source,
|
|
161
|
+
textLength: event.text?.length,
|
|
162
|
+
textPreview: event.text?.substring(0, 200),
|
|
163
|
+
fullText: event.text,
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Only process user input (not from extensions or RPC)
|
|
167
|
+
if (event.source !== "interactive") {
|
|
168
|
+
debugLog("SKIP", "not interactive input - skipping");
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
const text = event.text.trim();
|
|
173
|
+
debugLog("PROCESSING_TEXT", {
|
|
174
|
+
text,
|
|
175
|
+
length: text.length,
|
|
176
|
+
hasMinLength: text.length >= 10,
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
if (!text || text.length < 10) {
|
|
180
|
+
debugLog("SKIP", "text too short (< 10 chars)");
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Check if this is a copy/mimic request
|
|
185
|
+
const copyCheck = shouldInjectCopyRule(text);
|
|
186
|
+
debugLog("COPY_RULE_CHECK", {
|
|
187
|
+
triggered: copyCheck.triggered,
|
|
188
|
+
reason: copyCheck.reason,
|
|
189
|
+
matchingKeywords: COPY_KEYWORDS.filter(k => text.toLowerCase().includes(k)),
|
|
190
|
+
matchingDest: COPY_DEST_CONTEXT.filter(ctx => text.toLowerCase().includes(ctx)),
|
|
191
|
+
matchingSource: COPY_SOURCE_CONTEXT.filter(ctx => text.toLowerCase().includes(ctx)),
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
if (copyCheck.triggered) {
|
|
195
|
+
debugLog("INJECT", { rule: "COPY_RULE", reason: copyCheck.reason });
|
|
196
|
+
return {
|
|
197
|
+
action: "transform",
|
|
198
|
+
text: text + COPY_RULE,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Inject import error rule when agent sees missing imports
|
|
203
|
+
const importCheck = shouldInjectImportErrorRule(text);
|
|
204
|
+
debugLog("IMPORT_ERROR_CHECK", {
|
|
205
|
+
triggered: importCheck.triggered,
|
|
206
|
+
reason: importCheck.reason,
|
|
207
|
+
matchingTriggers: IMPORT_ERROR_TRIGGERS.filter(t => text.toLowerCase().includes(t)),
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
if (importCheck.triggered) {
|
|
211
|
+
debugLog("INJECT", { rule: "IMPORT_ERROR_RULE", reason: importCheck.reason });
|
|
212
|
+
return {
|
|
213
|
+
action: "transform",
|
|
214
|
+
text: text + IMPORT_ERROR_RULE,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
debugLog("NO_INJECTION", "no rule matched - passing through");
|
|
219
|
+
return;
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Default export for pi extension loading
|
|
224
|
+
export default function fileCopyHelperExtension(pi: ExtensionAPI): void {
|
|
225
|
+
registerFileCopyHelper(pi);
|
|
226
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { registerFileCopyHelper, default } from "./extension.js";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pi-harness/knowledge-graph",
|
|
3
|
+
"version": "0.10.30",
|
|
4
|
+
"description": "Knowledge Graph extraction and provenance linking for SKILL.md files",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"test": "echo \"Tests not configured\""
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@pi-harness/okf-indexer": "workspace:*"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"typescript": "^5.4.0"
|
|
23
|
+
}
|
|
24
|
+
}
|