pi-harness-runtime 0.9.22 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -7
- package/README.md +51 -51
- package/footer-status.ts +84 -44
- package/harness/auto-compact.ts +1 -1
- package/harness/auto-quota-resume.ts +15 -12
- package/harness/autonomous-review.ts +88 -0
- package/harness/context-compact-orchestrator.ts +23 -23
- package/harness/context-window-manager.ts +5 -5
- package/harness/continue-prompt.ts +3 -3
- package/harness/e2e/minimax-quota-scraper.ts +10 -10
- package/harness/e2e/openai-quota-scraper.ts +442 -0
- package/harness/forked-summarizer.ts +4 -4
- package/harness/herdr-agents.ts +91 -0
- package/harness/index.ts +5 -5
- package/harness/loop-code-agent.ts +284 -0
- package/harness/loop-controller.ts +201 -0
- package/harness/loop-review-agent.ts +295 -0
- package/harness/loop-runtime.ts +21 -17
- package/harness/loop-types.ts +118 -0
- package/harness/notification-events.ts +3 -3
- package/harness/output-limit-handler.ts +1 -1
- package/harness/partial-recovery.ts +3 -3
- package/harness/session-memory.ts +5 -5
- package/index.ts +211 -80
- package/package.json +2 -2
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/a2a-adapter/src/types.ts +5 -5
- package/packages/auth/dist/minimax-browser-auth.d.ts +89 -0
- package/packages/auth/dist/minimax-browser-auth.d.ts.map +1 -0
- package/packages/auth/dist/minimax-browser-auth.js +890 -0
- package/packages/auth/dist/minimax-browser-auth.js.map +1 -0
- package/packages/auth/dist/run-minimax-auth.d.ts +19 -0
- package/packages/auth/dist/run-minimax-auth.d.ts.map +1 -0
- package/packages/auth/dist/run-minimax-auth.js +112 -0
- package/packages/auth/dist/run-minimax-auth.js.map +1 -0
- package/packages/auth/package.json +1 -1
- package/packages/auth/tsconfig.json +9 -0
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/dist/inbox.d.ts +3 -3
- package/packages/autonomous-runtime/dist/inbox.js +12 -12
- package/packages/autonomous-runtime/dist/lease.js +14 -14
- package/packages/autonomous-runtime/dist/types.js +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/autonomous-runtime/src/inbox.ts +12 -12
- package/packages/autonomous-runtime/src/lease.ts +15 -15
- package/packages/autonomous-runtime/src/types.ts +13 -13
- package/packages/autonomous-runtime/tsconfig.tsbuildinfo +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/dist/types.js +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/capability-registry/src/types.ts +5 -5
- package/packages/checkpoint/README.md +6 -6
- package/packages/checkpoint/dist/differ.js +2 -2
- package/packages/checkpoint/dist/engine.js +3 -3
- package/packages/checkpoint/dist/index.js +5 -5
- package/packages/checkpoint/dist/storage.js +3 -3
- package/packages/checkpoint/dist/types.js +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/checkpoint/src/differ.ts +2 -2
- package/packages/checkpoint/src/engine.ts +3 -3
- package/packages/checkpoint/src/index.ts +5 -5
- package/packages/checkpoint/src/storage.ts +3 -3
- package/packages/checkpoint/src/types.ts +10 -10
- package/packages/checkpoint/tsconfig.tsbuildinfo +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/dist/src/clipboard.d.ts.map +1 -1
- package/packages/clipboard/dist/src/clipboard.js +15 -7
- package/packages/clipboard/dist/src/clipboard.js.map +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard/src/clipboard.ts +16 -9
- package/packages/code-generation/README.md +13 -13
- package/packages/code-generation/dist/faker.js +4 -4
- package/packages/code-generation/dist/generator.js +3 -3
- package/packages/code-generation/dist/index.js +3 -3
- package/packages/code-generation/dist/templates/registry.js +1 -1
- package/packages/code-generation/dist/types.js +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-generation/src/faker.ts +5 -5
- package/packages/code-generation/src/generator.ts +4 -4
- package/packages/code-generation/src/index.ts +3 -3
- package/packages/code-generation/src/templates/registry.ts +1 -1
- package/packages/code-generation/src/types.ts +10 -10
- package/packages/code-generation/tsconfig.tsbuildinfo +1 -1
- package/packages/code-review/README.md +13 -13
- package/packages/code-review/dist/engine.js +3 -3
- package/packages/code-review/dist/index.js +3 -3
- package/packages/code-review/dist/types.js +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/code-review/src/engine.ts +3 -3
- package/packages/code-review/src/index.ts +3 -3
- package/packages/code-review/src/types.ts +10 -10
- package/packages/code-review/tsconfig.tsbuildinfo +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/context-compiler/dist/compiler.js +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-compiler/src/compiler.ts +1 -1
- package/packages/context-compiler/src/types.ts +11 -11
- package/packages/context-compiler/test/context-compiler.test.ts +11 -11
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/cookie-sanitizer/README.md +27 -27
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/cost-optimizer/src/types.ts +5 -5
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/dist/analyzer.js +7 -7
- package/packages/django-plugin/package.json +1 -1
- package/packages/django-plugin/src/analyzer.ts +7 -7
- package/packages/doc-generator/package.json +1 -1
- package/packages/evaluation-engine/dist/engine.js +9 -9
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-engine/src/engine.ts +9 -9
- package/packages/evaluation-engine/src/types.ts +3 -3
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/dist/src/herdr-bus.d.ts +121 -0
- package/packages/event-bus/dist/src/herdr-bus.d.ts.map +1 -0
- package/packages/event-bus/dist/src/herdr-bus.js +322 -0
- package/packages/event-bus/dist/src/herdr-bus.js.map +1 -0
- package/packages/event-bus/dist/src/index.d.ts +2 -0
- package/packages/event-bus/dist/src/index.d.ts.map +1 -1
- package/packages/event-bus/dist/src/index.js +1 -0
- package/packages/event-bus/dist/src/index.js.map +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-bus/src/herdr-bus.ts +525 -0
- package/packages/event-bus/src/index.ts +29 -0
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/dist/replay.js +7 -7
- package/packages/experience-replay/package.json +1 -1
- package/packages/experience-replay/src/replay.ts +7 -7
- package/packages/experience-replay/src/types.ts +5 -5
- package/packages/feedback-collector/package.json +1 -1
- package/packages/framework-detector/README.md +18 -18
- package/packages/framework-detector/dist/detector.js +3 -3
- package/packages/framework-detector/dist/index.js +3 -3
- package/packages/framework-detector/dist/signatures/registry.js +24 -24
- package/packages/framework-detector/dist/types.js +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-detector/src/detector.ts +3 -3
- package/packages/framework-detector/src/index.ts +3 -3
- package/packages/framework-detector/src/signatures/registry.ts +24 -24
- package/packages/framework-detector/src/types.ts +7 -7
- package/packages/framework-detector/tsconfig.tsbuildinfo +1 -1
- package/packages/framework-plugin-sdk/README.md +23 -23
- package/packages/framework-plugin-sdk/dist/index.js +2 -2
- package/packages/framework-plugin-sdk/dist/manager.js +3 -3
- package/packages/framework-plugin-sdk/dist/types.js +2 -2
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/framework-plugin-sdk/src/index.ts +2 -2
- package/packages/framework-plugin-sdk/src/manager.ts +3 -3
- package/packages/framework-plugin-sdk/src/types.ts +10 -10
- package/packages/framework-plugin-sdk/tsconfig.tsbuildinfo +1 -1
- package/packages/frappe-plugin/dist/analyzer.js +8 -8
- package/packages/frappe-plugin/dist/types.js +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/frappe-plugin/src/analyzer.ts +8 -8
- package/packages/frappe-plugin/src/types.ts +10 -10
- package/packages/generic-web-plugin/dist/analyzer.js +5 -5
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/generic-web-plugin/src/analyzer.ts +5 -5
- package/packages/health-monitor/package.json +1 -1
- package/packages/health-monitor/src/monitor.ts +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/laravel-plugin/dist/analyzer.js +11 -11
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/laravel-plugin/src/analyzer.ts +11 -11
- package/packages/learning-engine/dist/engine.js +5 -5
- package/packages/learning-engine/dist/types.js +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/learning-engine/src/engine.ts +5 -5
- package/packages/learning-engine/src/types.ts +6 -6
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/dist/engine.js +8 -8
- package/packages/memory-engine/dist/types.js +2 -2
- package/packages/memory-engine/package.json +1 -1
- package/packages/memory-engine/src/engine.ts +8 -8
- package/packages/memory-engine/src/types.ts +9 -9
- package/packages/model-registry/package.json +1 -1
- package/packages/model-registry/src/types.ts +4 -4
- package/packages/nextjs-plugin/dist/analyzer.js +9 -9
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/nextjs-plugin/src/analyzer.ts +9 -9
- package/packages/notification/dist/notification-center.js +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/notification/src/notification-center.ts +1 -1
- package/packages/observability/dist/alerts.js +2 -2
- package/packages/observability/dist/health.js +4 -4
- package/packages/observability/dist/index.js +6 -6
- package/packages/observability/dist/logger.js +7 -7
- package/packages/observability/dist/metrics.js +11 -11
- package/packages/observability/dist/tracer.js +3 -3
- package/packages/observability/dist/types.js +1 -1
- package/packages/observability/package.json +1 -1
- package/packages/observability/src/alerts.ts +2 -2
- package/packages/observability/src/health.ts +4 -4
- package/packages/observability/src/index.ts +6 -6
- package/packages/observability/src/logger.ts +7 -7
- package/packages/observability/src/metrics.ts +11 -11
- package/packages/observability/src/tracer.ts +3 -3
- package/packages/observability/src/types.ts +7 -7
- package/packages/observability/test/observability.test.ts +4 -4
- package/packages/observability/tsconfig.tsbuildinfo +1 -1
- package/packages/performance-optimizer/dist/optimizer.js +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/performance-optimizer/src/optimizer.ts +1 -1
- package/packages/performance-optimizer/src/types.ts +4 -4
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/dist/analyzer.js +4 -4
- package/packages/project-analyzer/dist/index.js +8 -8
- package/packages/project-analyzer/dist/signals.js +3 -3
- package/packages/project-analyzer/dist/types.js +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-analyzer/src/analyzer.ts +4 -4
- package/packages/project-analyzer/src/index.ts +9 -9
- package/packages/project-analyzer/src/signals.ts +4 -4
- package/packages/project-analyzer/src/types.ts +15 -15
- package/packages/project-analyzer/test/index.test.ts +17 -17
- package/packages/project-analyzer/tsconfig.tsbuildinfo +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/dist/section-builder.js +1 -1
- package/packages/prompt-compiler/dist/types.js +3 -3
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-compiler/src/section-builder.ts +1 -1
- package/packages/prompt-compiler/src/types.ts +12 -12
- package/packages/prompt-compiler/test/prompt-compiler.test.ts +12 -12
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/dist/builder.js +1 -1
- package/packages/provider-adapter-sdk/dist/index.js +5 -5
- package/packages/provider-adapter-sdk/dist/registry.js +1 -1
- package/packages/provider-adapter-sdk/dist/tester.js +1 -1
- package/packages/provider-adapter-sdk/dist/types.js +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-adapter-sdk/src/builder.ts +1 -1
- package/packages/provider-adapter-sdk/src/index.ts +6 -6
- package/packages/provider-adapter-sdk/src/registry.ts +1 -1
- package/packages/provider-adapter-sdk/src/tester.ts +1 -1
- package/packages/provider-adapter-sdk/src/types.ts +5 -5
- package/packages/provider-adapter-sdk/tsconfig.tsbuildinfo +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-router/src/types.ts +4 -4
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/dist/deepagents-adapter.js +1 -1
- package/packages/providers/dist/provider-id.d.ts +5 -0
- package/packages/providers/dist/provider-id.d.ts.map +1 -1
- package/packages/providers/dist/provider-id.js +6 -1
- package/packages/providers/dist/provider-id.js.map +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/providers/src/deepagents-adapter.ts +1 -1
- package/packages/providers/src/provider-id.ts +6 -1
- package/packages/quota-manager/dist/tui-usage-monitor.d.ts.map +1 -1
- package/packages/quota-manager/dist/tui-usage-monitor.js +0 -6
- package/packages/quota-manager/dist/tui-usage-monitor.js.map +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/quota-manager/src/tui-usage-monitor.ts +0 -21
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/dist/analyzer.js +7 -7
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/react-vite-plugin/src/analyzer.ts +7 -7
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/dist/compiler.js +17 -17
- package/packages/requirement-compiler/dist/types.js +2 -2
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/requirement-compiler/src/compiler.ts +17 -17
- package/packages/requirement-compiler/src/types.ts +21 -21
- package/packages/requirement-compiler/test/requirement-compiler.test.ts +17 -17
- package/packages/runtime/dist/command-executor.js +1 -1
- package/packages/runtime/dist/local-runtime-agent.js +1 -1
- package/packages/runtime/dist/policy-engine.js +1 -1
- package/packages/runtime/dist/runtime-api.js +1 -1
- package/packages/runtime/dist/workspace-manager.js +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/runtime/src/command-executor.ts +1 -1
- package/packages/runtime/src/local-runtime-agent.ts +1 -1
- package/packages/runtime/src/policy-engine.ts +1 -1
- package/packages/runtime/src/runtime-api.ts +1 -1
- package/packages/runtime/src/workspace-manager.ts +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/README.md +18 -18
- package/packages/session/dist/history.js +3 -3
- package/packages/session/dist/index.js +5 -5
- package/packages/session/dist/manager.js +3 -3
- package/packages/session/dist/policy.js +2 -2
- package/packages/session/dist/store.js +2 -2
- package/packages/session/dist/types.js +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session/src/history.ts +3 -3
- package/packages/session/src/index.ts +5 -5
- package/packages/session/src/manager.ts +3 -3
- package/packages/session/src/policy.ts +4 -4
- package/packages/session/src/store.ts +3 -3
- package/packages/session/src/types.ts +10 -10
- package/packages/session/tsconfig.tsbuildinfo +1 -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/skill-registry/src/types.ts +4 -4
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/dist/compiler.js +7 -7
- package/packages/task-compiler/dist/decompose.js +11 -11
- package/packages/task-compiler/dist/file-scope.js +6 -6
- package/packages/task-compiler/dist/graph.js +6 -6
- package/packages/task-compiler/dist/index.js +2 -2
- package/packages/task-compiler/dist/types.js +5 -5
- package/packages/task-compiler/dist/validate.js +2 -2
- package/packages/task-compiler/dist/verification.js +2 -2
- package/packages/task-compiler/package.json +1 -1
- package/packages/task-compiler/src/command-policy.ts +1 -1
- package/packages/task-compiler/src/compiler.ts +7 -7
- package/packages/task-compiler/src/decompose.ts +11 -11
- package/packages/task-compiler/src/file-scope.ts +6 -6
- package/packages/task-compiler/src/graph.ts +6 -6
- package/packages/task-compiler/src/index.ts +3 -3
- package/packages/task-compiler/src/types.ts +14 -14
- package/packages/task-compiler/src/validate.ts +2 -2
- package/packages/task-compiler/src/verification.ts +2 -2
- package/packages/task-compiler/test/task-compiler.test.ts +10 -10
- package/packages/test-data-generator/README.md +13 -13
- package/packages/test-data-generator/dist/faker-adapter.js +4 -4
- package/packages/test-data-generator/dist/generator.js +3 -3
- package/packages/test-data-generator/dist/index.js +3 -3
- package/packages/test-data-generator/dist/types.js +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-data-generator/src/faker-adapter.ts +4 -4
- package/packages/test-data-generator/src/generator.ts +3 -3
- package/packages/test-data-generator/src/index.ts +3 -3
- package/packages/test-data-generator/src/types.ts +9 -9
- package/packages/test-data-generator/tsconfig.tsbuildinfo +1 -1
- package/packages/test-generator/package.json +1 -1
- 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.ts +5 -5
- package/packages/types/src/runtime-types.ts +12 -12
- package/packages/types/tsconfig.tsbuildinfo +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/renderer.ts +7 -7
- package/skills/harness-runtime/SKILL.md +15 -15
- package/packages/dependency-analyzer/dist/analyzer.d.ts +0 -17
- package/packages/dependency-analyzer/dist/analyzer.d.ts.map +0 -1
- package/packages/dependency-analyzer/dist/analyzer.js +0 -106
- package/packages/dependency-analyzer/dist/analyzer.js.map +0 -1
- package/packages/dependency-analyzer/dist/imports.d.ts +0 -12
- package/packages/dependency-analyzer/dist/imports.d.ts.map +0 -1
- package/packages/dependency-analyzer/dist/imports.js +0 -73
- package/packages/dependency-analyzer/dist/imports.js.map +0 -1
- package/packages/dependency-analyzer/dist/index.d.ts +0 -4
- package/packages/dependency-analyzer/dist/index.d.ts.map +0 -1
- package/packages/dependency-analyzer/dist/index.js +0 -3
- package/packages/dependency-analyzer/dist/index.js.map +0 -1
- package/packages/dependency-analyzer/dist/test/analyzer.test.js +0 -37
- package/packages/dependency-analyzer/dist/types.d.ts +0 -28
- package/packages/dependency-analyzer/dist/types.d.ts.map +0 -1
- package/packages/dependency-analyzer/dist/types.js +0 -5
- package/packages/dependency-analyzer/dist/types.js.map +0 -1
- package/packages/intent-analyzer/dist/analyzer.d.ts +0 -13
- package/packages/intent-analyzer/dist/analyzer.d.ts.map +0 -1
- package/packages/intent-analyzer/dist/analyzer.js +0 -72
- package/packages/intent-analyzer/dist/analyzer.js.map +0 -1
- package/packages/intent-analyzer/dist/index.d.ts +0 -3
- package/packages/intent-analyzer/dist/index.d.ts.map +0 -1
- package/packages/intent-analyzer/dist/index.js +0 -2
- package/packages/intent-analyzer/dist/index.js.map +0 -1
- package/packages/intent-analyzer/dist/test/analyzer.test.js +0 -56
- package/packages/intent-analyzer/dist/types.d.ts +0 -26
- package/packages/intent-analyzer/dist/types.d.ts.map +0 -1
- package/packages/intent-analyzer/dist/types.js +0 -7
- package/packages/intent-analyzer/dist/types.js.map +0 -1
- package/packages/workspace-scanner/dist/detect.d.ts +0 -3
- package/packages/workspace-scanner/dist/detect.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/detect.js +0 -58
- package/packages/workspace-scanner/dist/detect.js.map +0 -1
- package/packages/workspace-scanner/dist/git.d.ts +0 -7
- package/packages/workspace-scanner/dist/git.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/git.js +0 -75
- package/packages/workspace-scanner/dist/git.js.map +0 -1
- package/packages/workspace-scanner/dist/index.d.ts +0 -5
- package/packages/workspace-scanner/dist/index.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/index.js +0 -4
- package/packages/workspace-scanner/dist/index.js.map +0 -1
- package/packages/workspace-scanner/dist/scanner.d.ts +0 -11
- package/packages/workspace-scanner/dist/scanner.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/scanner.js +0 -46
- package/packages/workspace-scanner/dist/scanner.js.map +0 -1
- package/packages/workspace-scanner/dist/test/scanner.test.js +0 -34
- package/packages/workspace-scanner/dist/types.d.ts +0 -35
- package/packages/workspace-scanner/dist/types.d.ts.map +0 -1
- package/packages/workspace-scanner/dist/types.js +0 -5
- package/packages/workspace-scanner/dist/types.js.map +0 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import type { FrameworkInfo } from "../../framework-detector/src/types.js";
|
|
6
6
|
|
|
7
|
-
//
|
|
7
|
+
// --- Analysis Result ----------------------------------------------------------
|
|
8
8
|
|
|
9
9
|
export interface FrappeAnalysis {
|
|
10
10
|
framework: FrameworkInfo;
|
|
@@ -19,7 +19,7 @@ export interface FrappeAnalysis {
|
|
|
19
19
|
hasSPA: boolean;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
//
|
|
22
|
+
// --- Site ---------------------------------------------------------------------
|
|
23
23
|
|
|
24
24
|
export interface FrappeSite {
|
|
25
25
|
name: string;
|
|
@@ -30,7 +30,7 @@ export interface FrappeSite {
|
|
|
30
30
|
hasSiteConfig: boolean;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
//
|
|
33
|
+
// --- App ---------------------------------------------------------------------
|
|
34
34
|
|
|
35
35
|
export interface FrappeApp {
|
|
36
36
|
name: string;
|
|
@@ -43,7 +43,7 @@ export interface FrappeApp {
|
|
|
43
43
|
hasPublicFiles: boolean;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
//
|
|
46
|
+
// --- DocType ------------------------------------------------------------------
|
|
47
47
|
|
|
48
48
|
export interface FrappeDocTypeSummary {
|
|
49
49
|
name: string;
|
|
@@ -54,14 +54,14 @@ export interface FrappeDocTypeSummary {
|
|
|
54
54
|
nFields: number;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
//
|
|
57
|
+
// --- Hooks --------------------------------------------------------------------
|
|
58
58
|
|
|
59
59
|
export interface FrappeHooksSummary {
|
|
60
60
|
appName: string;
|
|
61
61
|
hooks: Record<string, string[]>;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
//
|
|
64
|
+
// --- Custom Fields ------------------------------------------------------------
|
|
65
65
|
|
|
66
66
|
export interface FrappeCustomFieldSummary {
|
|
67
67
|
totalCustomFields: number;
|
|
@@ -69,7 +69,7 @@ export interface FrappeCustomFieldSummary {
|
|
|
69
69
|
linkedTo: string[];
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
//
|
|
72
|
+
// --- Workspace ----------------------------------------------------------------
|
|
73
73
|
|
|
74
74
|
export interface FrappeWorkspaceSummary {
|
|
75
75
|
benchPath: string;
|
|
@@ -96,7 +96,7 @@ export interface SiteInfo {
|
|
|
96
96
|
hasSiteConfig: boolean;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
//
|
|
99
|
+
// --- Hooks File ---------------------------------------------------------------
|
|
100
100
|
|
|
101
101
|
export interface HooksFile {
|
|
102
102
|
appName: string;
|
|
@@ -104,7 +104,7 @@ export interface HooksFile {
|
|
|
104
104
|
version?: string;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
//
|
|
107
|
+
// --- Plugin Config ------------------------------------------------------------
|
|
108
108
|
|
|
109
109
|
export interface FrappePluginConfig {
|
|
110
110
|
/** Custom paths to include in analysis */
|
|
@@ -115,7 +115,7 @@ export interface FrappePluginConfig {
|
|
|
115
115
|
includeWorkspace?: boolean;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
//
|
|
118
|
+
// --- Errors -------------------------------------------------------------------
|
|
119
119
|
|
|
120
120
|
export class FrappeWorkspaceError extends Error {
|
|
121
121
|
readonly code:
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { existsSync } from "node:fs";
|
|
7
7
|
import { readdir, readFile } from "node:fs/promises";
|
|
8
8
|
import { join, extname } from "node:path";
|
|
9
|
-
//
|
|
9
|
+
// --- Detection ----------------------------------------------------------------
|
|
10
10
|
/**
|
|
11
11
|
* Detect if a directory is a generic web project
|
|
12
12
|
*/
|
|
@@ -19,7 +19,7 @@ export async function detectWeb(root) {
|
|
|
19
19
|
existsSync(join(root, "components"));
|
|
20
20
|
return hasPackageJson && (hasNodeModules || hasSrc);
|
|
21
21
|
}
|
|
22
|
-
//
|
|
22
|
+
// --- Framework Detection ----------------------------------------------------
|
|
23
23
|
async function detectFramework(root) {
|
|
24
24
|
const pkgJson = await readFile(join(root, "package.json"), "utf-8").catch(() => "{}");
|
|
25
25
|
const pkg = JSON.parse(pkgJson);
|
|
@@ -63,7 +63,7 @@ async function detectFramework(root) {
|
|
|
63
63
|
return "astro";
|
|
64
64
|
return "static";
|
|
65
65
|
}
|
|
66
|
-
//
|
|
66
|
+
// --- Route Scanning ---------------------------------------------------------
|
|
67
67
|
async function findRouteFiles(root, framework) {
|
|
68
68
|
const routes = [];
|
|
69
69
|
const patterns = getRoutePatterns(framework);
|
|
@@ -186,7 +186,7 @@ function deduplicateRoutes(routes) {
|
|
|
186
186
|
}
|
|
187
187
|
return result;
|
|
188
188
|
}
|
|
189
|
-
//
|
|
189
|
+
// --- API Endpoint Detection --------------------------------------------------
|
|
190
190
|
async function findApiEndpoints(root, framework) {
|
|
191
191
|
if (![
|
|
192
192
|
"express",
|
|
@@ -287,7 +287,7 @@ function extractHttpMethods(filePath) {
|
|
|
287
287
|
return ["GET"];
|
|
288
288
|
}
|
|
289
289
|
}
|
|
290
|
-
//
|
|
290
|
+
// --- Analysis ----------------------------------------------------------------
|
|
291
291
|
/**
|
|
292
292
|
* Deep analysis of a generic web project
|
|
293
293
|
*/
|
|
@@ -14,7 +14,7 @@ import type {
|
|
|
14
14
|
ApiEndpoint,
|
|
15
15
|
} from "./types.js";
|
|
16
16
|
|
|
17
|
-
//
|
|
17
|
+
// --- Detection ----------------------------------------------------------------
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Detect if a directory is a generic web project
|
|
@@ -30,7 +30,7 @@ export async function detectWeb(root: string): Promise<boolean> {
|
|
|
30
30
|
return hasPackageJson && (hasNodeModules || hasSrc);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
//
|
|
33
|
+
// --- Framework Detection ----------------------------------------------------
|
|
34
34
|
|
|
35
35
|
async function detectFramework(root: string): Promise<WebFrameworkType> {
|
|
36
36
|
const pkgJson = await readFile(join(root, "package.json"), "utf-8").catch(
|
|
@@ -62,7 +62,7 @@ async function detectFramework(root: string): Promise<WebFrameworkType> {
|
|
|
62
62
|
return "static";
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
//
|
|
65
|
+
// --- Route Scanning ---------------------------------------------------------
|
|
66
66
|
|
|
67
67
|
async function findRouteFiles(
|
|
68
68
|
root: string,
|
|
@@ -209,7 +209,7 @@ function deduplicateRoutes(routes: PageRoute[]): PageRoute[] {
|
|
|
209
209
|
return result;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
//
|
|
212
|
+
// --- API Endpoint Detection --------------------------------------------------
|
|
213
213
|
|
|
214
214
|
async function findApiEndpoints(
|
|
215
215
|
root: string,
|
|
@@ -321,7 +321,7 @@ function extractHttpMethods(filePath: string): string[] {
|
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
-
//
|
|
324
|
+
// --- Analysis ----------------------------------------------------------------
|
|
325
325
|
|
|
326
326
|
/**
|
|
327
327
|
* Deep analysis of a generic web project
|
|
@@ -23,7 +23,7 @@ export const DEFAULT_CONFIG: Required<MonitorConfig> = {
|
|
|
23
23
|
const recoveryAttempts = new Map<ComponentName, number>();
|
|
24
24
|
const startTime = Date.now();
|
|
25
25
|
|
|
26
|
-
//
|
|
26
|
+
// --- Collectors ----------------------------------------------------------------
|
|
27
27
|
|
|
28
28
|
export interface SnapshotValue {
|
|
29
29
|
value: number;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { existsSync } from "node:fs";
|
|
7
7
|
import { readdir, readFile } from "node:fs/promises";
|
|
8
8
|
import { join } from "node:path";
|
|
9
|
-
//
|
|
9
|
+
// --- Detection ---------------------------------------------------------------
|
|
10
10
|
function isLaravelWorkspace(root) {
|
|
11
11
|
if (existsSync(join(root, "artisan")))
|
|
12
12
|
return true;
|
|
@@ -22,7 +22,7 @@ function isLaravelWorkspace(root) {
|
|
|
22
22
|
}
|
|
23
23
|
return false;
|
|
24
24
|
}
|
|
25
|
-
//
|
|
25
|
+
// --- Version ----------------------------------------------------------------
|
|
26
26
|
async function detectVersion(root) {
|
|
27
27
|
const composerPath = join(root, "composer.json");
|
|
28
28
|
if (!existsSync(composerPath))
|
|
@@ -48,7 +48,7 @@ async function detectVersion(root) {
|
|
|
48
48
|
return undefined;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
//
|
|
51
|
+
// --- Packages ----------------------------------------------------------------
|
|
52
52
|
async function detectPackages(root) {
|
|
53
53
|
const composerPath = join(root, "composer.json");
|
|
54
54
|
if (!existsSync(composerPath))
|
|
@@ -65,7 +65,7 @@ async function detectPackages(root) {
|
|
|
65
65
|
return [];
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
//
|
|
68
|
+
// --- Auth Detection --------------------------------------------------------
|
|
69
69
|
async function detectAuth(root) {
|
|
70
70
|
const packages = await detectPackages(root);
|
|
71
71
|
if (packages.includes("laravel/sanctum"))
|
|
@@ -95,7 +95,7 @@ async function detectAuth(root) {
|
|
|
95
95
|
}
|
|
96
96
|
return undefined;
|
|
97
97
|
}
|
|
98
|
-
//
|
|
98
|
+
// --- Controllers -----------------------------------------------------------
|
|
99
99
|
async function findControllers(root) {
|
|
100
100
|
const controllerDirs = [
|
|
101
101
|
join(root, "app", "Http", "Controllers"),
|
|
@@ -132,7 +132,7 @@ async function findControllers(root) {
|
|
|
132
132
|
}
|
|
133
133
|
return controllers;
|
|
134
134
|
}
|
|
135
|
-
//
|
|
135
|
+
// --- Models ----------------------------------------------------------------
|
|
136
136
|
async function findModels(root) {
|
|
137
137
|
const modelDirs = [join(root, "app", "Models"), join(root, "app", "Models")];
|
|
138
138
|
const models = [];
|
|
@@ -155,7 +155,7 @@ async function findModels(root) {
|
|
|
155
155
|
}
|
|
156
156
|
return models;
|
|
157
157
|
}
|
|
158
|
-
//
|
|
158
|
+
// --- Blade Views -----------------------------------------------------------
|
|
159
159
|
async function findViews(root) {
|
|
160
160
|
const viewDirs = [join(root, "resources", "views"), join(root, "views")];
|
|
161
161
|
const views = [];
|
|
@@ -187,7 +187,7 @@ async function findViews(root) {
|
|
|
187
187
|
}
|
|
188
188
|
return views;
|
|
189
189
|
}
|
|
190
|
-
//
|
|
190
|
+
// --- Artisan Commands ------------------------------------------------------
|
|
191
191
|
async function findCommands(root) {
|
|
192
192
|
const commandDirs = [
|
|
193
193
|
join(root, "app", "Console", "Commands"),
|
|
@@ -211,7 +211,7 @@ async function findCommands(root) {
|
|
|
211
211
|
}
|
|
212
212
|
return commands;
|
|
213
213
|
}
|
|
214
|
-
//
|
|
214
|
+
// --- Migrations Count -----------------------------------------------------
|
|
215
215
|
async function countMigrations(root) {
|
|
216
216
|
const migrationDirs = [
|
|
217
217
|
join(root, "database", "migrations"),
|
|
@@ -231,7 +231,7 @@ async function countMigrations(root) {
|
|
|
231
231
|
}
|
|
232
232
|
return count;
|
|
233
233
|
}
|
|
234
|
-
//
|
|
234
|
+
// --- Env Variables --------------------------------------------------------
|
|
235
235
|
async function findEnvVars(root) {
|
|
236
236
|
const envFiles = [join(root, ".env.example"), join(root, ".env")];
|
|
237
237
|
const vars = [];
|
|
@@ -258,7 +258,7 @@ async function findEnvVars(root) {
|
|
|
258
258
|
}
|
|
259
259
|
return vars;
|
|
260
260
|
}
|
|
261
|
-
//
|
|
261
|
+
// --- Main Analyzer ---------------------------------------------------------
|
|
262
262
|
export async function analyzeLaravel(root) {
|
|
263
263
|
if (!isLaravelWorkspace(root))
|
|
264
264
|
return null;
|
|
@@ -9,7 +9,7 @@ import { readdir, readFile } from "node:fs/promises";
|
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import type { LaravelAnalysis } from "./types.js";
|
|
11
11
|
|
|
12
|
-
//
|
|
12
|
+
// --- Detection ---------------------------------------------------------------
|
|
13
13
|
|
|
14
14
|
function isLaravelWorkspace(root: string): boolean {
|
|
15
15
|
if (existsSync(join(root, "artisan"))) return true;
|
|
@@ -27,7 +27,7 @@ function isLaravelWorkspace(root: string): boolean {
|
|
|
27
27
|
return false;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
//
|
|
30
|
+
// --- Version ----------------------------------------------------------------
|
|
31
31
|
|
|
32
32
|
async function detectVersion(root: string): Promise<string | undefined> {
|
|
33
33
|
const composerPath = join(root, "composer.json");
|
|
@@ -54,7 +54,7 @@ async function detectVersion(root: string): Promise<string | undefined> {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
//
|
|
57
|
+
// --- Packages ----------------------------------------------------------------
|
|
58
58
|
|
|
59
59
|
async function detectPackages(root: string): Promise<string[]> {
|
|
60
60
|
const composerPath = join(root, "composer.json");
|
|
@@ -72,7 +72,7 @@ async function detectPackages(root: string): Promise<string[]> {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
//
|
|
75
|
+
// --- Auth Detection --------------------------------------------------------
|
|
76
76
|
|
|
77
77
|
async function detectAuth(root: string): Promise<string | undefined> {
|
|
78
78
|
const packages = await detectPackages(root);
|
|
@@ -101,7 +101,7 @@ async function detectAuth(root: string): Promise<string | undefined> {
|
|
|
101
101
|
return undefined;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
//
|
|
104
|
+
// --- Controllers -----------------------------------------------------------
|
|
105
105
|
|
|
106
106
|
async function findControllers(root: string): Promise<string[]> {
|
|
107
107
|
const controllerDirs = [
|
|
@@ -145,7 +145,7 @@ async function findControllers(root: string): Promise<string[]> {
|
|
|
145
145
|
return controllers;
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
//
|
|
148
|
+
// --- Models ----------------------------------------------------------------
|
|
149
149
|
|
|
150
150
|
async function findModels(root: string): Promise<string[]> {
|
|
151
151
|
const modelDirs = [join(root, "app", "Models"), join(root, "app", "Models")];
|
|
@@ -169,7 +169,7 @@ async function findModels(root: string): Promise<string[]> {
|
|
|
169
169
|
return models;
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
-
//
|
|
172
|
+
// --- Blade Views -----------------------------------------------------------
|
|
173
173
|
|
|
174
174
|
async function findViews(root: string): Promise<string[]> {
|
|
175
175
|
const viewDirs = [join(root, "resources", "views"), join(root, "views")];
|
|
@@ -201,7 +201,7 @@ async function findViews(root: string): Promise<string[]> {
|
|
|
201
201
|
return views;
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
-
//
|
|
204
|
+
// --- Artisan Commands ------------------------------------------------------
|
|
205
205
|
|
|
206
206
|
async function findCommands(root: string): Promise<string[]> {
|
|
207
207
|
const commandDirs = [
|
|
@@ -226,7 +226,7 @@ async function findCommands(root: string): Promise<string[]> {
|
|
|
226
226
|
return commands;
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
//
|
|
229
|
+
// --- Migrations Count -----------------------------------------------------
|
|
230
230
|
|
|
231
231
|
async function countMigrations(root: string): Promise<number> {
|
|
232
232
|
const migrationDirs = [
|
|
@@ -250,7 +250,7 @@ async function countMigrations(root: string): Promise<number> {
|
|
|
250
250
|
return count;
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
-
//
|
|
253
|
+
// --- Env Variables --------------------------------------------------------
|
|
254
254
|
|
|
255
255
|
async function findEnvVars(root: string): Promise<string[]> {
|
|
256
256
|
const envFiles = [join(root, ".env.example"), join(root, ".env")];
|
|
@@ -279,7 +279,7 @@ async function findEnvVars(root: string): Promise<string[]> {
|
|
|
279
279
|
return vars;
|
|
280
280
|
}
|
|
281
281
|
|
|
282
|
-
//
|
|
282
|
+
// --- Main Analyzer ---------------------------------------------------------
|
|
283
283
|
|
|
284
284
|
export async function analyzeLaravel(
|
|
285
285
|
root: string,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { randomUUID } from "node:crypto";
|
|
7
7
|
import { containsSecret, calculateConfidence, } from "./types.js";
|
|
8
|
-
//
|
|
8
|
+
// --- Pattern Extraction --------------------------------------------------------
|
|
9
9
|
function extractProviderSuccessPatterns(metrics) {
|
|
10
10
|
const patterns = [];
|
|
11
11
|
// Group by task type
|
|
@@ -94,7 +94,7 @@ function extractFailurePatterns(events) {
|
|
|
94
94
|
}
|
|
95
95
|
return patterns;
|
|
96
96
|
}
|
|
97
|
-
//
|
|
97
|
+
// --- Experience Creation ------------------------------------------------------
|
|
98
98
|
function createExperience(pattern, scope, humanFeedback) {
|
|
99
99
|
// Calculate confidence
|
|
100
100
|
const factors = {
|
|
@@ -147,7 +147,7 @@ function generateRecommendation(pattern) {
|
|
|
147
147
|
return pattern.description;
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
|
-
//
|
|
150
|
+
// --- Secret Filtering ---------------------------------------------------------
|
|
151
151
|
function filterSecrets(data) {
|
|
152
152
|
const filtered = {};
|
|
153
153
|
for (const [key, value] of Object.entries(data)) {
|
|
@@ -166,7 +166,7 @@ function filterSecrets(data) {
|
|
|
166
166
|
}
|
|
167
167
|
return filtered;
|
|
168
168
|
}
|
|
169
|
-
//
|
|
169
|
+
// --- Main Engine -------------------------------------------------------------
|
|
170
170
|
export class LearningEngine {
|
|
171
171
|
framework;
|
|
172
172
|
repository;
|
|
@@ -288,7 +288,7 @@ ${experience.pattern}
|
|
|
288
288
|
`;
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
|
-
//
|
|
291
|
+
// --- Factory -----------------------------------------------------------------
|
|
292
292
|
export function createLearningEngine(options) {
|
|
293
293
|
return new LearningEngine(options);
|
|
294
294
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Interfaces for learning from runtime execution.
|
|
5
5
|
*/
|
|
6
|
-
//
|
|
6
|
+
// --- Secret Detection ---------------------------------------------------------
|
|
7
7
|
export const SECRET_PATTERNS = [
|
|
8
8
|
/api[_-]?key/i,
|
|
9
9
|
/password/i,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
type ConfidenceFactors,
|
|
24
24
|
} from "./types.js";
|
|
25
25
|
|
|
26
|
-
//
|
|
26
|
+
// --- Pattern Extraction --------------------------------------------------------
|
|
27
27
|
|
|
28
28
|
function extractProviderSuccessPatterns(
|
|
29
29
|
metrics: ProviderExecutionMetric[],
|
|
@@ -138,7 +138,7 @@ function extractFailurePatterns(
|
|
|
138
138
|
return patterns;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
//
|
|
141
|
+
// --- Experience Creation ------------------------------------------------------
|
|
142
142
|
|
|
143
143
|
function createExperience(
|
|
144
144
|
pattern: ExtractedPattern,
|
|
@@ -202,7 +202,7 @@ function generateRecommendation(pattern: ExtractedPattern): string {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
//
|
|
205
|
+
// --- Secret Filtering ---------------------------------------------------------
|
|
206
206
|
|
|
207
207
|
function filterSecrets(data: Record<string, unknown>): Record<string, unknown> {
|
|
208
208
|
const filtered: Record<string, unknown> = {};
|
|
@@ -225,7 +225,7 @@ function filterSecrets(data: Record<string, unknown>): Record<string, unknown> {
|
|
|
225
225
|
return filtered;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
//
|
|
228
|
+
// --- Main Engine -------------------------------------------------------------
|
|
229
229
|
|
|
230
230
|
export class LearningEngine {
|
|
231
231
|
private framework?: string;
|
|
@@ -381,7 +381,7 @@ ${experience.pattern}
|
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
|
|
384
|
-
//
|
|
384
|
+
// --- Factory -----------------------------------------------------------------
|
|
385
385
|
|
|
386
386
|
export function createLearningEngine(options?: {
|
|
387
387
|
framework?: string;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Interfaces for learning from runtime execution.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
//
|
|
7
|
+
// --- Runtime Event (local definition) -----------------------------------------
|
|
8
8
|
|
|
9
9
|
export interface RuntimeEvent {
|
|
10
10
|
ts: string;
|
|
@@ -14,7 +14,7 @@ export interface RuntimeEvent {
|
|
|
14
14
|
data?: Record<string, unknown>;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
//
|
|
17
|
+
// --- Input Types -------------------------------------------------------------
|
|
18
18
|
|
|
19
19
|
export interface ProviderExecutionMetric {
|
|
20
20
|
providerId: string;
|
|
@@ -55,7 +55,7 @@ export interface LearningRequest {
|
|
|
55
55
|
humanFeedback?: HumanFeedback[];
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
//
|
|
58
|
+
// --- Learned Experience -------------------------------------------------------
|
|
59
59
|
|
|
60
60
|
export type ExperienceScope =
|
|
61
61
|
| "global"
|
|
@@ -92,7 +92,7 @@ export interface LearningResult {
|
|
|
92
92
|
extractedAt: string;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
//
|
|
95
|
+
// --- Patterns ---------------------------------------------------------------
|
|
96
96
|
|
|
97
97
|
export type PatternType =
|
|
98
98
|
| "provider_success"
|
|
@@ -111,7 +111,7 @@ export interface ExtractedPattern {
|
|
|
111
111
|
failureIndicators: string[];
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
//
|
|
114
|
+
// --- Secret Detection ---------------------------------------------------------
|
|
115
115
|
|
|
116
116
|
export const SECRET_PATTERNS = [
|
|
117
117
|
/api[_-]?key/i,
|
|
@@ -146,7 +146,7 @@ export function redactSecrets(
|
|
|
146
146
|
return redacted;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
//
|
|
149
|
+
// --- Confidence Calculation ----------------------------------------------------
|
|
150
150
|
|
|
151
151
|
export interface ConfidenceFactors {
|
|
152
152
|
occurrenceCount: number;
|