@howlil/ez-agents 3.5.0 → 4.0.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/README.md +735 -537
- package/agents/ez-architect-agent.md +267 -0
- package/agents/ez-backend-agent.md +303 -0
- package/agents/ez-chief-strategist.md +271 -0
- package/agents/ez-codebase-mapper.md +770 -770
- package/agents/ez-context-manager.md +319 -0
- package/agents/ez-debugger.md +1255 -1255
- package/agents/ez-design-expert.md +347 -0
- package/agents/ez-devops-agent.md +331 -0
- package/agents/ez-executor.md +487 -487
- package/agents/ez-frontend-agent.md +322 -0
- package/agents/ez-phase-researcher.md +553 -553
- package/agents/ez-planner.md +1307 -1307
- package/agents/ez-product-engineer.md +435 -0
- package/agents/ez-project-researcher.md +629 -629
- package/agents/ez-qa-agent.md +320 -0
- package/agents/ez-release-agent.md +333 -333
- package/agents/ez-requirements-agent.md +377 -377
- package/agents/ez-roadmapper.md +650 -650
- package/agents/ez-technical-writer.md +551 -0
- package/agents/ez-ux-expert.md +393 -0
- package/agents/ez-verifier.md +579 -579
- package/bin/guards/autonomy-guard.cjs +346 -0
- package/bin/guards/context-budget-guard.cjs +278 -0
- package/bin/guards/hallucination-guard.cjs +380 -0
- package/bin/guards/hidden-state-guard.cjs +182 -0
- package/bin/guards/team-overhead-guard.cjs +266 -0
- package/bin/guards/tool-sprawl-guard.cjs +271 -0
- package/bin/lib/analytics/analytics-collector.cjs +86 -0
- package/bin/lib/analytics/analytics-reporter.cjs +130 -0
- package/bin/lib/analytics/cohort-analyzer.cjs +138 -0
- package/bin/lib/analytics/funnel-analyzer.cjs +147 -0
- package/bin/lib/analytics/nps-tracker.cjs +147 -0
- package/bin/lib/archetype-detector.cjs +289 -0
- package/bin/lib/assistant-adapter.cjs +361 -0
- package/bin/lib/audit-exec.cjs +175 -0
- package/bin/lib/auth.cjs +176 -0
- package/bin/lib/backup-service.cjs +422 -0
- package/bin/lib/bdd-validator.cjs +622 -0
- package/bin/lib/business-flow-mapper.cjs +429 -0
- package/bin/lib/circuit-breaker.cjs +276 -0
- package/bin/lib/code-complexity-analyzer.cjs +360 -0
- package/bin/lib/codebase-analyzer.cjs +241 -0
- package/bin/lib/commands.cjs +691 -0
- package/bin/lib/config.cjs +236 -0
- package/bin/lib/constraint-extractor.cjs +526 -0
- package/bin/lib/content-scanner.cjs +238 -0
- package/bin/lib/context-cache.cjs +154 -0
- package/bin/lib/context-compressor.cjs +102 -0
- package/bin/lib/context-deduplicator.cjs +105 -0
- package/bin/lib/context-errors.cjs +78 -0
- package/bin/lib/context-manager.cjs +338 -0
- package/bin/lib/context-metadata-tracker.cjs +140 -0
- package/bin/lib/context-relevance-scorer.cjs +99 -0
- package/bin/lib/core.cjs +507 -0
- package/bin/lib/cost-alerts.cjs +174 -0
- package/bin/lib/cost-tracker.cjs +275 -0
- package/bin/lib/crash-recovery.cjs +220 -0
- package/bin/lib/dependency-graph.cjs +319 -0
- package/bin/lib/deploy/deploy-audit-log.cjs +76 -0
- package/bin/lib/deploy/deploy-detector.cjs +69 -0
- package/bin/lib/deploy/deploy-env-manager.cjs +109 -0
- package/bin/lib/deploy/deploy-health-check.cjs +88 -0
- package/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
- package/bin/lib/deploy/deploy-rollback.cjs +72 -0
- package/bin/lib/deploy/deploy-runner.cjs +97 -0
- package/bin/lib/deploy/deploy-status.cjs +74 -0
- package/bin/lib/discussion-synthesizer.cjs +439 -0
- package/bin/lib/error-cache.cjs +114 -0
- package/bin/lib/error-registry.cjs +177 -0
- package/bin/lib/file-access.cjs +207 -0
- package/bin/lib/file-lock.cjs +236 -0
- package/bin/lib/finops/budget-enforcer.cjs +126 -0
- package/bin/lib/finops/cost-reporter.cjs +132 -0
- package/bin/lib/finops/finops-analyzer.cjs +112 -0
- package/bin/lib/finops/spot-manager.cjs +118 -0
- package/bin/lib/framework-detector.cjs +396 -0
- package/bin/lib/frontmatter.cjs +313 -0
- package/bin/lib/fs-utils.cjs +153 -0
- package/bin/lib/gate-executor.cjs +272 -0
- package/bin/lib/gates/README.md +374 -0
- package/bin/lib/gates/gate-01-requirement.cjs +303 -0
- package/bin/lib/gates/gate-02-architecture.cjs +555 -0
- package/bin/lib/gates/gate-03-code.cjs +635 -0
- package/bin/lib/gates/gate-04-security.cjs +829 -0
- package/bin/lib/git-errors.cjs +83 -0
- package/bin/lib/git-utils.cjs +321 -0
- package/bin/lib/git-workflow-engine.cjs +1157 -0
- package/bin/lib/health-check.cjs +227 -0
- package/bin/lib/index.cjs +279 -0
- package/bin/lib/init.cjs +725 -0
- package/bin/lib/lock-logger.cjs +194 -0
- package/bin/lib/lock-state.cjs +263 -0
- package/bin/lib/lockfile-validator.cjs +227 -0
- package/bin/lib/log-rotation.cjs +71 -0
- package/bin/lib/logger.cjs +125 -0
- package/bin/lib/memory-compression.cjs +256 -0
- package/bin/lib/milestone.cjs +247 -0
- package/bin/lib/model-provider.cjs +241 -0
- package/bin/lib/package-manager-detector.cjs +203 -0
- package/bin/lib/package-manager-executor.cjs +385 -0
- package/bin/lib/package-manager-service.cjs +216 -0
- package/bin/lib/perf/api-monitor.cjs +88 -0
- package/bin/lib/perf/db-optimizer.cjs +78 -0
- package/bin/lib/perf/frontend-performance.cjs +56 -0
- package/bin/lib/perf/perf-analyzer.cjs +77 -0
- package/bin/lib/perf/perf-baseline.cjs +102 -0
- package/bin/lib/perf/perf-reporter.cjs +117 -0
- package/bin/lib/perf/regression-detector.cjs +92 -0
- package/bin/lib/phase.cjs +963 -0
- package/bin/lib/planning-write.cjs +123 -0
- package/bin/lib/project-reporter.cjs +565 -0
- package/bin/lib/quality-gate.cjs +332 -0
- package/bin/lib/quality-metrics.cjs +324 -0
- package/bin/lib/recovery-manager.cjs +98 -0
- package/bin/lib/release-validator.cjs +617 -0
- package/bin/lib/retry.cjs +119 -0
- package/bin/lib/roadmap.cjs +309 -0
- package/bin/lib/safe-exec.cjs +173 -0
- package/bin/lib/safe-path.cjs +130 -0
- package/bin/lib/security-errors.cjs +62 -0
- package/bin/lib/session-chain.cjs +304 -0
- package/bin/lib/session-errors.cjs +81 -0
- package/bin/lib/session-export.cjs +251 -0
- package/bin/lib/session-import.cjs +262 -0
- package/bin/lib/session-manager.cjs +280 -0
- package/bin/lib/skill-context.cjs +148 -0
- package/bin/lib/skill-matcher.cjs +236 -0
- package/bin/lib/skill-registry.cjs +360 -0
- package/bin/lib/skill-resolver.cjs +449 -0
- package/bin/lib/skill-triggers.cjs +90 -0
- package/bin/lib/skill-validator.cjs +270 -0
- package/bin/lib/skill-versioning.cjs +355 -0
- package/bin/lib/stack-detector.cjs +399 -0
- package/bin/lib/state.cjs +736 -0
- package/bin/lib/tech-debt-analyzer.cjs +309 -0
- package/bin/lib/temp-file.cjs +239 -0
- package/bin/lib/template.cjs +223 -0
- package/bin/lib/test-file-lock.cjs +112 -0
- package/bin/lib/test-graceful.cjs +93 -0
- package/bin/lib/test-logger.cjs +60 -0
- package/bin/lib/test-safe-exec.cjs +38 -0
- package/bin/lib/test-safe-path.cjs +33 -0
- package/bin/lib/test-temp-file.cjs +125 -0
- package/bin/lib/tier-manager.cjs +428 -0
- package/bin/lib/timeout-exec.cjs +63 -0
- package/bin/lib/tradeoff-analyzer.cjs +284 -0
- package/bin/lib/url-fetch.cjs +170 -0
- package/bin/lib/verify.cjs +863 -0
- package/bin/update.js +217 -214
- package/commands/deploy.cjs +53 -0
- package/commands/ez/add-tests.md +41 -41
- package/commands/ez/audit-milestone.md +36 -36
- package/commands/ez/complete-milestone.md +136 -136
- package/commands/ez/discuss-phase.md +90 -90
- package/commands/ez/execute-phase.md +52 -52
- package/commands/ez/help.md +22 -22
- package/commands/ez/map-codebase.md +71 -71
- package/commands/ez/new-milestone.md +44 -44
- package/commands/ez/new-project.md +51 -42
- package/commands/ez/plan-phase.md +53 -53
- package/commands/ez/progress.md +36 -36
- package/commands/ez/quick.md +45 -45
- package/commands/ez/resume-work.md +40 -40
- package/commands/ez/run-phase.md +580 -0
- package/commands/ez/settings.md +36 -36
- package/commands/ez/update.md +37 -37
- package/commands/ez/verify-work.md +402 -38
- package/commands/health-check.cjs +44 -0
- package/commands/rollback.cjs +47 -0
- package/ez-agents/bin/ez-tools.cjs +599 -2
- package/ez-agents/bin/guards/autonomy-guard.cjs +346 -0
- package/ez-agents/bin/guards/context-budget-guard.cjs +247 -0
- package/ez-agents/bin/guards/hallucination-guard.cjs +271 -0
- package/ez-agents/bin/guards/hidden-state-guard.cjs +182 -0
- package/ez-agents/bin/guards/team-overhead-guard.cjs +266 -0
- package/ez-agents/bin/guards/tool-sprawl-guard.cjs +271 -0
- package/ez-agents/bin/lib/analytics/analytics-collector.cjs +86 -0
- package/ez-agents/bin/lib/analytics/analytics-reporter.cjs +130 -0
- package/ez-agents/bin/lib/analytics/cohort-analyzer.cjs +138 -0
- package/ez-agents/bin/lib/analytics/funnel-analyzer.cjs +147 -0
- package/ez-agents/bin/lib/analytics/nps-tracker.cjs +147 -0
- package/ez-agents/bin/lib/archetype-detector.cjs +289 -0
- package/ez-agents/bin/lib/audit-exec.cjs +166 -167
- package/ez-agents/bin/lib/auth.cjs +176 -176
- package/ez-agents/bin/lib/backup-service.cjs +422 -0
- package/ez-agents/bin/lib/bdd-validator.cjs +622 -622
- package/ez-agents/bin/lib/business-flow-mapper.cjs +429 -0
- package/ez-agents/bin/lib/code-complexity-analyzer.cjs +360 -0
- package/ez-agents/bin/lib/codebase-analyzer.cjs +241 -0
- package/ez-agents/bin/lib/commands.cjs +685 -685
- package/ez-agents/bin/lib/config.cjs +41 -1
- package/ez-agents/bin/lib/constraint-extractor.cjs +526 -0
- package/ez-agents/bin/lib/content-scanner.cjs +238 -238
- package/ez-agents/bin/lib/context-cache.cjs +154 -154
- package/ez-agents/bin/lib/context-errors.cjs +71 -71
- package/ez-agents/bin/lib/context-manager.cjs +220 -220
- package/ez-agents/bin/lib/core.cjs +507 -512
- package/ez-agents/bin/lib/cost-tracker.cjs +243 -0
- package/ez-agents/bin/lib/crash-recovery.cjs +172 -0
- package/ez-agents/bin/lib/dependency-graph.cjs +319 -0
- package/ez-agents/bin/lib/deploy/deploy-audit-log.cjs +76 -0
- package/ez-agents/bin/lib/deploy/deploy-detector.cjs +69 -0
- package/ez-agents/bin/lib/deploy/deploy-env-manager.cjs +109 -0
- package/ez-agents/bin/lib/deploy/deploy-health-check.cjs +88 -0
- package/ez-agents/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
- package/ez-agents/bin/lib/deploy/deploy-rollback.cjs +72 -0
- package/ez-agents/bin/lib/deploy/deploy-runner.cjs +97 -0
- package/ez-agents/bin/lib/deploy/deploy-status.cjs +74 -0
- package/ez-agents/bin/lib/file-access.cjs +207 -207
- package/ez-agents/bin/lib/finops/budget-enforcer.cjs +126 -0
- package/ez-agents/bin/lib/finops/cost-reporter.cjs +132 -0
- package/ez-agents/bin/lib/finops/finops-analyzer.cjs +112 -0
- package/ez-agents/bin/lib/finops/spot-manager.cjs +118 -0
- package/ez-agents/bin/lib/framework-detector.cjs +396 -0
- package/ez-agents/bin/lib/frontmatter.cjs +3 -1
- package/ez-agents/bin/lib/gates/README.md +374 -0
- package/ez-agents/bin/lib/gates/gate-01-requirement.cjs +303 -0
- package/ez-agents/bin/lib/gates/gate-02-architecture.cjs +555 -0
- package/ez-agents/bin/lib/gates/gate-03-code.cjs +635 -0
- package/ez-agents/bin/lib/gates/gate-04-security.cjs +829 -0
- package/ez-agents/bin/lib/git-errors.cjs +83 -83
- package/ez-agents/bin/lib/git-utils.cjs +321 -321
- package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -1157
- package/ez-agents/bin/lib/health-check.cjs +162 -162
- package/ez-agents/bin/lib/index.cjs +2 -8
- package/ez-agents/bin/lib/init.cjs +0 -2
- package/ez-agents/bin/lib/lockfile-validator.cjs +227 -227
- package/ez-agents/bin/lib/log-rotation.cjs +71 -0
- package/ez-agents/bin/lib/logger.cjs +22 -47
- package/ez-agents/bin/lib/memory-compression.cjs +256 -256
- package/ez-agents/bin/lib/package-manager-detector.cjs +203 -203
- package/ez-agents/bin/lib/package-manager-executor.cjs +385 -385
- package/ez-agents/bin/lib/package-manager-service.cjs +216 -216
- package/ez-agents/bin/lib/perf/api-monitor.cjs +88 -0
- package/ez-agents/bin/lib/perf/db-optimizer.cjs +78 -0
- package/ez-agents/bin/lib/perf/frontend-performance.cjs +56 -0
- package/ez-agents/bin/lib/perf/perf-analyzer.cjs +77 -0
- package/ez-agents/bin/lib/perf/perf-baseline.cjs +102 -0
- package/ez-agents/bin/lib/perf/perf-reporter.cjs +117 -0
- package/ez-agents/bin/lib/perf/regression-detector.cjs +92 -0
- package/ez-agents/bin/lib/project-reporter.cjs +502 -0
- package/ez-agents/bin/lib/quality-gate.cjs +332 -0
- package/ez-agents/bin/lib/recovery-manager.cjs +98 -0
- package/ez-agents/bin/lib/release-validator.cjs +617 -614
- package/ez-agents/bin/lib/security-errors.cjs +62 -0
- package/ez-agents/bin/lib/session-chain.cjs +304 -304
- package/ez-agents/bin/lib/session-errors.cjs +81 -81
- package/ez-agents/bin/lib/session-export.cjs +251 -251
- package/ez-agents/bin/lib/session-import.cjs +262 -262
- package/ez-agents/bin/lib/session-manager.cjs +280 -280
- package/ez-agents/bin/lib/skill-context.cjs +148 -0
- package/ez-agents/bin/lib/skill-matcher.cjs +236 -0
- package/ez-agents/bin/lib/skill-registry.cjs +341 -0
- package/ez-agents/bin/lib/skill-resolver.cjs +449 -0
- package/ez-agents/bin/lib/skill-triggers.cjs +90 -0
- package/ez-agents/bin/lib/skill-validator.cjs +270 -0
- package/ez-agents/bin/lib/skill-versioning.cjs +355 -0
- package/ez-agents/bin/lib/stack-detector.cjs +399 -0
- package/ez-agents/bin/lib/tech-debt-analyzer.cjs +309 -0
- package/ez-agents/bin/lib/tier-manager.cjs +428 -428
- package/ez-agents/bin/lib/tradeoff-analyzer.cjs +284 -0
- package/ez-agents/bin/lib/url-fetch.cjs +170 -170
- package/ez-agents/bin/lib/verify.cjs +863 -863
- package/ez-agents/references/decimal-phase-calculation.md +65 -65
- package/ez-agents/references/git-integration.md +248 -248
- package/ez-agents/references/git-planning-commit.md +38 -38
- package/ez-agents/references/metrics-schema.md +118 -118
- package/ez-agents/references/model-profile-resolution.md +34 -34
- package/ez-agents/references/model-profiles.md +93 -93
- package/ez-agents/references/phase-argument-parsing.md +61 -61
- package/ez-agents/references/planning-config.md +340 -340
- package/ez-agents/references/tier-strategy.md +103 -103
- package/ez-agents/references/ui-brand.md +160 -160
- package/ez-agents/references/verification-patterns.md +612 -612
- package/ez-agents/templates/DEBUG.md +164 -164
- package/ez-agents/templates/UAT.md +247 -247
- package/ez-agents/templates/agent-output-format.md +404 -0
- package/ez-agents/templates/bdd-feature.md +173 -173
- package/ez-agents/templates/codebase/architecture.md +255 -255
- package/ez-agents/templates/codebase/structure.md +285 -285
- package/ez-agents/templates/copilot-instructions.md +7 -7
- package/ez-agents/templates/debug-subagent-prompt.md +91 -91
- package/ez-agents/templates/discovery.md +146 -146
- package/ez-agents/templates/discussion.md +68 -68
- package/ez-agents/templates/handoff-protocol.md +294 -0
- package/ez-agents/templates/incident-runbook.md +205 -205
- package/ez-agents/templates/mode-workflow-templates.md +301 -0
- package/ez-agents/templates/phase-prompt.md +610 -610
- package/ez-agents/templates/planner-subagent-prompt.md +117 -117
- package/ez-agents/templates/project.md +184 -184
- package/ez-agents/templates/release-checklist.md +136 -133
- package/ez-agents/templates/research.md +552 -552
- package/ez-agents/templates/rollback-plan.md +201 -201
- package/ez-agents/templates/security-user-setup.md +244 -0
- package/ez-agents/templates/skill-validation-rules.md +476 -0
- package/ez-agents/templates/state.md +180 -176
- package/ez-agents/templates/summary-complex.md +59 -59
- package/ez-agents/tests/gates/gate-01-02.test.cjs +812 -0
- package/ez-agents/tests/gates/gate-03-04.test.cjs +762 -0
- package/ez-agents/tests/gates/gate-05-validator.test.cjs +145 -0
- package/ez-agents/tests/gates/gate-06-docs-validator.test.cjs +244 -0
- package/ez-agents/tests/gates/gate-07-release-validator.test.cjs +219 -0
- package/ez-agents/tests/guards/context-budget-guard.test.cjs +145 -0
- package/ez-agents/tests/guards/edge-case-guards.test.cjs +238 -0
- package/ez-agents/tests/guards/hallucination-guard.test.cjs +124 -0
- package/ez-agents/workflows/audit-milestone.md +1 -1
- package/ez-agents/workflows/autonomous.md +844 -844
- package/ez-agents/workflows/complete-milestone.md +1 -1
- package/ez-agents/workflows/discuss-phase.md +1 -1
- package/ez-agents/workflows/execute-phase.md +124 -3
- package/ez-agents/workflows/help.md +42 -181
- package/ez-agents/workflows/hotfix.md +291 -291
- package/ez-agents/workflows/new-milestone.md +713 -713
- package/ez-agents/workflows/new-project.md +1089 -1107
- package/ez-agents/workflows/plan-phase.md +0 -40
- package/ez-agents/workflows/release.md +253 -253
- package/ez-agents/workflows/resume-session.md +215 -215
- package/ez-agents/workflows/run-phase.md +531 -0
- package/ez-agents/workflows/settings.md +2 -35
- package/hooks/dist/ez-check-update.js +81 -81
- package/hooks/dist/ez-context-monitor.js +148 -141
- package/hooks/dist/ez-statusline.js +115 -115
- package/package.json +78 -71
- package/scripts/fix-qwen-installation.js +144 -144
- package/agents/ez-integration-checker.md +0 -443
- package/agents/ez-nyquist-auditor.md +0 -176
- package/agents/ez-observer-agent.md +0 -260
- package/agents/ez-plan-checker.md +0 -706
- package/agents/ez-research-synthesizer.md +0 -247
- package/agents/ez-scrum-master-agent.md +0 -242
- package/agents/ez-tech-lead-agent.md +0 -267
- package/agents/ez-ui-auditor.md +0 -439
- package/agents/ez-ui-checker.md +0 -300
- package/agents/ez-ui-researcher.md +0 -353
- package/commands/ez/add-phase.md +0 -43
- package/commands/ez/add-todo.md +0 -47
- package/commands/ez/arch-review.md +0 -102
- package/commands/ez/auth.md +0 -87
- package/commands/ez/autonomous.md +0 -41
- package/commands/ez/check-todos.md +0 -45
- package/commands/ez/cleanup.md +0 -18
- package/commands/ez/debug.md +0 -168
- package/commands/ez/export-session.md +0 -79
- package/commands/ez/gather-requirements.md +0 -117
- package/commands/ez/git-workflow.md +0 -72
- package/commands/ez/health.md +0 -22
- package/commands/ez/hotfix.md +0 -120
- package/commands/ez/import-session.md +0 -82
- package/commands/ez/insert-phase.md +0 -32
- package/commands/ez/join-discord.md +0 -18
- package/commands/ez/list-phase-assumptions.md +0 -46
- package/commands/ez/list-sessions.md +0 -96
- package/commands/ez/package-manager.md +0 -316
- package/commands/ez/pause-work.md +0 -38
- package/commands/ez/plan-milestone-gaps.md +0 -34
- package/commands/ez/preflight.md +0 -79
- package/commands/ez/reapply-patches.md +0 -124
- package/commands/ez/release.md +0 -153
- package/commands/ez/remove-phase.md +0 -31
- package/commands/ez/research-phase.md +0 -190
- package/commands/ez/resume.md +0 -107
- package/commands/ez/set-profile.md +0 -34
- package/commands/ez/standup.md +0 -85
- package/commands/ez/stats.md +0 -18
- package/commands/ez/ui-phase.md +0 -34
- package/commands/ez/ui-review.md +0 -32
- package/commands/ez/validate-phase.md +0 -35
- package/ez-agents/bin/lib/metrics-tracker.cjs +0 -406
- package/ez-agents/templates/UI-SPEC.md +0 -100
- package/ez-agents/templates/VALIDATION.md +0 -76
- package/ez-agents/templates/context.md +0 -352
- package/ez-agents/templates/verification-report.md +0 -322
- package/ez-agents/workflows/arch-review.md +0 -54
- package/ez-agents/workflows/export-session.md +0 -255
- package/ez-agents/workflows/gather-requirements.md +0 -206
- package/ez-agents/workflows/import-session.md +0 -303
- package/ez-agents/workflows/research-phase.md +0 -74
- package/ez-agents/workflows/standup.md +0 -64
- package/ez-agents/workflows/ui-phase.md +0 -290
- package/ez-agents/workflows/ui-review.md +0 -157
- package/ez-agents/workflows/validate-phase.md +0 -167
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Context Cache (Session-Only)
|
|
5
|
-
*
|
|
6
|
-
* Provides temporary, session-only caching for fetched content.
|
|
7
|
-
* Cache is stored in system temp directory and auto-cleared on process exit.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const os = require('os');
|
|
11
|
-
const path = require('path');
|
|
12
|
-
const fs = require('fs');
|
|
13
|
-
|
|
14
|
-
class ContextCache {
|
|
15
|
-
constructor() {
|
|
16
|
-
// Cache stored in system temp directory with PID for isolation
|
|
17
|
-
this.cacheDir = path.join(os.tmpdir(), `ez-agents-context-${process.pid}`);
|
|
18
|
-
this.cache = new Map();
|
|
19
|
-
|
|
20
|
-
// Register process exit handlers
|
|
21
|
-
this._registerExitHandlers();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Register process exit handlers to clean up cache
|
|
26
|
-
* @private
|
|
27
|
-
*/
|
|
28
|
-
_registerExitHandlers() {
|
|
29
|
-
// Clean up on normal exit
|
|
30
|
-
process.on('exit', () => {
|
|
31
|
-
this.clear();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
// Clean up on SIGINT (Ctrl+C)
|
|
35
|
-
process.on('SIGINT', () => {
|
|
36
|
-
this.clear();
|
|
37
|
-
process.exit(130);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// Clean up on SIGTERM
|
|
41
|
-
process.on('SIGTERM', () => {
|
|
42
|
-
this.clear();
|
|
43
|
-
process.exit(143);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
// Clean up on uncaught exceptions
|
|
47
|
-
process.on('uncaughtException', () => {
|
|
48
|
-
this.clear();
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Get cached content by key
|
|
54
|
-
* @param {string} key - The cache key (usually URL or file path)
|
|
55
|
-
* @returns {{content: string, timestamp: number, type: string, contentType?: string}|undefined}
|
|
56
|
-
*/
|
|
57
|
-
get(key) {
|
|
58
|
-
return this.cache.get(key);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Store content in cache
|
|
63
|
-
* @param {string} key - The cache key
|
|
64
|
-
* @param {string} content - The content to cache
|
|
65
|
-
* @param {Object} metadata - Additional metadata (type, contentType, etc.)
|
|
66
|
-
*/
|
|
67
|
-
set(key, content, metadata = {}) {
|
|
68
|
-
this.cache.set(key, {
|
|
69
|
-
content,
|
|
70
|
-
...metadata,
|
|
71
|
-
timestamp: Date.now()
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Check if key exists in cache
|
|
77
|
-
* @param {string} key - The cache key
|
|
78
|
-
* @returns {boolean} - True if key exists
|
|
79
|
-
*/
|
|
80
|
-
has(key) {
|
|
81
|
-
return this.cache.has(key);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Remove item from cache
|
|
86
|
-
* @param {string} key - The cache key
|
|
87
|
-
* @returns {boolean} - True if item was removed
|
|
88
|
-
*/
|
|
89
|
-
delete(key) {
|
|
90
|
-
return this.cache.delete(key);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Get the size of the cache
|
|
95
|
-
* @returns {number} - Number of items in cache
|
|
96
|
-
*/
|
|
97
|
-
size() {
|
|
98
|
-
return this.cache.size;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Clear all cached content and remove temp directory
|
|
103
|
-
*/
|
|
104
|
-
clear() {
|
|
105
|
-
// Clear the in-memory cache
|
|
106
|
-
this.cache.clear();
|
|
107
|
-
|
|
108
|
-
// Remove temp directory if it exists
|
|
109
|
-
if (fs.existsSync(this.cacheDir)) {
|
|
110
|
-
try {
|
|
111
|
-
fs.rmSync(this.cacheDir, { recursive: true, force: true });
|
|
112
|
-
} catch (err) {
|
|
113
|
-
// Ignore errors during cleanup (directory may already be gone)
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Get cache directory path
|
|
120
|
-
* @returns {string} - Path to cache directory
|
|
121
|
-
*/
|
|
122
|
-
getCacheDir() {
|
|
123
|
-
return this.cacheDir;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Get all cache keys
|
|
128
|
-
* @returns {Array<string>} - Array of cache keys
|
|
129
|
-
*/
|
|
130
|
-
keys() {
|
|
131
|
-
return Array.from(this.cache.keys());
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Get all cached entries
|
|
136
|
-
* @returns {Array<{key: string, value: Object}>} - Array of key-value pairs
|
|
137
|
-
*/
|
|
138
|
-
entries() {
|
|
139
|
-
return Array.from(this.cache.entries()).map(([key, value]) => ({ key, value }));
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Get cache statistics
|
|
144
|
-
* @returns {{size: number, keys: Array<string>}} - Cache statistics
|
|
145
|
-
*/
|
|
146
|
-
stats() {
|
|
147
|
-
return {
|
|
148
|
-
size: this.cache.size,
|
|
149
|
-
keys: this.keys()
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
module.exports = ContextCache;
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Context Cache (Session-Only)
|
|
5
|
+
*
|
|
6
|
+
* Provides temporary, session-only caching for fetched content.
|
|
7
|
+
* Cache is stored in system temp directory and auto-cleared on process exit.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const os = require('os');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
const fs = require('fs');
|
|
13
|
+
|
|
14
|
+
class ContextCache {
|
|
15
|
+
constructor() {
|
|
16
|
+
// Cache stored in system temp directory with PID for isolation
|
|
17
|
+
this.cacheDir = path.join(os.tmpdir(), `ez-agents-context-${process.pid}`);
|
|
18
|
+
this.cache = new Map();
|
|
19
|
+
|
|
20
|
+
// Register process exit handlers
|
|
21
|
+
this._registerExitHandlers();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Register process exit handlers to clean up cache
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
_registerExitHandlers() {
|
|
29
|
+
// Clean up on normal exit
|
|
30
|
+
process.on('exit', () => {
|
|
31
|
+
this.clear();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// Clean up on SIGINT (Ctrl+C)
|
|
35
|
+
process.on('SIGINT', () => {
|
|
36
|
+
this.clear();
|
|
37
|
+
process.exit(130);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Clean up on SIGTERM
|
|
41
|
+
process.on('SIGTERM', () => {
|
|
42
|
+
this.clear();
|
|
43
|
+
process.exit(143);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Clean up on uncaught exceptions
|
|
47
|
+
process.on('uncaughtException', () => {
|
|
48
|
+
this.clear();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Get cached content by key
|
|
54
|
+
* @param {string} key - The cache key (usually URL or file path)
|
|
55
|
+
* @returns {{content: string, timestamp: number, type: string, contentType?: string}|undefined}
|
|
56
|
+
*/
|
|
57
|
+
get(key) {
|
|
58
|
+
return this.cache.get(key);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Store content in cache
|
|
63
|
+
* @param {string} key - The cache key
|
|
64
|
+
* @param {string} content - The content to cache
|
|
65
|
+
* @param {Object} metadata - Additional metadata (type, contentType, etc.)
|
|
66
|
+
*/
|
|
67
|
+
set(key, content, metadata = {}) {
|
|
68
|
+
this.cache.set(key, {
|
|
69
|
+
content,
|
|
70
|
+
...metadata,
|
|
71
|
+
timestamp: Date.now()
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Check if key exists in cache
|
|
77
|
+
* @param {string} key - The cache key
|
|
78
|
+
* @returns {boolean} - True if key exists
|
|
79
|
+
*/
|
|
80
|
+
has(key) {
|
|
81
|
+
return this.cache.has(key);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Remove item from cache
|
|
86
|
+
* @param {string} key - The cache key
|
|
87
|
+
* @returns {boolean} - True if item was removed
|
|
88
|
+
*/
|
|
89
|
+
delete(key) {
|
|
90
|
+
return this.cache.delete(key);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Get the size of the cache
|
|
95
|
+
* @returns {number} - Number of items in cache
|
|
96
|
+
*/
|
|
97
|
+
size() {
|
|
98
|
+
return this.cache.size;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Clear all cached content and remove temp directory
|
|
103
|
+
*/
|
|
104
|
+
clear() {
|
|
105
|
+
// Clear the in-memory cache
|
|
106
|
+
this.cache.clear();
|
|
107
|
+
|
|
108
|
+
// Remove temp directory if it exists
|
|
109
|
+
if (fs.existsSync(this.cacheDir)) {
|
|
110
|
+
try {
|
|
111
|
+
fs.rmSync(this.cacheDir, { recursive: true, force: true });
|
|
112
|
+
} catch (err) {
|
|
113
|
+
// Ignore errors during cleanup (directory may already be gone)
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Get cache directory path
|
|
120
|
+
* @returns {string} - Path to cache directory
|
|
121
|
+
*/
|
|
122
|
+
getCacheDir() {
|
|
123
|
+
return this.cacheDir;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Get all cache keys
|
|
128
|
+
* @returns {Array<string>} - Array of cache keys
|
|
129
|
+
*/
|
|
130
|
+
keys() {
|
|
131
|
+
return Array.from(this.cache.keys());
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Get all cached entries
|
|
136
|
+
* @returns {Array<{key: string, value: Object}>} - Array of key-value pairs
|
|
137
|
+
*/
|
|
138
|
+
entries() {
|
|
139
|
+
return Array.from(this.cache.entries()).map(([key, value]) => ({ key, value }));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Get cache statistics
|
|
144
|
+
* @returns {{size: number, keys: Array<string>}} - Cache statistics
|
|
145
|
+
*/
|
|
146
|
+
stats() {
|
|
147
|
+
return {
|
|
148
|
+
size: this.cache.size,
|
|
149
|
+
keys: this.keys()
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
module.exports = ContextCache;
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Context Access Error Classes
|
|
5
|
-
*
|
|
6
|
-
* Provides structured error handling for context access operations
|
|
7
|
-
* including file access, URL fetching, and security scanning.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
class ContextAccessError extends Error {
|
|
11
|
-
constructor(message, options = {}) {
|
|
12
|
-
super(message);
|
|
13
|
-
this.name = 'ContextAccessError';
|
|
14
|
-
this.code = options.code || 'CONTEXT_ACCESS_ERROR';
|
|
15
|
-
this.details = options.details || {};
|
|
16
|
-
this.timestamp = new Date().toISOString();
|
|
17
|
-
Error.captureStackTrace(this, ContextAccessError);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
toJSON() {
|
|
21
|
-
return {
|
|
22
|
-
name: this.name,
|
|
23
|
-
code: this.code,
|
|
24
|
-
message: this.message,
|
|
25
|
-
details: this.details,
|
|
26
|
-
timestamp: this.timestamp
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
class URLFetchError extends ContextAccessError {
|
|
32
|
-
constructor(url, reason, options = {}) {
|
|
33
|
-
super(`Failed to fetch URL: ${reason}`, {
|
|
34
|
-
code: 'URL_FETCH_ERROR',
|
|
35
|
-
details: { url, reason, ...options.details }
|
|
36
|
-
});
|
|
37
|
-
this.name = 'URLFetchError';
|
|
38
|
-
this.url = url;
|
|
39
|
-
this.reason = reason;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
class FileAccessError extends ContextAccessError {
|
|
44
|
-
constructor(path, reason, options = {}) {
|
|
45
|
-
super(`Failed to access file: ${reason}`, {
|
|
46
|
-
code: 'FILE_ACCESS_ERROR',
|
|
47
|
-
details: { path, reason, ...options.details }
|
|
48
|
-
});
|
|
49
|
-
this.name = 'FileAccessError';
|
|
50
|
-
this.path = path;
|
|
51
|
-
this.reason = reason;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
class SecurityScanError extends ContextAccessError {
|
|
56
|
-
constructor(findings, options = {}) {
|
|
57
|
-
super(`Security scan failed: ${findings.length} issue(s) detected`, {
|
|
58
|
-
code: 'SECURITY_SCAN_ERROR',
|
|
59
|
-
details: { findings, ...options.details }
|
|
60
|
-
});
|
|
61
|
-
this.name = 'SecurityScanError';
|
|
62
|
-
this.findings = findings;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
module.exports = {
|
|
67
|
-
ContextAccessError,
|
|
68
|
-
URLFetchError,
|
|
69
|
-
FileAccessError,
|
|
70
|
-
SecurityScanError
|
|
71
|
-
};
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Context Access Error Classes
|
|
5
|
+
*
|
|
6
|
+
* Provides structured error handling for context access operations
|
|
7
|
+
* including file access, URL fetching, and security scanning.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
class ContextAccessError extends Error {
|
|
11
|
+
constructor(message, options = {}) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = 'ContextAccessError';
|
|
14
|
+
this.code = options.code || 'CONTEXT_ACCESS_ERROR';
|
|
15
|
+
this.details = options.details || {};
|
|
16
|
+
this.timestamp = new Date().toISOString();
|
|
17
|
+
Error.captureStackTrace(this, ContextAccessError);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
toJSON() {
|
|
21
|
+
return {
|
|
22
|
+
name: this.name,
|
|
23
|
+
code: this.code,
|
|
24
|
+
message: this.message,
|
|
25
|
+
details: this.details,
|
|
26
|
+
timestamp: this.timestamp
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
class URLFetchError extends ContextAccessError {
|
|
32
|
+
constructor(url, reason, options = {}) {
|
|
33
|
+
super(`Failed to fetch URL: ${reason}`, {
|
|
34
|
+
code: 'URL_FETCH_ERROR',
|
|
35
|
+
details: { url, reason, ...options.details }
|
|
36
|
+
});
|
|
37
|
+
this.name = 'URLFetchError';
|
|
38
|
+
this.url = url;
|
|
39
|
+
this.reason = reason;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
class FileAccessError extends ContextAccessError {
|
|
44
|
+
constructor(path, reason, options = {}) {
|
|
45
|
+
super(`Failed to access file: ${reason}`, {
|
|
46
|
+
code: 'FILE_ACCESS_ERROR',
|
|
47
|
+
details: { path, reason, ...options.details }
|
|
48
|
+
});
|
|
49
|
+
this.name = 'FileAccessError';
|
|
50
|
+
this.path = path;
|
|
51
|
+
this.reason = reason;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
class SecurityScanError extends ContextAccessError {
|
|
56
|
+
constructor(findings, options = {}) {
|
|
57
|
+
super(`Security scan failed: ${findings.length} issue(s) detected`, {
|
|
58
|
+
code: 'SECURITY_SCAN_ERROR',
|
|
59
|
+
details: { findings, ...options.details }
|
|
60
|
+
});
|
|
61
|
+
this.name = 'SecurityScanError';
|
|
62
|
+
this.findings = findings;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
module.exports = {
|
|
67
|
+
ContextAccessError,
|
|
68
|
+
URLFetchError,
|
|
69
|
+
FileAccessError,
|
|
70
|
+
SecurityScanError
|
|
71
|
+
};
|